From 1bd6080ed68900649e7b91834350a3de648de590 Mon Sep 17 00:00:00 2001 From: Sonu Kumar Singh Date: Fri, 9 Jun 2023 18:22:07 +0530 Subject: [PATCH] Vendor `gardener@v1.71.2` and Adapt extension for workerless `Shoot` (#164) * Vendor gardener/gardener@v1.71.2 * Drop TODO and not required integration test * Install YQ for `make generate` * Set `workerlessSupported: true` for `shoot-cert-service` * Run `make generate` --- Makefile | 2 +- .../doc.go | 1 + example/controller-registration.yaml | 3 +- go.mod | 63 +- go.sum | 180 +- .../v1alpha1/zz_generated.conversion.go | 2 +- .../config/v1alpha1/zz_generated.deepcopy.go | 2 +- .../config/v1alpha1/zz_generated.defaults.go | 2 +- pkg/apis/config/zz_generated.deepcopy.go | 2 +- .../v1alpha1/zz_generated.conversion.go | 2 +- .../service/v1alpha1/zz_generated.deepcopy.go | 2 +- .../service/v1alpha1/zz_generated.defaults.go | 2 +- pkg/apis/service/zz_generated.deepcopy.go | 2 +- pkg/controller/healthcheck/add.go | 3 +- test/integration/healthcheck/test.go | 7 - .../fluent-operator}/v2/LICENSE | 0 .../fluentbit/v1alpha2/clusterfilter_types.go | 149 + .../v1alpha2/clusterfluentbitconfig_types.go | 305 + .../fluentbit/v1alpha2/clusterinput_types.go | 125 + .../fluentbit/v1alpha2/clusteroutput_types.go | 172 + .../fluentbit/v1alpha2/clusterparser_types.go | 136 + .../fluentbit/v1alpha2/collector_types.go | 145 + .../v2/apis/fluentbit/v1alpha2/doc.go | 19 + .../apis/fluentbit/v1alpha2/filter_types.go | 132 + .../fluentbit/v1alpha2/fluentbit_types.go | 164 + .../v1alpha2/fluentbitconfig_types.go | 61 + .../fluentbit/v1alpha2/groupversion_info.go | 36 + .../apis/fluentbit/v1alpha2/output_types.go | 111 + .../apis/fluentbit/v1alpha2/parser_types.go | 104 + .../v1alpha2/plugins/common_types.go | 26 + .../v1alpha2/plugins/configmap_types.go | 35 + .../v1alpha2/plugins/custom/custom_types.go | 59 + .../plugins/custom/zz_generated.deepcopy.go | 39 + .../v1alpha2/plugins/filter/aws_types.go | 75 + .../v1alpha2/plugins/filter/grep_types.go | 39 + .../plugins/filter/kubernetes_types.go | 191 + .../v1alpha2/plugins/filter/lua_types.go | 63 + .../v1alpha2/plugins/filter/modify_types.go | 147 + .../plugins/filter/multiline_types.go | 46 + .../v1alpha2/plugins/filter/nest_types.go | 58 + .../v1alpha2/plugins/filter/parser_types.go | 61 + .../plugins/filter/recordmodifier_types.go | 53 + .../plugins/filter/rewritetag_types.go | 41 + .../v1alpha2/plugins/filter/throttle_types.go | 52 + .../plugins/filter/zz_generated.deepcopy.go | 536 ++ .../v1alpha2/plugins/input/dummy_types.go | 46 + .../plugins/input/fluent_bit_metrics_types.go | 42 + .../input/node_exporter_metrics_types.go | 51 + .../input/prometheus_scrape_metrics_type.go | 57 + .../v1alpha2/plugins/input/systemd_types.go | 90 + .../v1alpha2/plugins/input/tail_types.go | 183 + .../plugins/input/zz_generated.deepcopy.go | 194 + .../fluentbit/v1alpha2/plugins/interface.go | 12 + .../plugins/output/azure_blob_types.go | 75 + .../output/azure_log_analytics_types.go | 59 + .../plugins/output/cloudwatch_types.go | 112 + .../v1alpha2/plugins/output/datadog_types.go | 96 + .../plugins/output/elasticsearch_types.go | 220 + .../v1alpha2/plugins/output/file_types.go | 53 + .../v1alpha2/plugins/output/firehose_types.go | 78 + .../v1alpha2/plugins/output/forward_types.go | 96 + .../v1alpha2/plugins/output/http_types.go | 144 + .../v1alpha2/plugins/output/kafka_types.go | 92 + .../v1alpha2/plugins/output/loki_types.go | 102 + .../v1alpha2/plugins/output/null_types.go | 20 + .../plugins/output/open_search_types.go | 219 + .../plugins/output/open_telemetry_types.go | 90 + .../output/prometheus_remote_write_types.go | 99 + .../v1alpha2/plugins/output/splunk_types.go | 153 + .../plugins/output/stackdriver_types.go | 144 + .../v1alpha2/plugins/output/stdout_types.go | 40 + .../v1alpha2/plugins/output/syslog_types.go | 102 + .../v1alpha2/plugins/output/tcp_types.go | 64 + .../plugins/output/zz_generated.deepcopy.go | 863 +++ .../fluentbit/v1alpha2/plugins/params/kvs.go | 67 + .../v1alpha2/plugins/parser/json_types.go | 39 + .../v1alpha2/plugins/parser/logfmt_types.go | 20 + .../v1alpha2/plugins/parser/lstv_types.go | 43 + .../v1alpha2/plugins/parser/regex_types.go | 52 + .../plugins/parser/zz_generated.deepcopy.go | 99 + .../v1alpha2/plugins/secret_types.go | 50 + .../fluentbit/v1alpha2/plugins/tls_types.go | 65 + .../v1alpha2/plugins/zz_generated.deepcopy.go | 101 + .../v1alpha2/zz_generated.deepcopy.go | 1494 ++++ .../fluent-operator/v2/pkg/utils/utils.go | 54 + .../gardener/.github/ISSUE_TEMPLATE/doc.go | 2 +- .../gardener/gardener/.github/doc.go | 2 +- .../extensions/pkg/apis/config/doc.go | 2 +- .../extensions/pkg/apis/config/types.go | 2 +- .../pkg/apis/config/v1alpha1/doc.go | 2 +- .../pkg/apis/config/v1alpha1/types.go | 2 +- .../config/v1alpha1/zz_generated.deepcopy.go | 2 +- .../pkg/apis/config/zz_generated.deepcopy.go | 2 +- .../extensions/pkg/controller/cluster.go | 2 +- .../extensions/pkg/controller/cmd/options.go | 6 +- .../pkg/controller/cmd/reconciler_options.go | 2 +- .../pkg/controller/extension/actuator.go | 2 +- .../pkg/controller/extension/controller.go | 2 +- .../pkg/controller/extension/mapper.go | 2 +- .../pkg/controller/extension/reconciler.go | 2 +- .../pkg/controller/healthcheck/actuator.go | 2 +- .../pkg/controller/healthcheck/controller.go | 2 +- .../healthcheck/general/daemonset.go | 2 +- .../healthcheck/general/deployment.go | 2 +- .../healthcheck/general/managed_resource.go | 2 +- .../healthcheck/general/statefulsets.go | 2 +- .../healthcheck/healthcheck_actuator.go | 4 +- .../pkg/controller/healthcheck/inject.go | 2 +- .../controller/healthcheck/message_util.go | 2 +- .../pkg/controller/healthcheck/reconciler.go | 2 +- .../pkg/controller/heartbeat/cmd/options.go | 2 +- .../pkg/controller/heartbeat/controller.go | 2 +- .../pkg/controller/heartbeat/reconciler.go | 2 +- .../extensions/pkg/controller/shoot.go | 6 +- .../extensions/pkg/controller/status.go | 2 +- .../extensions/pkg/controller/utils.go | 2 +- .../extensions/pkg/predicate/default.go | 7 +- .../extensions/pkg/predicate/preconditions.go | 2 +- .../extensions/pkg/predicate/predicate.go | 2 +- .../gardener/extensions/pkg/util/clientset.go | 2 +- .../gardener/extensions/pkg/util/errors.go | 2 +- .../extensions/pkg/util/serialization.go | 2 +- .../gardener/extensions/pkg/util/shoot.go | 2 +- .../extensions/pkg/util/shoot_clients.go | 2 +- .../gardener/gardener/hack/.ci/doc.go | 2 +- .../gardener/hack/.ci/prepare_release | 2 +- .../gardener/hack/.ci/set_dependency_version | 4 +- .../gardener/hack/LICENSE_BOILERPLATE.txt | 2 +- .../gardener/hack/add-license-header.sh | 34 + .../hack/api-reference/template/tools.go | 2 +- .../gardener/gardener/hack/check-apidiff.sh | 96 +- .../gardener/gardener/hack/check-charts.sh | 2 +- .../gardener/gardener/hack/check-docforge.sh | 2 +- .../gardener/gardener/hack/check-generate.sh | 2 +- .../gardener/gardener/hack/check-imports.sh | 2 +- .../gardener/hack/check-license-header.sh | 41 + .../gardener/hack/check-skaffold-deps.sh | 2 +- .../gardener/gardener/hack/check.sh | 2 +- .../gardener/gardener/hack/ci-common.sh | 4 +- .../hack/ci-e2e-kind-ha-multi-zone.sh | 4 +- .../hack/ci-e2e-kind-ha-single-zone.sh | 4 +- .../ci-e2e-kind-migration-ha-single-zone.sh | 41 + .../gardener/hack/ci-e2e-kind-migration.sh | 2 +- .../gardener/hack/ci-e2e-kind-operator.sh | 6 +- .../gardener/hack/ci-e2e-kind-upgrade.sh | 36 +- .../gardener/gardener/hack/ci-e2e-kind.sh | 4 +- .../gardener/gardener/hack/clean.sh | 2 +- .../hack/compare-k8s-admission-plugins.sh | 2 +- .../gardener/hack/compare-k8s-controllers.sh | 2 +- .../hack/compare-k8s-feature-gates.sh | 2 +- .../hack/download_gardener_source_code.sh | 2 +- .../gardener/gardener/hack/format.sh | 2 +- .../gardener/gardener/hack/gardener-down.sh | 40 +- .../gardener/hack/gardener-extensions-down.sh | 35 +- .../gardener/hack/gardener-extensions-up.sh | 18 +- .../hack/generate-controller-registration.sh | 26 +- .../gardener/gardener/hack/generate-crds.sh | 41 +- .../hack/generate-imagename-constants.sh | 2 +- .../gardener/hack/generate-monitoring-docs.sh | 4 +- .../gardener/hack/generate-parallel.sh | 2 +- .../gardener/gardener/hack/generate.sh | 2 +- .../gardener/hack/get-build-ld-flags.sh | 2 +- .../gardener/gardener/hack/hook-me.sh | 2 +- .../gardener/gardener/hack/install.sh | 2 +- .../gardener/gardener/hack/kind-down.sh | 14 + .../gardener/hack/kind-extensions-up.sh | 14 + .../gardener/gardener/hack/kind-up.sh | 157 +- .../gardener/gardener/hack/prepare-envtest.sh | 5 +- .../gardener/gardener/hack/start-envtest.sh | 2 +- .../gardener/hack/test-cover-clean.sh | 2 +- .../gardener/gardener/hack/test-cover.sh | 2 +- .../gardener/gardener/hack/test-e2e-local.sh | 52 +- .../gardener/hack/test-integration.sh | 2 +- .../gardener/gardener/hack/test-prometheus.sh | 2 +- .../github.com/gardener/gardener/hack/test.sh | 2 +- .../gardener/gardener/hack/tools.go | 2 +- .../gardener/gardener/hack/tools.mk | 20 +- .../gardener/gardener/hack/update-codegen.sh | 2 +- .../gardener/gardener/hack/update-protobuf.sh | 2 +- .../gardener/pkg/api/core/accessor.go | 2 +- .../gardener/pkg/api/extensions/accessor.go | 2 +- .../gardener/pkg/apis/authentication/doc.go | 2 +- .../pkg/apis/authentication/register.go | 2 +- .../types_adminkubeconfigrequest.go | 4 +- .../apis/authentication/v1alpha1/defaults.go | 2 +- .../pkg/apis/authentication/v1alpha1/doc.go | 2 +- .../authentication/v1alpha1/generated.pb.go | 2 +- .../authentication/v1alpha1/generated.proto | 2 +- .../apis/authentication/v1alpha1/register.go | 2 +- .../v1alpha1/types_adminkubeconfigrequest.go | 2 +- .../v1alpha1/zz_generated.conversion.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 2 +- .../v1alpha1/zz_generated.defaults.go | 2 +- .../authentication/zz_generated.deepcopy.go | 2 +- .../gardener/gardener/pkg/apis/core/doc.go | 2 +- .../gardener/pkg/apis/core/field_constants.go | 2 +- .../gardener/pkg/apis/core/install/install.go | 2 +- .../gardener/pkg/apis/core/register.go | 2 +- .../gardener/gardener/pkg/apis/core/types.go | 2 +- .../pkg/apis/core/types_backupbucket.go | 2 +- .../pkg/apis/core/types_backupentry.go | 2 +- .../pkg/apis/core/types_cloudprofile.go | 2 +- .../gardener/pkg/apis/core/types_common.go | 2 +- .../apis/core/types_controllerdeployment.go | 2 +- .../apis/core/types_controllerinstallation.go | 2 +- .../apis/core/types_controllerregistration.go | 5 +- .../pkg/apis/core/types_exposureclass.go | 2 +- .../gardener/pkg/apis/core/types_project.go | 2 +- .../gardener/pkg/apis/core/types_quota.go | 2 +- .../pkg/apis/core/types_secretbinding.go | 2 +- .../gardener/pkg/apis/core/types_seed.go | 54 +- .../gardener/pkg/apis/core/types_shoot.go | 57 +- .../pkg/apis/core/types_shootstate.go | 2 +- .../gardener/pkg/apis/core/types_utils.go | 2 +- .../pkg/apis/core/v1alpha1/conversions.go | 2 +- .../pkg/apis/core/v1alpha1/defaults.go | 263 +- .../core/v1alpha1/defaults_cloudprofile.go | 2 +- .../defaults_controllerregistration.go | 2 +- .../apis/core/v1alpha1/defaults_project.go | 2 +- .../gardener/pkg/apis/core/v1alpha1/doc.go | 2 +- .../pkg/apis/core/v1alpha1/generated.pb.go | 6324 +++++++++------- .../pkg/apis/core/v1alpha1/generated.proto | 210 +- .../pkg/apis/core/v1alpha1/register.go | 2 +- .../gardener/pkg/apis/core/v1alpha1/types.go | 2 +- .../apis/core/v1alpha1/types_backupbucket.go | 2 +- .../apis/core/v1alpha1/types_backupentry.go | 2 +- .../apis/core/v1alpha1/types_cloudprofile.go | 2 +- .../pkg/apis/core/v1alpha1/types_common.go | 2 +- .../v1alpha1/types_controllerdeployment.go | 2 +- .../v1alpha1/types_controllerinstallation.go | 2 +- .../v1alpha1/types_controllerregistration.go | 6 +- .../apis/core/v1alpha1/types_exposureclass.go | 2 +- .../pkg/apis/core/v1alpha1/types_project.go | 2 +- .../pkg/apis/core/v1alpha1/types_quota.go | 2 +- .../apis/core/v1alpha1/types_secretbinding.go | 2 +- .../pkg/apis/core/v1alpha1/types_seed.go | 70 +- .../pkg/apis/core/v1alpha1/types_shoot.go | 73 +- .../apis/core/v1alpha1/types_shootstate.go | 2 +- .../pkg/apis/core/v1alpha1/types_utils.go | 2 +- .../core/v1alpha1/zz_generated.conversion.go | 324 +- .../core/v1alpha1/zz_generated.deepcopy.go | 285 +- .../core/v1alpha1/zz_generated.defaults.go | 6 +- .../core/v1beta1/constants/types_constants.go | 91 +- .../pkg/apis/core/v1beta1/constants/utils.go | 2 +- .../pkg/apis/core/v1beta1/conversions.go | 2 +- .../pkg/apis/core/v1beta1/defaults.go | 319 +- .../core/v1beta1/defaults_cloudprofile.go | 2 +- .../defaults_controllerregistration.go | 2 +- .../pkg/apis/core/v1beta1/defaults_project.go | 2 +- .../gardener/pkg/apis/core/v1beta1/doc.go | 2 +- .../pkg/apis/core/v1beta1/generated.pb.go | 6379 ++++++++++------- .../pkg/apis/core/v1beta1/generated.proto | 210 +- .../core/v1beta1/helper/condition_builder.go | 2 +- .../pkg/apis/core/v1beta1/helper/errors.go | 98 +- .../pkg/apis/core/v1beta1/helper/helper.go | 75 +- .../core/v1beta1/helper/shootstate_list.go | 2 +- .../pkg/apis/core/v1beta1/register.go | 2 +- .../gardener/pkg/apis/core/v1beta1/types.go | 2 +- .../apis/core/v1beta1/types_backupbucket.go | 2 +- .../apis/core/v1beta1/types_backupentry.go | 2 +- .../apis/core/v1beta1/types_cloudprofile.go | 2 +- .../pkg/apis/core/v1beta1/types_common.go | 2 +- .../v1beta1/types_controllerdeployment.go | 2 +- .../v1beta1/types_controllerinstallation.go | 2 +- .../v1beta1/types_controllerregistration.go | 6 +- .../apis/core/v1beta1/types_exposureclass.go | 2 +- .../pkg/apis/core/v1beta1/types_project.go | 2 +- .../pkg/apis/core/v1beta1/types_quota.go | 2 +- .../apis/core/v1beta1/types_secretbinding.go | 2 +- .../pkg/apis/core/v1beta1/types_seed.go | 70 +- .../pkg/apis/core/v1beta1/types_shoot.go | 73 +- .../pkg/apis/core/v1beta1/types_shootstate.go | 2 +- .../pkg/apis/core/v1beta1/types_utils.go | 2 +- .../core/v1beta1/zz_generated.conversion.go | 324 +- .../core/v1beta1/zz_generated.deepcopy.go | 285 +- .../core/v1beta1/zz_generated.defaults.go | 12 +- .../pkg/apis/core/zz_generated.deepcopy.go | 285 +- .../gardener/pkg/apis/extensions/register.go | 2 +- .../pkg/apis/extensions/v1alpha1/doc.go | 2 +- .../pkg/apis/extensions/v1alpha1/register.go | 2 +- .../pkg/apis/extensions/v1alpha1/types.go | 2 +- .../extensions/v1alpha1/types_backupbucket.go | 2 +- .../extensions/v1alpha1/types_backupentry.go | 2 +- .../apis/extensions/v1alpha1/types_bastion.go | 2 +- .../apis/extensions/v1alpha1/types_cluster.go | 2 +- .../v1alpha1/types_containerruntime.go | 2 +- .../extensions/v1alpha1/types_controlplane.go | 2 +- .../extensions/v1alpha1/types_defaults.go | 2 +- .../extensions/v1alpha1/types_dnsrecord.go | 2 +- .../extensions/v1alpha1/types_extension.go | 2 +- .../v1alpha1/types_infrastructure.go | 2 +- .../apis/extensions/v1alpha1/types_network.go | 2 +- .../v1alpha1/types_operatingsystemconfig.go | 2 +- .../apis/extensions/v1alpha1/types_worker.go | 5 +- .../v1alpha1/zz_generated.deepcopy.go | 6 +- .../gardener/pkg/apis/operations/doc.go | 2 +- .../pkg/apis/operations/field_constants.go | 2 +- .../pkg/apis/operations/install/install.go | 2 +- .../gardener/pkg/apis/operations/register.go | 2 +- .../pkg/apis/operations/types_bastion.go | 2 +- .../apis/operations/v1alpha1/conversions.go | 2 +- .../pkg/apis/operations/v1alpha1/defaults.go | 2 +- .../pkg/apis/operations/v1alpha1/doc.go | 2 +- .../apis/operations/v1alpha1/generated.pb.go | 2 +- .../apis/operations/v1alpha1/generated.proto | 2 +- .../pkg/apis/operations/v1alpha1/register.go | 2 +- .../apis/operations/v1alpha1/types_bastion.go | 2 +- .../v1alpha1/zz_generated.conversion.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 2 +- .../v1alpha1/zz_generated.defaults.go | 2 +- .../apis/operations/zz_generated.deepcopy.go | 2 +- .../gardener/pkg/apis/operator/register.go | 2 +- .../pkg/apis/operator/v1alpha1/constants.go | 2 +- .../pkg/apis/operator/v1alpha1/doc.go | 2 +- .../pkg/apis/operator/v1alpha1/register.go | 2 +- .../pkg/apis/operator/v1alpha1/types.go | 218 +- .../v1alpha1/zz_generated.deepcopy.go | 356 +- .../gardener/pkg/apis/resources/register.go | 2 +- .../pkg/apis/resources/v1alpha1/doc.go | 2 +- .../pkg/apis/resources/v1alpha1/register.go | 2 +- .../pkg/apis/resources/v1alpha1/types.go | 22 +- .../v1alpha1/zz_generated.deepcopy.go | 2 +- .../gardener/pkg/apis/seedmanagement/doc.go | 2 +- .../apis/seedmanagement/encoding/encoding.go | 2 +- .../apis/seedmanagement/field_constants.go | 2 +- .../apis/seedmanagement/install/install.go | 2 +- .../pkg/apis/seedmanagement/register.go | 2 +- .../apis/seedmanagement/types_managedseed.go | 2 +- .../seedmanagement/types_managedseedset.go | 2 +- .../seedmanagement/v1alpha1/conversions.go | 2 +- .../v1alpha1/defaults_managedseed.go | 2 +- .../v1alpha1/defaults_managedseedset.go | 2 +- .../pkg/apis/seedmanagement/v1alpha1/doc.go | 2 +- .../seedmanagement/v1alpha1/generated.pb.go | 2 +- .../seedmanagement/v1alpha1/generated.proto | 2 +- .../apis/seedmanagement/v1alpha1/register.go | 2 +- .../v1alpha1/types_managedseed.go | 2 +- .../v1alpha1/types_managedseedset.go | 2 +- .../v1alpha1/zz_generated.conversion.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 2 +- .../v1alpha1/zz_generated.defaults.go | 2 +- .../seedmanagement/zz_generated.deepcopy.go | 2 +- .../gardener/pkg/apis/settings/doc.go | 2 +- .../pkg/apis/settings/install/install.go | 2 +- .../gardener/pkg/apis/settings/register.go | 2 +- .../types_cluster_openidconnect_preset.go | 2 +- .../settings/types_openidconnect_preset.go | 2 +- .../pkg/apis/settings/types_shared.go | 2 +- .../pkg/apis/settings/v1alpha1/defaults.go | 2 +- .../pkg/apis/settings/v1alpha1/doc.go | 2 +- .../apis/settings/v1alpha1/generated.pb.go | 2 +- .../apis/settings/v1alpha1/generated.proto | 2 +- .../pkg/apis/settings/v1alpha1/register.go | 2 +- .../types_cluster_openidconnect_preset.go | 2 +- .../v1alpha1/types_openidconnect_preset.go | 2 +- .../apis/settings/v1alpha1/types_shared.go | 2 +- .../v1alpha1/zz_generated.conversion.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 2 +- .../v1alpha1/zz_generated.defaults.go | 2 +- .../apis/settings/zz_generated.deepcopy.go | 2 +- .../gardener/pkg/chartrenderer/default.go | 2 +- .../gardener/pkg/chartrenderer/factory.go | 2 +- .../gardener/pkg/chartrenderer/renderer.go | 2 +- .../gardener/pkg/client/kubernetes/applier.go | 2 +- .../cache/{cache.go => aggregator.go} | 2 +- .../pkg/client/kubernetes/cache/errors.go | 2 +- .../client/kubernetes/cache/single_object.go | 267 + .../pkg/client/kubernetes/chartapplier.go | 2 +- .../pkg/client/kubernetes/chartoptions.go | 2 +- .../gardener/pkg/client/kubernetes/client.go | 27 +- .../pkg/client/kubernetes/clientset.go | 5 +- .../pkg/client/kubernetes/deployments.go | 2 +- .../pkg/client/kubernetes/manifestoptions.go | 2 +- .../gardener/pkg/client/kubernetes/options.go | 2 +- .../gardener/pkg/client/kubernetes/pods.go | 2 +- .../pkg/client/kubernetes/runtime_client.go | 46 +- .../gardener/pkg/client/kubernetes/scaling.go | 7 +- .../gardener/pkg/client/kubernetes/types.go | 8 +- .../pkg/controllerutils/associations.go | 5 +- .../pkg/controllerutils/eventhandler.go | 2 +- .../pkg/controllerutils/finalizers.go | 2 +- .../controllerutils/mapper/enqueue_mapped.go | 2 +- .../pkg/controllerutils/mapper/mapper.go | 2 +- .../pkg/controllerutils/miscellaneous.go | 28 +- .../gardener/pkg/controllerutils/patch.go | 2 +- .../controllerutils/predicate/predicate.go | 2 +- .../operation_annotation_wrapper.go | 2 +- .../controllerutils/reconciler/reconcile.go | 2 +- .../pkg/controllerutils/reconciler/requeue.go | 2 +- .../gardener/pkg/controllerutils/runner.go | 2 +- .../gardener/pkg/controllerutils/source.go | 2 +- .../gardener/pkg/controllerutils/update.go | 2 +- .../gardener/pkg/extensions/cluster.go | 2 +- .../gardener/pkg/extensions/constants.go | 2 +- .../pkg/extensions/customresources.go | 29 +- .../gardener/pkg/gardenlet/apis/config/doc.go | 2 +- .../pkg/gardenlet/apis/config/register.go | 2 +- .../pkg/gardenlet/apis/config/types.go | 98 +- .../apis/config/v1alpha1/conversions.go | 2 +- .../apis/config/v1alpha1/defaults.go | 75 +- .../pkg/gardenlet/apis/config/v1alpha1/doc.go | 2 +- .../apis/config/v1alpha1/register.go | 2 +- .../gardenlet/apis/config/v1alpha1/types.go | 122 +- .../v1alpha1/zz_generated.conversion.go | 274 +- .../config/v1alpha1/zz_generated.deepcopy.go | 250 +- .../config/v1alpha1/zz_generated.defaults.go | 8 +- .../apis/config/zz_generated.deepcopy.go | 250 +- .../gardener/gardener/pkg/logger/types.go | 2 +- .../gardener/gardener/pkg/logger/zap.go | 2 +- .../garbagecollector/references/references.go | 2 +- .../gardener/pkg/utils/chart/chart.go | 2 +- .../gardener/gardener/pkg/utils/checksums.go | 2 +- .../gardener/pkg/utils/context/context.go | 2 +- .../gardener/pkg/utils/context/types.go | 2 +- .../gardener/gardener/pkg/utils/encoding.go | 2 +- .../gardener/pkg/utils/errors/errors.go | 24 +- .../gardener/pkg/utils/errors/multierror.go | 2 +- .../gardener/pkg/utils/errors/unwrap.go | 2 +- .../gardener/gardener/pkg/utils/flow/flow.go | 2 +- .../gardener/gardener/pkg/utils/flow/graph.go | 2 +- .../pkg/utils/flow/progress_reporter.go | 2 +- .../utils/flow/progress_reporter_delaying.go | 2 +- .../utils/flow/progress_reporter_immediate.go | 2 +- .../gardener/pkg/utils/flow/taskfn.go | 2 +- .../gardener/pkg/utils/flow/taskid.go | 2 +- .../pkg/utils/gardener/backupentry.go | 2 +- .../utils/gardener/controllerinstallation.go | 2 +- .../utils/gardener/deletion_confirmation.go | 4 +- .../gardener/pkg/utils/gardener/dns.go | 2 +- .../pkg/utils/gardener/exposureclass.go | 2 +- .../gardener/pkg/utils/gardener/garden.go | 234 + .../gardener/pkg/utils/gardener/identity.go | 2 +- .../gardener/pkg/utils/gardener/migration.go | 2 +- .../pkg/utils/gardener/networkpolicy.go | 26 +- .../gardener/pkg/utils/gardener/project.go | 2 +- .../gardener/pkg/utils/gardener/secrets.go | 2 +- .../gardener/pkg/utils/gardener/seed.go | 17 +- .../gardener/pkg/utils/gardener/shoot.go | 184 +- .../pkg/utils/gardener/shoot_status.go | 120 + .../utils/gardener/topology_aware_routing.go | 49 + .../pkg/utils/imagevector/imagevector.go | 2 +- .../imagevector/imagevector_components.go | 2 +- .../imagevector/imagevector_validation.go | 2 +- .../gardener/pkg/utils/imagevector/types.go | 2 +- .../pkg/utils/kubernetes/admissionplugins.go | 2 +- .../pkg/utils/kubernetes/daemonset.go | 2 +- .../pkg/utils/kubernetes/deployment.go | 2 +- .../pkg/utils/kubernetes/health/and.go | 2 +- .../pkg/utils/kubernetes/health/apiservice.go | 2 +- .../health/customresourcedefinition.go | 2 +- .../pkg/utils/kubernetes/health/daemonset.go | 2 +- .../pkg/utils/kubernetes/health/deployment.go | 2 +- .../pkg/utils/kubernetes/health/etcd.go | 5 +- .../pkg/utils/kubernetes/health/extensions.go | 19 +- .../pkg/utils/kubernetes/health/health.go | 2 +- .../pkg/utils/kubernetes/health/healthz.go | 2 +- .../pkg/utils/kubernetes/health/job.go | 2 +- .../kubernetes/health/managedresource.go | 2 +- .../utils/kubernetes/health/managedseed.go | 2 +- .../pkg/utils/kubernetes/health/node.go | 2 +- .../pkg/utils/kubernetes/health/pod.go | 2 +- .../pkg/utils/kubernetes/health/replicaset.go | 2 +- .../health/replicationcontroller.go | 2 +- .../pkg/utils/kubernetes/health/seed.go | 2 +- .../pkg/utils/kubernetes/health/service.go | 2 +- .../utils/kubernetes/health/statefulset.go | 2 +- .../pkg/utils/kubernetes/highavailability.go | 14 +- .../pkg/utils/kubernetes/kubernetes.go | 2 +- .../pkg/utils/kubernetes/leaderelection.go | 2 +- .../pkg/utils/kubernetes/managedseed.go | 2 +- .../gardener/pkg/utils/kubernetes/node.go | 2 +- .../gardener/pkg/utils/kubernetes/object.go | 2 +- .../pkg/utils/kubernetes/secretref.go | 2 +- .../gardener/pkg/utils/kubernetes/service.go | 9 +- .../gardener/pkg/utils/kubernetes/sorter.go | 2 +- .../pkg/utils/kubernetes/statefulset.go | 2 +- .../pkg/utils/kubernetes/tls_cipher_suites.go | 2 +- .../utils/kubernetes/unstructured/object.go | 2 +- .../gardener/gardener/pkg/utils/labels.go | 2 +- .../builder/managedresources.go | 2 +- .../utils/managedresources/builder/secrets.go | 2 +- .../managedresources/managedresources.go | 2 +- .../pkg/utils/managedresources/registry.go | 20 +- .../gardener/pkg/utils/miscellaneous.go | 24 +- .../gardener/gardener/pkg/utils/random.go | 2 +- .../gardener/pkg/utils/retry/alias.go | 2 +- .../gardener/pkg/utils/retry/error.go | 2 +- .../gardener/pkg/utils/retry/retry.go | 2 +- .../gardener/pkg/utils/retry/types.go | 2 +- .../gardener/pkg/utils/secrets/alias.go | 2 +- .../gardener/pkg/utils/secrets/basic_auth.go | 2 +- .../gardener/pkg/utils/secrets/bundle.go | 2 +- .../gardener/pkg/utils/secrets/certificate.go | 2 +- .../pkg/utils/secrets/control_plane.go | 2 +- .../pkg/utils/secrets/etcd_encryption_key.go | 2 +- .../gardener/pkg/utils/secrets/kubeconfig.go | 2 +- .../pkg/utils/secrets/manager/cleanup.go | 2 +- .../pkg/utils/secrets/manager/generate.go | 29 +- .../gardener/pkg/utils/secrets/manager/get.go | 2 +- .../pkg/utils/secrets/manager/interface.go | 2 +- .../pkg/utils/secrets/manager/manager.go | 2 +- .../pkg/utils/secrets/rsa_private_key.go | 2 +- .../pkg/utils/secrets/static_token.go | 2 +- .../gardener/pkg/utils/secrets/types.go | 2 +- .../gardener/pkg/utils/secrets/vpn_tlsauth.go | 2 +- .../gardener/pkg/utils/timewindow/schedule.go | 2 +- .../pkg/utils/timewindow/timewindow.go | 2 +- .../validation/kubernetesversion/version.go | 50 + .../gardener/gardener/pkg/utils/values.go | 2 +- .../gardener/pkg/utils/version/version.go | 10 +- .../gardener/test/framework/common.go | 10 +- .../test/framework/commonframework.go | 2 +- .../gardener/test/framework/config/config.go | 2 +- .../gardener/gardener/test/framework/dump.go | 8 +- .../gardener/test/framework/errors.go | 2 +- .../gardener/test/framework/gardener_utils.go | 36 +- .../test/framework/gardenerframework.go | 2 +- .../gardener/test/framework/gingko_utils.go | 2 +- .../gardener/test/framework/gomega_utils.go | 2 +- .../gardener/gardener/test/framework/helm.go | 2 +- .../gardener/test/framework/http_utils.go | 2 +- .../gardener/test/framework/k8s_utils.go | 25 +- .../gardener/test/framework/pod_executor.go | 2 +- .../test/framework/reporter/esreporter.go | 2 +- .../test/framework/rootpod_executor.go | 2 +- .../gardener/test/framework/shoot_utils.go | 16 +- .../test/framework/shootcreationframework.go | 6 +- .../gardener/test/framework/shootframework.go | 4 +- .../test/framework/shootmigrationtest.go | 4 +- .../gardener/test/framework/template.go | 2 +- .../test/framework/test_description.go | 4 +- .../gardener/test/framework/test_options.go | 2 +- .../gardener/gardener/test/framework/utils.go | 4 +- .../gardener/test/framework/worker_utils.go | 2 +- .../healthcheck/healthcheck_operation.go | 2 +- .../extensions/operation/shoot_operation.go | 2 +- .../{shoots => }/access/adminkubeconfig.go | 2 +- .../test/utils/{shoots => }/access/csr.go | 28 +- .../{shoots => }/access/serviceaccount.go | 34 +- .../access/statictokenkubeconfig.go | 2 +- .../pkg/apis/machine/types.go | 3 - .../apis/machine/v1alpha1/machine_types.go | 10 +- .../machine/v1alpha1/machineclass_types.go | 1 + .../v1alpha1/machinedeployment_types.go | 10 +- .../apis/machine/v1alpha1/machineset_types.go | 1 + .../v1alpha1/zz_generated.conversion.go | 2 - vendor/github.com/go-logr/logr/.golangci.yaml | 3 - vendor/github.com/go-logr/logr/discard.go | 32 +- vendor/github.com/go-logr/logr/funcr/funcr.go | 27 +- vendor/github.com/go-logr/logr/logr.go | 166 +- .../go-openapi/errors/.gitattributes | 1 + .../github.com/go-openapi/errors/.gitignore | 2 + .../go-openapi/errors/.golangci.yml | 48 + .../go-openapi/errors/CODE_OF_CONDUCT.md | 74 + vendor/github.com/go-openapi/errors/LICENSE | 202 + vendor/github.com/go-openapi/errors/README.md | 11 + vendor/github.com/go-openapi/errors/api.go | 182 + .../id.go => go-openapi/errors/auth.go} | 16 +- vendor/github.com/go-openapi/errors/doc.go | 26 + .../github.com/go-openapi/errors/headers.go | 103 + .../go-openapi/errors/middleware.go | 50 + .../github.com/go-openapi/errors/parsing.go | 78 + vendor/github.com/go-openapi/errors/schema.go | 611 ++ .../golang/protobuf/jsonpb/decode.go | 8 +- .../external-snapshotter/client/v4/LICENSE | 201 + .../v4/apis/volumesnapshot/v1}/doc.go | 2 +- .../v4/apis/volumesnapshot/v1}/register.go | 4 +- .../v4/apis/volumesnapshot/v1}/types.go | 145 +- .../v1}/zz_generated.deepcopy.go | 4 +- vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md | 148 +- vendor/github.com/onsi/ginkgo/v2/core_dsl.go | 52 +- .../onsi/ginkgo/v2/decorator_dsl.go | 14 +- .../onsi/ginkgo/v2/formatter/formatter.go | 34 +- .../v2/ginkgo/generators/bootstrap_command.go | 24 +- .../v2/ginkgo/generators/generate_command.go | 24 +- .../v2/ginkgo/generators/generators_common.go | 1 + .../onsi/ginkgo/v2/ginkgo/internal/compile.go | 11 +- .../onsi/ginkgo/v2/ginkgo/internal/run.go | 7 + .../onsi/ginkgo/v2/ginkgo/outline/ginkgo.go | 90 +- .../onsi/ginkgo/v2/ginkgo/outline/outline.go | 11 +- .../onsi/ginkgo/v2/ginkgo_cli_dependencies.go | 8 + .../github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go | 60 +- .../onsi/ginkgo/v2/internal/group.go | 41 +- .../onsi/ginkgo/v2/internal/node.go | 44 +- .../onsi/ginkgo/v2/internal/ordering.go | 77 +- .../v2/internal/progress_reporter_manager.go | 79 + .../onsi/ginkgo/v2/internal/spec_context.go | 53 +- .../onsi/ginkgo/v2/internal/suite.go | 22 +- .../internal/testingtproxy/testing_t_proxy.go | 110 +- .../ginkgo/v2/reporters/default_reporter.go | 49 +- .../onsi/ginkgo/v2/reporters/junit_report.go | 6 + vendor/github.com/onsi/ginkgo/v2/table_dsl.go | 33 +- .../onsi/ginkgo/v2/types/code_location.go | 77 +- .../github.com/onsi/ginkgo/v2/types/config.go | 20 +- .../github.com/onsi/ginkgo/v2/types/errors.go | 9 + .../onsi/ginkgo/v2/types/label_filter.go | 11 + .../github.com/onsi/ginkgo/v2/types/types.go | 3 + .../onsi/ginkgo/v2/types/version.go | 2 +- vendor/github.com/onsi/gomega/.gitignore | 3 +- vendor/github.com/onsi/gomega/CHANGELOG.md | 85 + .../github.com/onsi/gomega/format/format.go | 8 +- vendor/github.com/onsi/gomega/gomega_dsl.go | 14 +- .../onsi/gomega/internal/async_assertion.go | 206 +- .../github.com/onsi/gomega/internal/gomega.go | 2 +- vendor/github.com/onsi/gomega/matchers.go | 25 +- .../onsi/gomega/matchers/consist_of.go | 29 +- .../gomega/matchers/have_exact_elements.go | 83 + .../gomega/matchers/have_occurred_matcher.go | 2 +- .../gomega/matchers/match_error_matcher.go | 12 +- .../onsi/gomega/matchers/succeed_matcher.go | 11 +- vendor/github.com/onsi/gomega/tools | 8 - vendor/github.com/onsi/gomega/types/types.go | 1 + .../curve25519/internal/field/fe_generic.go | 2 +- vendor/golang.org/x/crypto/openpgp/keys.go | 4 +- vendor/golang.org/x/net/html/doc.go | 15 + vendor/golang.org/x/net/html/escape.go | 81 + vendor/golang.org/x/net/html/render.go | 2 +- vendor/golang.org/x/net/html/token.go | 10 +- vendor/golang.org/x/sys/cpu/hwcap_linux.go | 15 + vendor/golang.org/x/sys/cpu/runtime_auxv.go | 16 + .../x/sys/cpu/runtime_auxv_go121.go | 19 + vendor/golang.org/x/sys/execabs/execabs.go | 2 +- .../golang.org/x/sys/execabs/execabs_go118.go | 6 + .../golang.org/x/sys/execabs/execabs_go119.go | 4 + vendor/golang.org/x/sys/unix/ioctl.go | 17 +- vendor/golang.org/x/sys/unix/ioctl_zos.go | 8 +- vendor/golang.org/x/sys/unix/ptrace_darwin.go | 6 + vendor/golang.org/x/sys/unix/ptrace_ios.go | 6 + vendor/golang.org/x/sys/unix/syscall_aix.go | 5 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 3 +- .../golang.org/x/sys/unix/syscall_darwin.go | 12 +- .../x/sys/unix/syscall_darwin_amd64.go | 1 + .../x/sys/unix/syscall_darwin_arm64.go | 1 + .../x/sys/unix/syscall_dragonfly.go | 1 + .../golang.org/x/sys/unix/syscall_freebsd.go | 43 +- .../x/sys/unix/syscall_freebsd_386.go | 17 +- .../x/sys/unix/syscall_freebsd_amd64.go | 17 +- .../x/sys/unix/syscall_freebsd_arm.go | 15 +- .../x/sys/unix/syscall_freebsd_arm64.go | 15 +- .../x/sys/unix/syscall_freebsd_riscv64.go | 15 +- vendor/golang.org/x/sys/unix/syscall_hurd.go | 8 + vendor/golang.org/x/sys/unix/syscall_linux.go | 36 +- .../golang.org/x/sys/unix/syscall_netbsd.go | 5 +- .../golang.org/x/sys/unix/syscall_openbsd.go | 1 + .../golang.org/x/sys/unix/syscall_solaris.go | 21 +- .../x/sys/unix/syscall_zos_s390x.go | 4 +- vendor/golang.org/x/sys/unix/zerrors_linux.go | 10 +- .../x/sys/unix/zptrace_armnn_linux.go | 8 +- .../x/sys/unix/zptrace_linux_arm64.go | 4 +- .../x/sys/unix/zptrace_mipsnn_linux.go | 8 +- .../x/sys/unix/zptrace_mipsnnle_linux.go | 8 +- .../x/sys/unix/zptrace_x86_linux.go | 8 +- .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 10 + .../x/sys/unix/zsyscall_aix_ppc64.go | 10 + .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 7 + .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 8 + .../x/sys/unix/zsyscall_darwin_amd64.go | 16 + .../x/sys/unix/zsyscall_darwin_arm64.go | 16 + .../x/sys/unix/zsyscall_dragonfly_amd64.go | 10 + .../x/sys/unix/zsyscall_freebsd_386.go | 20 + .../x/sys/unix/zsyscall_freebsd_amd64.go | 20 + .../x/sys/unix/zsyscall_freebsd_arm.go | 20 + .../x/sys/unix/zsyscall_freebsd_arm64.go | 20 + .../x/sys/unix/zsyscall_freebsd_riscv64.go | 20 + .../golang.org/x/sys/unix/zsyscall_linux.go | 10 + .../x/sys/unix/zsyscall_netbsd_386.go | 10 + .../x/sys/unix/zsyscall_netbsd_amd64.go | 10 + .../x/sys/unix/zsyscall_netbsd_arm.go | 10 + .../x/sys/unix/zsyscall_netbsd_arm64.go | 10 + .../x/sys/unix/zsyscall_openbsd_386.go | 8 + .../x/sys/unix/zsyscall_openbsd_amd64.go | 8 + .../x/sys/unix/zsyscall_openbsd_arm.go | 8 + .../x/sys/unix/zsyscall_openbsd_arm64.go | 8 + .../x/sys/unix/zsyscall_openbsd_mips64.go | 8 + .../x/sys/unix/zsyscall_openbsd_ppc64.go | 8 + .../x/sys/unix/zsyscall_openbsd_riscv64.go | 8 + .../x/sys/unix/zsyscall_solaris_amd64.go | 11 + .../x/sys/unix/zsyscall_zos_s390x.go | 10 + .../x/sys/unix/ztypes_freebsd_386.go | 2 +- .../x/sys/unix/ztypes_freebsd_amd64.go | 2 +- .../x/sys/unix/ztypes_freebsd_arm.go | 2 +- .../x/sys/unix/ztypes_freebsd_arm64.go | 2 +- .../x/sys/unix/ztypes_freebsd_riscv64.go | 2 +- vendor/golang.org/x/sys/unix/ztypes_linux.go | 140 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 2 +- .../x/sys/unix/ztypes_linux_amd64.go | 2 +- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2 +- .../x/sys/unix/ztypes_linux_arm64.go | 2 +- .../x/sys/unix/ztypes_linux_loong64.go | 2 +- .../x/sys/unix/ztypes_linux_mips.go | 2 +- .../x/sys/unix/ztypes_linux_mips64.go | 2 +- .../x/sys/unix/ztypes_linux_mips64le.go | 2 +- .../x/sys/unix/ztypes_linux_mipsle.go | 2 +- .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 2 +- .../x/sys/unix/ztypes_linux_ppc64.go | 2 +- .../x/sys/unix/ztypes_linux_ppc64le.go | 2 +- .../x/sys/unix/ztypes_linux_riscv64.go | 2 +- .../x/sys/unix/ztypes_linux_s390x.go | 2 +- .../x/sys/unix/ztypes_linux_sparc64.go | 2 +- .../x/sys/windows/syscall_windows.go | 6 +- .../golang.org/x/sys/windows/types_windows.go | 85 + .../x/sys/windows/zsyscall_windows.go | 27 + .../x/text/encoding/internal/internal.go | 2 +- .../x/text/unicode/norm/forminfo.go | 2 +- .../x/tools/go/ast/inspector/inspector.go | 68 +- .../x/tools/go/gcexportdata/gcexportdata.go | 24 +- .../x/tools/go/packages/packages.go | 39 +- .../x/tools/go/types/objectpath/objectpath.go | 762 ++ .../x/tools/internal/gcimporter/gcimporter.go | 931 +-- .../x/tools/internal/gcimporter/iexport.go | 128 +- .../x/tools/internal/gcimporter/iimport.go | 82 +- .../tools/internal/gcimporter/ureader_yes.go | 80 +- .../x/tools/internal/gocommand/version.go | 16 +- .../x/tools/internal/imports/fix.go | 6 +- .../x/tools/internal/imports/sortimports.go | 1 + .../x/tools/internal/imports/zstdlib.go | 188 +- .../x/tools/internal/pkgbits/decoder.go | 2 +- .../x/tools/internal/pkgbits/encoder.go | 2 +- .../internal/tokeninternal/tokeninternal.go | 59 + .../x/tools/internal/typeparams/common.go | 1 - .../x/tools/internal/typesinternal/types.go | 9 + .../googleapis/api/annotations/http.pb.go | 173 +- .../googleapis/api/annotations/resource.pb.go | 54 +- .../googleapis/api/annotations/routing.pb.go | 408 +- vendor/istio.io/api/LICENSE | 2 +- .../api/analysis/v1alpha1/message.pb.go | 2 +- .../analysis/v1alpha1/message_deepcopy.gen.go | 2 +- .../istio.io/api/meta/v1alpha1/status.pb.go | 2 +- .../api/meta/v1alpha1/status_deepcopy.gen.go | 2 +- .../v1alpha3/destination_rule.gen.json | 245 +- .../v1alpha3/destination_rule.pb.go | 751 +- .../v1alpha3/destination_rule.proto | 54 +- .../v1alpha3/destination_rule_deepcopy.gen.go | 44 +- .../v1alpha3/destination_rule_json.gen.go | 22 + .../networking/v1alpha3/envoy_filter.gen.json | 7 +- .../networking/v1alpha3/envoy_filter.pb.go | 294 +- .../networking/v1alpha3/envoy_filter.proto | 35 +- .../v1alpha3/envoy_filter_deepcopy.gen.go | 2 +- .../api/networking/v1alpha3/gateway.gen.json | 7 +- .../api/networking/v1alpha3/gateway.pb.go | 134 +- .../api/networking/v1alpha3/gateway.proto | 13 +- .../v1alpha3/gateway_deepcopy.gen.go | 2 +- .../v1alpha3/service_entry.gen.json | 46 +- .../networking/v1alpha3/service_entry.pb.go | 230 +- .../networking/v1alpha3/service_entry.proto | 38 +- .../v1alpha3/service_entry_deepcopy.gen.go | 23 +- .../v1alpha3/service_entry_json.gen.go | 11 + .../api/networking/v1alpha3/sidecar.gen.json | 7 +- .../api/networking/v1alpha3/sidecar.pb.go | 4 +- .../api/networking/v1alpha3/sidecar.proto | 2 + .../v1alpha3/sidecar_deepcopy.gen.go | 2 +- .../networking/v1alpha3/virtual_service.pb.go | 14 +- .../networking/v1alpha3/virtual_service.proto | 12 +- .../v1alpha3/virtual_service_deepcopy.gen.go | 2 +- .../networking/v1alpha3/workload_entry.pb.go | 2 +- .../v1alpha3/workload_entry_deepcopy.gen.go | 2 +- .../networking/v1alpha3/workload_group.pb.go | 2 +- .../v1alpha3/workload_group_deepcopy.gen.go | 2 +- .../v1beta1/destination_rule.gen.json | 245 +- .../networking/v1beta1/destination_rule.pb.go | 739 +- .../networking/v1beta1/destination_rule.proto | 54 +- .../v1beta1/destination_rule_deepcopy.gen.go | 44 +- .../v1beta1/destination_rule_json.gen.go | 22 + .../api/networking/v1beta1/gateway.gen.json | 7 +- .../api/networking/v1beta1/gateway.pb.go | 138 +- .../api/networking/v1beta1/gateway.proto | 13 +- .../v1beta1/gateway_deepcopy.gen.go | 2 +- .../api/networking/v1beta1/proxy_config.pb.go | 2 +- .../v1beta1/proxy_config_deepcopy.gen.go | 2 +- .../networking/v1beta1/service_entry.gen.json | 46 +- .../networking/v1beta1/service_entry.pb.go | 222 +- .../networking/v1beta1/service_entry.proto | 38 +- .../v1beta1/service_entry_deepcopy.gen.go | 23 +- .../v1beta1/service_entry_json.gen.go | 11 + .../api/networking/v1beta1/sidecar.gen.json | 7 +- .../api/networking/v1beta1/sidecar.pb.go | 4 +- .../api/networking/v1beta1/sidecar.proto | 2 + .../v1beta1/sidecar_deepcopy.gen.go | 2 +- .../networking/v1beta1/virtual_service.pb.go | 14 +- .../networking/v1beta1/virtual_service.proto | 12 +- .../v1beta1/virtual_service_deepcopy.gen.go | 2 +- .../networking/v1beta1/workload_entry.pb.go | 2 +- .../v1beta1/workload_entry_deepcopy.gen.go | 2 +- .../networking/v1beta1/workload_group.pb.go | 2 +- .../v1beta1/workload_group_deepcopy.gen.go | 2 +- .../api/type/v1beta1/selector.gen.json | 20 + .../istio.io/api/type/v1beta1/selector.pb.go | 160 +- .../istio.io/api/type/v1beta1/selector.proto | 31 + .../api/type/v1beta1/selector_deepcopy.gen.go | 23 +- .../api/type/v1beta1/selector_json.gen.go | 11 + vendor/istio.io/client-go/LICENSE | 2 +- .../pkg/apis/networking/v1alpha3/types.gen.go | 2 +- .../pkg/apis/networking/v1beta1/types.gen.go | 2 +- vendor/k8s.io/api/core/v1/generated.proto | 2 +- vendor/k8s.io/api/core/v1/types.go | 2 +- .../core/v1/types_swagger_doc_generated.go | 2 +- .../api/resource/v1alpha1/generated.proto | 3 +- vendor/k8s.io/api/resource/v1alpha1/types.go | 3 +- vendor/k8s.io/klog/v2/contextual.go | 30 +- .../k8s.io/klog/v2/internal/buffer/buffer.go | 75 +- .../klog/v2/internal/serialize/keyvalues.go | 207 +- vendor/k8s.io/klog/v2/k8s_references.go | 78 +- vendor/k8s.io/klog/v2/klog.go | 135 +- vendor/k8s.io/klog/v2/klogr.go | 12 +- vendor/modules.txt | 93 +- .../controller-runtime/pkg/cache/cache.go | 1 + .../pkg/client/apiutil/apimachinery.go | 40 +- .../pkg/client/apiutil/lazyrestmapper.go | 60 +- .../controller-runtime/pkg/config/config.go | 22 +- .../controller-runtime/pkg/config/doc.go | 2 - .../pkg/config/v1alpha1/doc.go | 2 - .../pkg/config/v1alpha1/register.go | 6 - .../pkg/config/v1alpha1/types.go | 10 - .../pkg/controller/controller.go | 2 +- .../pkg/manager/internal.go | 13 +- .../controller-runtime/pkg/manager/manager.go | 22 +- .../pkg/metrics/client_go_adapter.go | 59 +- 817 files changed, 30396 insertions(+), 11757 deletions(-) rename vendor/github.com/{kubernetes-csi/external-snapshotter => fluent/fluent-operator}/v2/LICENSE (100%) create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfilter_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfluentbitconfig_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterinput_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusteroutput_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterparser_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/collector_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/doc.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/filter_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbit_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbitconfig_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/groupversion_info.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/output_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/parser_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/common_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/configmap_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/custom_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/zz_generated.deepcopy.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/aws_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/grep_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/kubernetes_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/lua_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/modify_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/multiline_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/nest_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/parser_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/recordmodifier_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/rewritetag_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/throttle_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/zz_generated.deepcopy.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/dummy_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/fluent_bit_metrics_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/node_exporter_metrics_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/prometheus_scrape_metrics_type.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/systemd_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/tail_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/zz_generated.deepcopy.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/interface.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_blob_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_log_analytics_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/cloudwatch_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/datadog_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/elasticsearch_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/file_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/firehose_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/forward_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/http_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/kafka_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/loki_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/null_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_search_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_telemetry_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/prometheus_remote_write_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/splunk_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stackdriver_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stdout_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/syslog_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/tcp_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/zz_generated.deepcopy.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params/kvs.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/json_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/logfmt_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/lstv_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/regex_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/zz_generated.deepcopy.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/secret_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/tls_types.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/zz_generated.deepcopy.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/zz_generated.deepcopy.go create mode 100644 vendor/github.com/fluent/fluent-operator/v2/pkg/utils/utils.go create mode 100755 vendor/github.com/gardener/gardener/hack/add-license-header.sh create mode 100755 vendor/github.com/gardener/gardener/hack/check-license-header.sh create mode 100755 vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh rename vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/{cache.go => aggregator.go} (96%) create mode 100644 vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/single_object.go create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/validation/kubernetesversion/version.go rename vendor/github.com/gardener/gardener/test/utils/{shoots => }/access/adminkubeconfig.go (91%) rename vendor/github.com/gardener/gardener/test/utils/{shoots => }/access/csr.go (72%) rename vendor/github.com/gardener/gardener/test/utils/{shoots => }/access/serviceaccount.go (77%) rename vendor/github.com/gardener/gardener/test/utils/{shoots => }/access/statictokenkubeconfig.go (87%) create mode 100644 vendor/github.com/go-openapi/errors/.gitattributes create mode 100644 vendor/github.com/go-openapi/errors/.gitignore create mode 100644 vendor/github.com/go-openapi/errors/.golangci.yml create mode 100644 vendor/github.com/go-openapi/errors/CODE_OF_CONDUCT.md create mode 100644 vendor/github.com/go-openapi/errors/LICENSE create mode 100644 vendor/github.com/go-openapi/errors/README.md create mode 100644 vendor/github.com/go-openapi/errors/api.go rename vendor/github.com/{gardener/gardener/pkg/extensions/id.go => go-openapi/errors/auth.go} (53%) create mode 100644 vendor/github.com/go-openapi/errors/doc.go create mode 100644 vendor/github.com/go-openapi/errors/headers.go create mode 100644 vendor/github.com/go-openapi/errors/middleware.go create mode 100644 vendor/github.com/go-openapi/errors/parsing.go create mode 100644 vendor/github.com/go-openapi/errors/schema.go create mode 100644 vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/LICENSE rename vendor/github.com/kubernetes-csi/external-snapshotter/{v2/pkg/apis/volumesnapshot/v1beta1 => client/v4/apis/volumesnapshot/v1}/doc.go (97%) rename vendor/github.com/kubernetes-csi/external-snapshotter/{v2/pkg/apis/volumesnapshot/v1beta1 => client/v4/apis/volumesnapshot/v1}/register.go (98%) rename vendor/github.com/kubernetes-csi/external-snapshotter/{v2/pkg/apis/volumesnapshot/v1beta1 => client/v4/apis/volumesnapshot/v1}/types.go (74%) rename vendor/github.com/kubernetes-csi/external-snapshotter/{v2/pkg/apis/volumesnapshot/v1beta1 => client/v4/apis/volumesnapshot/v1}/zz_generated.deepcopy.go (99%) create mode 100644 vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go create mode 100644 vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go create mode 100644 vendor/github.com/onsi/gomega/matchers/have_exact_elements.go delete mode 100644 vendor/github.com/onsi/gomega/tools create mode 100644 vendor/golang.org/x/sys/cpu/runtime_auxv.go create mode 100644 vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go create mode 100644 vendor/golang.org/x/tools/go/types/objectpath/objectpath.go create mode 100644 vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go diff --git a/Makefile b/Makefile index c3361af14..554506749 100644 --- a/Makefile +++ b/Makefile @@ -90,7 +90,7 @@ check: $(GOIMPORTS) $(GOLANGCI_LINT) $(HELM) @$(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/check-charts.sh ./charts .PHONY: generate -generate: $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) +generate: $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) $(YQ) @$(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/generate.sh ./charts/... ./cmd/... ./pkg/... ./test/... $(MAKE) format diff --git a/charts/gardener-extension-shoot-cert-service/doc.go b/charts/gardener-extension-shoot-cert-service/doc.go index 875530cd6..bf3ffe76d 100644 --- a/charts/gardener-extension-shoot-cert-service/doc.go +++ b/charts/gardener-extension-shoot-cert-service/doc.go @@ -13,6 +13,7 @@ // limitations under the License. //go:generate sh -c "../../vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh extension-shoot-cert-service . $(cat ../../VERSION) ../../example/controller-registration.yaml Extension:shoot-cert-service" +//go:generate sh -c "sed -i 's/ type: shoot-cert-service/ type: shoot-cert-service\\n workerlessSupported: true/' ../../example/controller-registration.yaml" // Package chart enables go:generate support for generating the correct controller registration. package chart diff --git a/example/controller-registration.yaml b/example/controller-registration.yaml index 7ff65d624..c1d987cdb 100644 --- a/example/controller-registration.yaml +++ b/example/controller-registration.yaml @@ -5,7 +5,7 @@ metadata: name: extension-shoot-cert-service type: helm providerConfig: - chart: H4sIAAAAAAAAA+w9a3fbNrL9Wv0KXLU5TtKQsuXXru5Nd1VZTX3q17Uc9/Q0rQuRkMSaryVIOWq297ffGQAkIYqUKMVxmq3RVKZAYDCYGcwMHgONaWQzn0UGexsznzuBb/BJEMSGxaLY4CyaOhZrffZeaRvS4f6++Aup+Fc87+zu7bT32wcHmL9zuH14+BnZf79m66WExzQi5LMIOr2s3Kr3n2ga1+K/OWGu54z9IGIbtIEMPtjbq+Q/sH2e/+2d9u7eZ2T73ntbkv7i/P+CXNA4ZpHPSRwQyWJyN2E+GSaOazv+mITUuqVjxs3GF+Rq4nDCkzAMohgeQCxcMnaDIfFobE2g9AsSMZfGzpRBvXii5VPfBgA+G8PbwCdPw4iNnLfMJncOlPuvZyY5990ZCXxRE1EiIYuI6/jMbJhHg5tBDLgBiF7geQDgujcgthPxhjl24pb4lOg3zOHvUUt8phmTcQs/0q986rdyQEPoXxKSkeMy3nhu8rsQPof0Fj5jD57/D4pe08gJEk6Oj/rQYBgFvzErbpiOzWhLloOshjnlVmCzVuNjc7V+qjf+exMaxeaMeu4mbawa/+2DneL4327vPo7/h0g0dK5ZhHzvkOlOg4ah9tXc3TW3DZtNGzbjVuSEsXjRJd+BOSAWCgUZBRGJJ4y8UoJEBig+pAfiQwZSfEgmW2bDpx7rkFpS15iWYfKxCfYfluqNfzuwzHGwaRsrxj+M9oL/197eOXi0/w+SWi0wg+EMLOUkJk+tZwRo/3cy6F6QQZ/A0Ka++EJHYB4dGjNiBV5I/ZlJumD6RTUOJh8Fhdmm9A/QkhL464Lo+BwsfOLbTGqJLjgT8GcQjOI7Cp7GiSzygkxN0gY9YbEwJpQTP4ihXgBVojuHAzRfVD857vXPADFsodFqwb8UQkkjGWyl0Ujb3CZPsUBTvWo++28EMQsS8FNm2ChJoLE464RCCFrHbgMBfNBmwl+J8wZMhPGjghEMYwrFKVQI4dtIL0horJAWaRLHYafVuru7M6nA2AyicUsRjbdUXw3AWtV67YOHgtT+V+JE0OPhjIC+hgp0CLi69E4wbBwxeIfOnE/uInCK0PniiuAIxnZ4HDnDJJ4jWoojdF0vAGQDEWh2B+R40CTfdAfHgxcI5Ifjq+/OX1+RH7qXl92zq+P+gJxfkt752dHx1fH5GXz7lnTPfiTfH58dvSDMQU4COcHpgx4Amg6SEyQGYQ0Ym0MhNSk8ZJYzcizomj9OwAUl4wBsgi+cUhZ5Dke2cuFZAhjX8ZxYOJd8sV9mA4qMg84YlR3KMZ8QwyJN02zBvynz7SBqgQs5SYYm8LqV6sX8YQJuYiutbliBH0eB64LmjNgYCSZaNgHsMk1KTPLlU4vGRLZ73b8cALWeqa/sLQWysFYVcHTASD8F31kE38RegkcvHHZloJmP4sHJXOelBy8orTKRqEgvK4gi8G1JjgOZw6ER6tAfzfEnnurZ/5iBXILg8I1WgtZe/wGP4HD/cf3nIdK6/L+BKT/oXm7GYe254Ar/b6+9wH/48jj/e5D07p1BbDZyfPCKcG7WJMYffzTqzc+wLhhOUaOhA8JSYD9GzliCMwyjoU80F2GZWUPclDXNFAfTcoPEbk13qBtO6E7j1vHtDjitWCiRRqkBnkDCojMxt3z3LveQmuY1dRMGMKEtdCVAhmVNE3CliRsfi5omdh1dn7Rmk6xVE/oIjg04TZbK3hCNFAjU2QgZrT6ghCxxRqsrX0I7UJFfsOiIzv43CWKK1avfit5tCjaVmjoICkGRfeNYQf/eaRDl29gr8NFrmapKARNqgeggQI867obMQximALAZ87T6gBEhYk61qSQJYBLCe2CjAAh06kqTXj+MgpDKBd8rx2NBEktYi/n1RKoObI2rmyLtTKHA92yWIpt+75B/N9ZHM4P2bwKD04M/oMGYH5O9TRCGGRRMFa1bVHaSPTxFc+HFCqJWgloPI4v28jwFYT6vI4DEwY84f6kNKKNTezPGUisWpO8m8SSInN/V1FBUr3rbARYlbL4x7VE8Z2bO8WAeJC1chtCE8guxsUGafELb+wedfMiJ8mZMx3kXQDr8eESaT/g/n/BiyYiFAXfiIJotA8FczsoAdjYGWN7ttNcuozC3Zi5MEoFiji0JsMxRMGQVI62jOw4f2//5q6d1/X+RrTy0uvtBK/d/Dg8L/v/ezsHho///EGl+/+dz5V0PmBWx+POGx2JqU3D4PgfdILdulsmJct1VWR5SS/rj5iUMfcqZeZZmg1b5vJFB1uRJlHd8y03swkTCBIMwPNhjvpUaUlA7H5t8n3xae/y7MGBYNHJc+OSGG4zHjr9CFawY/zu77eL+78He/uP+z4MkffyPwCPw46ETm/LJdIJ02t1Op92S/d8K9ufqAcawS4fgieAT0QBlq+fxLARd0OQM5iCZLkmNSbrY7VEfvJFIl0CZ5QE4A+s2cE8AG1ECiI/g9NAIJFW2Tcgtm8mVABBOlaUKiAbTRmSeKqB2sI6wM6kLKI6udMhtMmSRz0D4zecVCD+vRvj5wuLHn4bKEcPtIWaA81dOVlXgio5T0kaJy3j6xSBbX6Lj+EtOoTfmlEZvTCD8G7QFuBUG0N6YT6twML/6xw3+X03AZ7glh+oJXFdmm19edV8JBm2Vc+jRIqyXNtT/cvDcj/7f3jssrv8e7D36fw+TNtNMF1J36pop1zULCnYdpZUqooiN2VtZJXY8ufiCD1nOt0EEwx/qPfnReOIZT+yrJ991npx2ngye/N5sSJ2OIMjWL1j8ZfPpP/4HH75+Y7/b+8OAz7b6vPrpl+bPz5813/CvXDZl7ksoyeEBdN/s6zd3Xz17wz0+FgBA3L82oejWf4yaWXv8C2/co6EhVg6mMKMPIgO35YWtKFUEq8b//sH+/PjfFUcCH8f/A6TCOppg6rVg6nnKU7E+Pn9MUN+DOaVhiSLQZ3FyX8kEOOVCU2++WFAkNAxNzfCDqlrWcEUVxwfu+2Wtig0Q1SOBNL+ZF/LCWnAp4eZXevMFtY/NdC1tPv5rmX6RVs3/DneK9n9/d+/R/j9Iuq+BraTBKFsBkjJWGL/ahm9hp9fSt3bFLA4hZ6NRTlEMbSBjBRyOCPanb49PrvqXP6s5CiFiMBfS3NSPkFOcRhSKvO+sL4UDjstNEYV8XkqI9KTm29acqIt5TC/lNPUG56lp3hXOVuv3XU3qbnDWV5cAefsw/ysC/IhzQOy2momkQmBISlx0LwdVlKgmr/QpUzqB96gRHr6p5w/gT2bt4E7mDe4VEpK7u9kLhV+Jx7uxP7q2/o9svm4gyHL9327vHu4W9H/78DH+42FScXUKnjXNfPs3LieBqWEAagUeaKEgiSx2hDuCjtjRW7QTjjpvgXJU0PA1Pbl6h5DKISx37MrrSJ1gG8PZfK00igXPn6jZ6TgKklDOdhf7Jiyf7JqkmjwOIDJch8ffa5kn8F28CF0weG5GNpEHvY3isxwaLrk5OSwOVjFxadTJM7kV4Fw6c5sRHRVFo2AYhNq24Bl1L3CvmEW9wE08P2sDy8yH+/RO+yKUR9OUhPzGA/+CxpMOMZEq+nkRrZTkJKji6/6lli2n/HhWyR8vbfZSO3osD+esQqFYSGLQP+0en6yJwCCmccLxDL9+ALqifVFW/GGL3b/qXr0erNm6lA9RdGmThQKyxasfL/prthcMfxPHviMmiY3WB5rwwvLW0wFvphWuSspLZLqvFnGxdToVMFHupU3sAHjp81UcV8VMVW+h/eOz3snro/7RzdE5SMGZzogwcgI0yx3SBku0nGISWHYMUWZyawIClw8dGH5+9+L4endQeEFKuetwceZejl/SuzTncANgUewwrkNBxZVp67n8QgtbiIYKfJFHN2RbSh0AeSXuMkZFHBHD4AxwuYpiLvo1wjAQKSOmUgYY/xskro3bt1MM94uYFYx95/cMtogpxkaF7xAXYArlA2qITHEKLQKERQhNxIQkJr4Gbypn2eQUw5MdfxR0RPgM77QwaCO1U1bgeQlYpJmMoMAQliDiLRu9sBZ3xgaNrAk4v1acRKwFhDQE6r44+mN69heRsmx8q4Br6QjCJDT8Uj6gukdGU1Vd9iUndxp4cdkfXJEUAcGSIg/kCM0q8pwRSDagigh5wdilKPAETObbYQB0lpEdrgO1CkB5MvScWB4QxMOawDGT9KiPsVBDRpIQR6ptkmMfcj3m9tAifmg2ILW5gaStzwjdA1msIGk39yq15ZWck2N0AMXScYpV0pguOWbNAoCqQYspPWNaTItWTzUnngFiHFiBm0dDCc1XAmdZ26J9YINuT8tLFfEpVEpxG7kw63NGAijMSQCtCiM5n5TGAMkSkWt4znlEfJjiYShYeRXJwGEQgDdWDlgZgFr9OZJlQVFLH8idpYQF/agAEcgO7jD4LcIIqaFjy+WL8oQxVNrxw2wkVVRYxSVM7K2wZNUFCp3qy/IEIyplH6QTKnC7mzgwudcwXAKV5HoAYWWdJ0+lcUVdRf0Zag1Fq2dLoMEQ95b0ElPlcC4rRqOIzipLKfNfm2jH/ochWio8f3qSVWrGNMnD8HVGVT899S6MjvgC0wwR6wkeQKJiOnERpxBMuGEXcUaIrkPXsoLEj78BSwFF6yk0UKr90urSSEcMzCjDOF/AnJJed8koVf4LlWBSyyDUtpwJVXWwjhK4ZbPjo9rSLEqnHIAnhUuvi2/gkUofIO35UglTZEFoQ3jAYOKqjmCqJZCAhTxUeMlG63Qqq5TZYJGBbEqdS1lkaY/kcJ4Erq2AzDzwFyKwWqfdnqCQoldKn5QGS6GmciMCwtH3EJC2Jh61vmezLYyGz/DFNxwvsAGLV21LBDmzLpHnz72Ex8+fC0/MN0IYU8x+QYbggx3skdeXJ+Dg4YUztmh9GY/qCBwmMclZWqLAojMVOAX+HuhAQQoR/p4t/yOXsjG1AjJBJznlr3SEl3UKU01tqO9HrNs92Q19DiVzVF+FbK3smCa6ImIMGSvZinS7p16u1OgkCwSqpoIhdcny99mw3NS2lEWr1FHfFyUxK9nGrOSOCsLJmqjsia/BSPAKCeHKYRUc1UdnAz1OyUx3B36dBDz+tRIogBAlOhhg/+sLwsyxSZp/M8V/TcKR+TAxTnM6+7tNrNMcB8HYZUaYDF3HMmyfG9SUeXgfARarEpIVPkMN2VnlK+QxTCt1eIFZC/Wq1TiazcpOKAxQ9N7Hpq5Sbx9Kta2l1moN9lrqbCNVhtlLO7OZGqsthkuUhoqIrCN6gyz0EXuJprK+d7YSVX7rhKAeehPw9Zk/ZtfUdez6c+pBZXXi0eiWp+4aIK8t95eCDZi4KwfXlBAEE1rLSgFzsW4jAFngM0BJ8Z7hogzjLVxfi+yqiSoRsxmxvKtUIxW1M7TFgl1BSyLBER+hRTef0y+3UsbCToD+bmEPYr7RCvGyFhaOMM2xDXxpJU7w9N6rMQ+iUxFRkfmoNNOe/MWU5tLXUUlo/6pRUBbVr+TPo28dL/GIn3hD0L2gcFctoGQLJ3jTp01n+dKbvANqmQaUPcNNhPHC++pFX7FpVmfZV27+pSMr2wp8yKXfXMfIrb512UvIW+2YlBGqIBcj8W/94M43Rg6DCXEW7zKfNleIHwFZGKScjleT+FSWK7I1IiyK4FOBqca9YiQGQ3n/3St1lVa5HzCHyflClRSpFFh2MRe8koJX7otU2J+ROh8PA+Rgb83hc++agVpxQt0/kYKQmmC1wKAaEOKS3mDnhfHsBdm6YGLpZwse+yg68AD4bF0yas+21pYf8XIVKldQqLBhjPVM0ksiMKaxuDsZPrZQ2WwJ52zLosX9M5nQs1N3wJU7aUvQrfbNDFI8/5CDWhj15WAMIc+NpbXl8JjTBLiyhuN/Li8ZZtu5eSPKAJB3j7HDIq17/s9moRvM8GRm/VOAK85/H27vFe9/39vZ3348//cQafH8X8jz835HGbdLTvjVPZ93f7Ed9U8E4u8VmHzSEpdUfuijhBNnPDHoFKakdOi4TjxLL8jI9E/xiLvUavlZaC3sbeoget85qNJmJ3ilaYe0xRtx0+v8nT4qsye2a9SlUa4IQpGEFAGyJxpl74O2mxApVSAKrcJZDXHcRF3Ak2lqsYTAE68lp07zN8pIAi+/LELevwMQUj5hqhnvtIBEHveS06c0mGkOp6fiOh7ypXml+m9+A3TBE2ykWSuUrvlseVey+5BKeyf3uNI7zwZWBCPdH+sVYNIChSYs0SShWcLCZkUNjjCxDhreqkLoZiiwBcTEJbQ69LxP8EXlunPyez8SvNlAxwTF74IIdwgWBnVgRDAOHY8ZQOf09jblr9arb+MNVHoN/ZBSelix51LOz+a7zGcchpjx9+wQo+qu2sY8W5tAeeRGfvZ4EzIL0Z4fp+raLFOnqsi7SFz3IgCFNptTcvKKqjB7OTc+A8+j+gk8g7TWQ9AghtImL1sstlpzfo92Mc1cBZjIYCVLet4GLqT6Fv5+yEv9wrVMvYtnVXgw8y2udwHhTRh144lQNuvD1irXaCeKh4zGRmaUX1bZZFJRE4CzO0Mc3pxSF0gFbdrLkJP1TFHvWFUbyFoLzdgOR1WlhQnNQVave/lbUI6/BY5Pmi+axc7KX3sxcFVG2BYjNzNV2Moq52mNblahCLtwo5nh2C91EV+8I81cBSH1FQw3sG51/GTBviqX+RQnUKwIM5N8dchXB5MpG/VOr8v8qT6C5Dg/6XeP+pc3/ZN+D290vznrnvYHF92evkknjrJ+C8p+fhYn1mpKFrRFvjy/nZ0fzwRxUxOd4nt82n3VvwZkzy9vzq/7lz9cHl8t4Noh0iXUonlbpeG9a1jZzMvTy2hTT2BC4erDvEbxSsid7RUWforBGuwUlTpf5FmJj6RRwMNakvwLqm5uZk5t/CmmwlrbhmxZ4S5VoLfApHr4zRFLkmrBfi2jkXQ1dbGVOWdrXH22Nq3WpZSVRufqeFYG5y4Juk+TOjBxGtgAYq+9rXVCEfRjz1If04dK667/hIENRjhKxKLkMLHHbPVC0Kr4/+3DdvH+n+39x/j/B0lKU3HmTTES0Atxabj59UuyY7Z3jG1QID0aymUNBzTZ9zBjUmtF5isnvs59CX0RKRR+Oi4j6RfUlpYYgh+wo981KxeeLgL7KBOzb4SYfWIrUOvOL9OZHrj/r321mORC2Z0/66LOx5bcx3QfaV39Hw2pdb/x/9t7e7tF/d8+OHyM/3+QVFz/F/yl+p3oi5cAyDvgLgOXvYdO/kTX+9UNmAaG4b7CWwDUXZmV19k05uaCWFRdoYjn7sDmDlXuWIQwGOKGAPFwh2r+vRrKixa+tuQuaC0E5P2q6ZOMB13EqmqnYxEpdctCljuPRPN5cxF4s7kIJjPpG5Kx7J6LElaJ+y7STDu776KiUXlYUidUTr1FklWNtEqJiQKX8WLGUAahyPy8ROHVmsjKmHyXlbG6jBtNOU3mTfmNYTCv+LKStbjfWAYw32cuwnlf/K0giIAsyykuBn2BcFqDKF0kFy/yvq2k+dllHwaptZxolGm6bMl1Hn2NSEjCRVaU3GZSwpn8gpLseR11stCsnAkstlMy0azmxzq6S5eN9zJ+KvzrL2gDofNqdTdl5hLaNdJrcHS/YT1K8USc/xF2N/2BAn1764NMCD+2Z/YwaV3/P13uXGcKsML/b+9vF+//2t1rP97/+iCp9omB0osi1TD84EszCwdEtF30ykM2eAuKQV1XXCFoyJMKBjAbLYmhNtkNPIHAO2Trp3dNfGx2qk8pvGimd3E0O82r3kXzj5+3aiOT9dNIF3NUq9pqDjTeLFxJpu+SQasSaPOPdVoGQ2oIQ5O1nG/+AhkcPFI0N1Mg5AtydX503pG/5i3qoo2IAgquDv4+NN5AY4mwIDxl6gfEDfwxi9RFHumPdY8SvN/FJJfMC6biF549jHzkAf6mNM8kJNuv/+d0xzzcx1/QIkPGfBJJWVDnU2tzXDoUxmK3xcmKMmHYCP79CdAn6gWkC5byLJsy7scXkGOlzx1yFvgIXRIpm7iJ7V+kjGhYHg+qJpsspCj3/+1d3W/aMBB/919hkYdKU0mBlqnz0xhlE1rHEEWVpmkPFFLK1pKKhG5I++Pn8/krH4h0mljX3e8BtYntxI5zd7HvficnZReukV0S3f9y7XPZHPtN/a8pL6qZATv530/y+r8Np0n/7wH5T6C8ajcW9r+1+bI3Iajor2CAssM1jr9FkFBjcptET1s+PPb9f7ifPHb5f+f+b+u4nV//b5P//36Qs//h8eoMyTmbvwZTPZlKg1FaSHZVBLZvWzUtMi4hmEuWGMazji5cmiSm0pyry1upKD2MJVLSF2PK+Z6j2WMocqy7qzq48L2G7Cl0Ajp44UKq7hbLDpqBvivOnbR3V5steZuLNxW6VkKsWp6wuVLNYqJctHGtM15ZrAccL8R7OKeiqtIT19f8UcUj6Ffk2XfQE79w6Mo92TwZzxXV5L+mX32s4NfYIf+P2818/FezRfm/9gP0z1dS0eSGFjxah/PpCiS8nR7y+wuWYO2BI383sUwapJO5cLy/955rf/96EKdD5LBlLOveLDz5DB7OwuyRsEB+8qVAlosEjfobUfMrJWah6mrD1Qe+C0BhuiS0nF3Vsv6jgaWM0mUdb+5i6UVpmfAOZr5ZTxunDcbcxgVElTIp3dy1Zt5FinonKOiQIKNBmq3TD4udkrUGyrbGmOfIDoVyoQCCt+XBrQ7uxlgF29mGE1jdWGzIbjIJdOAv8+4X/LjB5X3lc7MLf8xLosZlx1Uciy6BhAxCXwZikqepGVgcVnXIPkQTHB0b3s26pveMr7maqsgdPlsmmjq8RNehrvRYG5ALk3+Nb5ayVvQ6+jGRJrHi5tIlTMCPIUSG2vWHRiuUky28jVI53aerzX0axqv50Uzqdli+2Oj1No9CB4jU47Uc15eNBFbixudqwp8NLhpNn9rH1jR8MIL/lP9/1MS2inEQKp5H6UHCe3hxw1VpaksDB/Cm964/4Pg7uujw4ah/2Rn3+PveJ3Xelg7DXM3e4Ky8BjzjMpI3ronPDuH3JDxRBaeTrpskCXbEMPTqTXjgmPBmUsK/30RLvoYkCJYdzBAmPyxm6hEGme51e6Nx/22/K2/TdCowPQq87pSV+3ONMY6TEGe1SYZkhIV6CWUD0oyF6X2IwWCKRRUJNjZm09WssqrGnE+Jem0mUpbCgHT87bjEvjG2cbxsgmTO9bqasa52PbObpy64JYUPY8XAHME/fwGpXeb7DsmaYAZh5IVQf2fc813+H4YSESXnyNNR80V6s76C98/ppPK6FTXbtr5hI0qd1RphK3wlRa2pLJjNryHAMeJva3MCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAI/wN+ASIs1l0AyAAA + chart: H4sIAAAAAAAAA+w9a3fbtpL9Wv0KrNocJ2lI2fLrXu2m96qymvrUr7Vc9/Q0vS5EwhJrvhYg5ai53d++MwBIQRQpUUriNFujqUyBwGAwM5gZPAYaUe6ykHGLvUlYKLwotMQ4ihLLYTyxBOMTz2Gtz94pbUM63N+XfyEV/8rnnd29nfZ+++AA83cOtw8PPyP779ZsvZSKhHJCPuPQ6WXlVr3/RNOoFv/tMfMDbxRGnG3QBjL4YG+vkv/A9nn+t3fau3ufke333tuS9Bfn/xfkgiYJ46EgSUQUi8n9mIVkmHq+64UjElPnjo6YsBtfkKuxJ4hI4zjiCTyAWPhk5EdDEtDEGUPpF4QznybehEG9ZGzk09AFACEbwdsoJE9jzm69N8wl9x6U+49nNjkP/SmJQlkTUSIx48T3QmY37KPBzSAB3ABELwoCAHDdGxDX46Jhj7ykJT8V+g17+Dtvyc8sYzxq4Uf2VUzC1gzQEPqXxuTW85loPLfFfQyfQ3oHn0kAz/8LRa8p96JUkOOjPjQY8+g35iQN23MZbalykNWwJ8KJXNZqfGyu1k/1xn9vTHliT2ngb9LGqvHf3tsvjv/t9v7j+H+IRGPvmnHke4dMdho0jvOvzR17u9lwmXC4Fycyq0u+A0NAHBQHchtxkowZeaVFiAxQcEgPBIcMlOCQXKrsRkgD1iG15K0xyXDYtgGJT2g4fXKp3vh3I8ceRZu2sWL8g63fKYx/8AB3H8f/Q6RWC8xgPAVLOU7IU+cZAdr/nQy6F2TQJzDAaSi/0Fswjx5NGHGiIKbh1CZdMP2ymgCTj4LCXFv5B2hJCfz1QXRCARY+DV2mdEUXnAn4M4huk3sKnsaJKvKCTGzSBm3hsDghVJAwSqBeBFX4vScAWiirnxz3+meAGLbQaLXgXwahpJEcttZopG1vk6dYoKlfNZ/9J4KYRin4KVNslKTQWJJ3QiMErWO3gQAh6DTprySzBmyE8ZOGEQ0TCsUpVIjh261ZkNBEIy3TOEniTqt1f39vU4mxHfFRSxNNtHRfLcBa1/ohBA8Fqf0/qcehx8MpAX0NFegQcPXpvWTYiDN4h85cSO45OEXofAlNcATjeiLh3jBN5oiW4QhdNwsA2UAEmt0BOR40yTfdwfHgBQL58fjqu/MfrsiP3cvL7tnVcX9Azi9J7/zs6Pjq+PwMvn1Lumc/ke+Pz45eEOYhJ4Gc4PRBDwBND8kJEoOwBozNoZAZFhEzx7v1HOhaOErBBSWjCCxDKJ1SxgNPIFuF9CwBjO8FXiKdS7HYL7sBRUZRZ4TKDuVYjInlkKZtt+DfhIVuxFvgQo7ToQ28bmV6cfYwBjexlVW3nChMeOT7oDk5GyHBZMs2gF2mSYlNvnzq0ISodq/7lwOg1jP9lb2hQBbWqgKODhjpZ+A7i+Cb5Z3E4WF5ZEu0SDKNwQqXqPjKN69fhyit9xG/YxwFcKDcf+Z2SMJT1tpaA/smsgGmHHJGof0IFqL8CjKHuGpDioLORK4jQ52Ic3C+yawZMtdMIzahP/oOy1M9+58w4CzwRWy0ErT2+g/4/4f7j+s/D5HW5f8NTPlB9wo7iWvPBVf4f3vtBf7Dl0f/70HS27cWcdmtF4JXhDO0JrH++KNRb5aGdcFwyhoNExCWAvV8640UOMuyGuZEcxGWnTckbFXTznCwHT9K3dZkh/rxmO407rwQLE9PFkqVzm+AJ5AyfiZnmG/fzjykpn1N/ZQBTGgLXQmQYVXTBlxp6ifHsqaNXUfXJ6vZJGvVhD6CYwNOk6OzN0QjAwJ1NkLGqA8oIUu829WVL6EdqCguGD+i0/9Oo4Ri9eq3snebgs2kpg6CUlBU3wRWML93GkS7Du4KfMxatq5SwIQ6IDoIMKCevyHzEIYtAWzGPKM+YESInFNtKkkSmILwDthoABKdutJk1o95FFO14HvlBSxKEwVrMb+eSNWBbXB1U6S9CRT4nk0zZLPvHfLvxvpo5tD+Df6yF8Af0GAsTMjeJgjDDAqmis4dKjvFHpGhufBiBVErQa2HkUN7szwNYT6vI4Ek0U84f6kNKKdTezPGUieRpO+myTji3u96aiirV71VU5r5xoxH+ZybOS+AaYaycDlCYyou5MYGzLrGtL1/0JkNOVneTuho1gWQjjC5Jc0n4p9PRLEkZ3EkvCTi02UgmC9YGcDOxgDLu5312mcU5tbMhzkYUMxzFQGWOQqWqmJldUzH4WP7P3/1tK7/L7O1h1Z3P2jl/s/hYcH/39s5OHz0/x8ize//fK696wFzOEs+bwQsoS4Fh+9z0A1qA2eZnGjXXZcVMXWUP25fwtCngtlnWTZolc8bOWRDnmR5L3T81C1MJGwwCMODPRY6mSEFtfOxyffJp7XHvw8DhvFbz4dPYfnRaOSFK1TBivG/s9su7v8c7O0/nv94kGSO/1vwCMJk6CW2erK9KJt2t7Npt2L/t5L9M/UAY9inQ/BE8IkYgPLVc7W63BQM5iC5LsmMSbZcHNAQvBFuSqDKCgCchXUbuCeAjWgBxEdweigHSVVtE3LHpmolAIRTZ+kCssGsEZWnC+gdrCPsTOYCyqMrHXKXDhkPGQi//bwC4efVCD9fWPz401CZM9weYhY4f+Vk1QWu6CgjLU99JrIvFtn6Eh3Hf80o9NqeUP7aBsK/RluAW2EA7bX9tAoH+6t/3OD/1QR8hltyqJ7AdWWu/eVV95Vk0FY5hx4twnppQ/2vBs/70f/be4fF9d+DvUf/72HSZprpQulOUzPNdM2Cgl1HaWWKiLMRe6OqJF6gFl/wIc/5NuIw/KHek5+sJ4H1xL168l3nyWnnyeDJ782G0ukIgmz9C4u/bD79x3/hw9ev3bd7f1jw2dafVz//q/nL82fN1+Irn02Y/xJKCngA3Tf9+vX9V89ei0CMJAAQ969tKLr1/0bNrD3+pTce0NiSKwcTmNFH3MJteWkrShXBqvG/f1A4/7cLGmDncfw/RCqso0mmXkumnmc8levj88cEzT2YUxqXKAJzFqf2lWyAUy409eaLBUVC49g2DD+oqmUNV1TxQuB+WNaq3ADRPZJIi5t5IS+sBZcSbn6ld7ag9rGZbqTNx38t0y/Tqvnf4U7R/u/v7j3a/wdJ72tga2mwylaAlIwVxq+x4VvY6XXMrV05i0PI+WhUUxTLGMhYAYcjgv352+OTq/7lL3qOQogczIU0N/Uj5BSnEYUi7zrry+CA43JTRGE2LyVEeVLzbRtO1MU8ppdqmnqD89Qs7wpnq/X7rid1Nzjrq0uAWfsw/ysC/IhzQOy2nolkQmApSlx0LwdVlKgmr/IpMzqB92gQHr7p5w/gT+bt4E7mDe4VEjJzd/MXGr8Sj3djf3Rt/c9dsW4gyHL9327vHu4W9H/7sP14/udBUnF1Cp4NzXz3N6EmgZlhAGpFAWihKOUOO8IdQU/u6C3aCU+ft0A5Kmj4mp5cvUNI5RCWO3bldZROcK3hdL5WFsuC50/07HTEozRWs93FvknLp7qmqKaOA8gM3xPJ90bmCXyXL2IfDJ6fk03mQW95cjaDhktu3gyWAKuY+pR3ZpnCiXAunbvNiI6OpdEwLEJdV/KM+he4V8x4L/LTIMzbwDLzQT+9074M6DE0JSG/iSi8oMm4Q2ykinlexCilOAmq+Lp/aWTrs8YJR8O+rNlL42SvOpyzCoViIYVB/7R7fLImAoOEJqnAM/zm+eKK9mVZ+Yctdv+qe/XDYM3WlXzIokubLBRQLV79dNFfs71o+Js8Vc2ZIjZaH2giiMtbzwa8nVW4KimvkOm+WsTFNelUwES7ly5xI+BlKFZxXBezdb2F9o/Peic/HPWPbo7OQQrOTEbE3IvQLHdIGyzRcoopYPkxRJUpnDEI3GzowPALuxfH17uDwgtSyl1PyCPtavyS3qU9hxsA44nHhAkFFVeurefyCy1sIRo68EUd3VBtaXUA5FW4qxgVeUQMgzPA5SqKuezXLYaBKBmxtTLA+N8o9V3cvp1g0B9nTjQKvd9z2DKmGBuVvkNSgCmVD6ghMsEptAwQliE0nElJTEMD3kTNsskphid74W3UkeEzotPCoI3MTjlREKRgkaYqBgFDWCIuWi56YS3hjSzKnTE4v06SctYCQloS9VAe/bED9wuuLZvYKuBaOoIwSQ2/lA+o7pHRVFdXfZmRO4truOwPrkiGgGRJkQdqhOYVxYwRSDagigx5wdglHgUSJgvdOAI6q8AJ34NaBaAiHQZeog4I4mFN4JhNejTEWKghI2mMI9W1yXEIuQHze2gRPzQbkNrCQtLWZ4TpgSxWULSbe5XZ8krOqTE6gGLZOMUqWUyXGrN2AUDVoMWUnTEtpkWrp5uTzwAxiZzIn0VDSc1XAmdZ27J9YINpT8tLFfEpVMpwu/Vh1ufdSqAwJwG0KozkfNIaAyRLRq7hOedbEsIUD0PByqsoBg6jCLyxcsDaANTqz5EqC4pa+UD+NCMs6EcNiEB2dI/BbxwDkIaeq5YvyhOGKBnHD/ORVFFhFZcwsTfSklUXKHSqr8oTjKhUfVBOqMTtfuzB5N7AcAlUMtMDCCvvPHmqjCvqKhpOUWtoWj1bAg2GeLCkl5gqh3NZMco5nVaW0ua/NtGOww9DtEx4/vQkq9SMWVKH4euMqn526l0aHfkFphky1hM8gFTHdOIiTiFWb8Mu4owQXYeu40RpmHwDlgKK1lNooFT7pdWVkeYMzCjDOF/AnJJed8ko1f4LVWAyyyDVtpoJVXWwjhK4Y9Pjo9rSLEtnHIAnjUuvi2/gkSofIOv5UgnTZEFoQ3jAYOKqjmCqJZCAhTpUeMlu1+lUXim3wTID2ZQ5l6rI0h6p4TyOfFcDmQbgL3CwWqfdnqSQpldGn4wGS6FmciMDwtH3kJC2xgF1vmfTLYyGz/HFNwIvsAGLV21LJDnzLpHnz4NUJM+fS08stGIYU8x9QYbggx3skR8uT8DBwwtnXNn6Mh7VEThMcpKztESBRWc6cAr8PdCBkhQy/D1f/kcu5WNqBWSCTnLGX+UIL+sUppra0NyPWLd7qhvmHErl6L5K2VrZMUN0ZcQYMlaxFen2nnq5UqOTPBComgqW0iXL3+fDclPbUhatUkd9X5TErOQbs4o7Oggnb6KyJ6EBI8UYeenKYRUc1UdnAzNOyc52B34dRyL5tRIogJAlOhi//usLwuyRTZp/s+V/TSKQ+TAxznI6+7tNrNMcRdHIZ1acDn3PsdxQWNRWeXgfARarEpIVPkMN2VnlK8ximFbq8AKzFupVq3E0m5Wd0Big6L2LTV2l3j6UaltLrdUa7LXU2UaqDLOXdmYzNVZbDJcoDR0RWUf0BnnoI/YSTWV972wlquLOi0E99Mbg67NwxK6p77n159SDyuokoPxOZO4aIG8s95eCjZi8KwfXlBAEk1rLyQALuW4jATngM0BJ+Z7hogwTLVxf427VRJXI2Yxc3tWqkcraOdpywa6gJZHgiI/UopvP6ZdbKWthJ8B8t7AHMd9ohXg5CwtHmObYBr60Fid4eufVmAfRqYiozHxUmllP/mJKc+lrXhLav2oUlEX1a/kL6BsvSAMSpsEQdC8o3FULKPnCCd706dLpbOlN3QG1TAOqnuEmwmjhffWir9w0q7Psqzb/spGVbwU+5NLvTMeorb512UvIG+OYlBXrIBcrDe/C6D60bj0GE+I83mU+ba4QPwKyMEgFHa0m8akqV2QrJ4xz+NRgqnGvGInRUN1/90rfVFXuB8xhcr5QJUMqA5bfewWvlOCV+yIV9udWn4+HAXKwt+bwee+agTpJSv0/kYJQmmC1wKAakOKS3WAXxMn0Bdm6YHLpZwse+yg68AD4bF0y6k631pYf+XIVKldQqLBhjPVs0ks5GNNE3p0MH1uobLakc7bl0OL+mUro2YnsGrc10a32zSxSPP8wA7Uw6svBWFKeG0trq+ExpwlwZQ3H/1xeOsy3c2eNaANA3j7GDsu07vk/l8V+NMWTmfVPAa44/324vVe8/31vZ3/78fzfQ6TF83+xmJ33O8q5XXLCr+75vPcX21H/RCD+XoEtxi15B+SHPko49kZji05gSkqHnu8l0+yCjFz/FI+4K602OwtthL1NPETvOw9V2vQErzTtkLZ8I296nb/TR2f25HaNvjTKl0EoipAyQPbEoOz7oO0mRMoUiEarcFZDHjfRF/DkmlouIYg0aKmp0/yNMorAyy+LUPfvAISMT5hqxjstIDGLe5nRpzSYaQ6np/I6HvKlfaX7b38DdMETbKRZK5Su+Wx5V/L7kEp7p/a4sjvPBg6HkR6OzAowaYFCY5YaktAsYWGzooZAmFgHDW9VIXQzNNgCYvKOVxP6rE/wRef6c/L7fiR4s4GOCYrjVbgY+VQc1JHFYRx6AbOAztntbdpfrVffxRuozBrmIaXssGLPp0KczXdZTAUMMevv+SFG3V29jXm2NoFmkRuzs8ebkFmK9vw41ddm2SZVZd5F6vsXESi06ZySU1dUxfnLufEZBQE1T+BZpLUeghaxtDZ52WKJ05rze4yLaeYqwEQGKznK87ZwITV08PdDXpoXruXqXT7rwoNp6AizCwhvzKifjKWyWR+2UblGOzwZMppYuVF+WWWTSUVNAM7uLXl4c0J9IBW06S5DTtWzZb1jXW2gai0043oCVZURJjQHWb/uzd6Ccvwt8kLSfNEsdlb92ouFqzLStlgzM1OFrapyntXo5hWKsAs3mlme+9IU8cU70uxVEDJfwfIj587ETxXs63K5T3ECxYowc8nXh3xNMLmy0e/MuiycmCNIjfOTfveof3nTP+n38Eb3m7PuaX9w0e2Zm3TyKOu3oOznZ3FyraZkQVvmq/Pb+fnxXBA3NdEZvsen3Vf9a0D2/PLm/Lp/+ePl8dUCrh2iXEIjmrdVGt67hpXNvTyzjDH1BCYUrj6c1SheCbmzvcLCTzBYg52iUheLPCvxkQwKBFhLkX9B1c3NzKmLP8VUWGvbkC0r3KUK9BaYVA+/OWIpUi3Yr2U0Uq6mKbYq52yNq8/WptW6lHKy6FwTz8rg3CVB91nSByZOIxdA7LW3jU5ogn7sWepj+lBp3fWfOHLBCPNULkoOU3fEVi8ErYr/3z5sF+//2d5/jP9/kKQ1lWDBBCMBgxiXhptfvyQ7dnvH2gYF0qOxWtbwQJN9DzMmvVZkv/KS65kvYS4ixdJPx2Uk84La0hJD8AN2zLtm1cLTReQe5WL2jRSzT2wFat35ZTbTA/f/h1AvJvlQdufPuqjzsSX3Mb2PtK7+50PqvN/4/+29vd2i/m8fPP7+28Ok4vq/5C8170RfvARA3QF3GfnsHXTyJ7rer2/AtDAM9xXeAqDvyqy8zqYxNxfEovoKRTx3BzZ3qHNHMoTBkjcEyId7VPPv1NCsaOFrS+2C1kJA3a+aPal40EWsqnY6FpHStyzkufNINJ83F4E3m4tgcpO+IRnL7rkoYZW87yLLdPP7LioaVYclTULNqLdIsqqRVikxPPKZKGYMVRCKyp+VKLxaE1kVk++zMlaXcaOppsmiqb4xDOaVX1ayFvcbywDO9pmLcN4VfyeKOJBlOcXloC8QzmgQpYvMxIu8aytZfn7Zh0VqLSdaZZouX3KdR98gEpJwkRUlt5mUcGZ2QUn+vI46WWhWzQQW2ymZaFbzYx3dZcrGOxk/Hf71F7SB0Hm9upsxcwntGtk1OKbfsB6lRCrP/0i7m/1Agbm99UEmhB/bM3uYtK7/ny13rjMFWOH/t/e3i/d/7e61H+9/fZBU+8RA6UWRehh+8KWZhQMixi565SEbvAXFor4vrxC01EkFC5iNlsTSm+wWnkAQHbL189smPjY71acUXjSzuzianeZV76L5xy9btZHJ+2llizm6VWM1BxpvFq4kM3fJoFUFtPnHOi2DIbWkoclbnm3+Ahk8PFI0N1Mg5AtydX503lG/5i3roo3gEQVXB38fGm+gcWRYEJ4yDSPiR+GIcX2RR/Zj3bcp3u9ik0sWRBP5C88BRj6KCH9TWuQSku/X/3OyYx/u4y9okSFjIeFKFvT51NocVw6FtdhtebLi/9q7ut+0YSD+7r/CIg+VppIGWqbOT2OUTWgdQxRVmqY9UEgpW0sqEtoh7Y+fz2c7zgcirSrWdvd7QG3wR2wudxf77ucyYXhU+08nQC/UCzALlhjLpo17byCvTMzfgvejBbSOk2Rf3NT2L8yM6hjDgzZPGxbSMyeFsgN9ZJdEd79c+1o2xx5p/zXlRTU3YCv/+1He/rfga7L/O0D+FShv2o2H/bI2X3amBBX9FUxQdrpG0a8QDtQYX8fh89YPD33+727HD13+37r/2zxs5df/WxT/vxvk/H/4efUJyTmfvwaiHk+kwyg9JLsqAtu3zZpWGeeQzCVLDKJpWxcuPSSmkszV5a1U1B7GEykZi3Hl3MjR7DVUOTbcVV2cu1FD9isMAtp7k6ZU3cwXbXQD3VCcG+nvLtcbzm0u3pSftuJj1fIDmyvVLB6Uiz6uDcYry/WA64V8jzSoqKr2xPU1d1bxCsYVOf4djMQt7Kflnu05Ga8V1fS/pl99qOLX2KL/D1uNfP5Xo0nnf+0GGJ+vtKI5G1rwcOXPJkvQ8FY85PsXLMHaCwfubmKZNkjGM5Hy/t46of29y36UDJDDlrFseLNw9DNEOAuzR8I8+cqXAFkuEjTqd0TNrxSbhaqLNVcv+GkCCtMloeXsqpaNH/UsZZQum/LmzhdOlpZJ72DmnfU4OA4YSzcuIKuUSe2W9jV1OinaHa9gQ7yMBWk0j7/Mt2rWGhjbGmNOIDsUyqUCCN6SFzcGuBtnFXxnm05gbWOxIbvJJDCAvyy6X/DDgMv7yp/NLtw5L8kalwNXeSy6BBIyCN0N5CRPEjOxOK3qkv0RTXJ0ZHg365reM7rkSlSRO3y6iDV1eImtQ1vpsDYgFyb/GV0tZK3wffh7LF1ixc2lS5iEH0OIDLXrd0HTl8LmX4eJFPfJcn2b+NFydjCVth2WL9Z6vc2h0AEi9Wgl5/VtEMNK3OhUCfxJ/yxouNQ+tqbhgxH8j/z/qya2VYyDUPE0TPZi3sXODVelqS0dHMCH7qden+Pn8KzNB8PeeXvU5Z+739T3trTv52p2+yflNeA3LiN545r4bB8+j/wjVXAy7qRCEuNADEOv3oQHjglHkmJ+fxUu+AoOQbDsYIYw+W4+VT+hlxlepzsc9T72OvI2zaA8MyLPGU5ZuadrjHEUQpRqcxiSURbqIZQNSDcWxHsfk8EUiyoSbKzNpqtZZVWNpTEl6rEZS10KE9J2t+Ni+8TYxrHbGMmc63UlsWntemY3T3W44QgfxoqJOYJ//wFauyz2HQ5rAgnCzAuh/s6E56fn/zDUiKg5h46Nms2Tq9UFPH+pTSqvW9GybRobNqLMWS3wm/47qWpNZcHs+RoCAiP+tTUnEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKB8D/gL4gluy0AyAAA values: image: tag: v1.33.0-dev @@ -21,3 +21,4 @@ spec: resources: - kind: Extension type: shoot-cert-service + workerlessSupported: true diff --git a/go.mod b/go.mod index a39f12758..a106db607 100644 --- a/go.mod +++ b/go.mod @@ -5,21 +5,21 @@ go 1.20 require ( github.com/ahmetb/gen-crd-api-reference-docs v0.3.0 github.com/gardener/cert-management v0.10.1 - github.com/gardener/gardener v1.65.3 - github.com/go-logr/logr v1.2.3 + github.com/gardener/gardener v1.71.2 + github.com/go-logr/logr v1.2.4 github.com/golang/mock v1.6.0 - github.com/onsi/ginkgo/v2 v2.6.1 - github.com/onsi/gomega v1.24.2 + github.com/onsi/ginkgo/v2 v2.9.2 + github.com/onsi/gomega v1.27.6 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 - golang.org/x/tools v0.4.0 - k8s.io/api v0.26.1 - k8s.io/apimachinery v0.26.1 + golang.org/x/tools v0.7.0 + k8s.io/api v0.26.3 + k8s.io/apimachinery v0.26.3 k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible - k8s.io/code-generator v0.26.1 - k8s.io/component-base v0.26.1 + k8s.io/code-generator v0.26.3 + k8s.io/component-base v0.26.3 k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 - sigs.k8s.io/controller-runtime v0.14.4 + sigs.k8s.io/controller-runtime v0.14.6 ) require ( @@ -33,26 +33,26 @@ require ( github.com/cyphar/filepath-securejoin v0.2.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dsnet/compress v0.0.1 // indirect - github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484 // indirect github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/frankban/quicktest v1.14.4 // indirect + github.com/fluent/fluent-operator/v2 v2.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gardener/etcd-druid v0.15.3 // indirect github.com/gardener/hvpa-controller/api v0.5.0 // indirect - github.com/gardener/machine-controller-manager v0.45.0 // indirect + github.com/gardener/machine-controller-manager v0.48.1 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/zapr v1.2.3 // indirect + github.com/go-openapi/errors v0.20.3 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/swag v0.21.1 // indirect - github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gobuffalo/flect v0.3.0 // indirect github.com/gobwas/glob v0.2.3 // 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/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/gnostic v0.6.9 // indirect github.com/google/go-cmp v0.5.9 // indirect @@ -67,7 +67,8 @@ require ( github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -102,35 +103,35 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.7.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/mod v0.7.0 // indirect - golang.org/x/net v0.7.0 // indirect + golang.org/x/crypto v0.6.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/net v0.8.0 // indirect golang.org/x/oauth2 v0.4.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect golang.org/x/time v0.3.0 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03 // indirect + google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.66.4 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - istio.io/api v0.0.0-20221013011440-bc935762d2b9 // indirect - istio.io/client-go v1.15.3 // indirect - k8s.io/apiextensions-apiserver v0.26.1 // indirect - k8s.io/apiserver v0.26.1 // indirect + istio.io/api v0.0.0-20230217221049-9d422bf48675 // indirect + istio.io/client-go v1.17.1 // indirect + k8s.io/apiextensions-apiserver v0.26.3 // indirect + k8s.io/apiserver v0.26.3 // indirect k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0 // indirect k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect k8s.io/helm v2.16.1+incompatible // indirect k8s.io/klog v1.0.0 // indirect - k8s.io/klog/v2 v2.80.1 // indirect - k8s.io/kube-aggregator v0.26.1 // indirect + k8s.io/klog/v2 v2.90.1 // indirect + k8s.io/kube-aggregator v0.26.3 // indirect k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715 // indirect - k8s.io/kubelet v0.26.1 // indirect - k8s.io/metrics v0.26.1 // indirect + k8s.io/kubelet v0.26.3 // indirect + k8s.io/metrics v0.26.3 // indirect sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20221212190805-d4f1e822ca11 // indirect sigs.k8s.io/controller-tools v0.11.3 // indirect sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect diff --git a/go.sum b/go.sum index b67a683ce..1060767a7 100644 --- a/go.sum +++ b/go.sum @@ -87,18 +87,11 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk 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-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/container-storage-interface/spec v1.1.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= -github.com/container-storage-interface/spec v1.2.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/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= @@ -107,11 +100,8 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484 h1:pEtiCjIXx3RvGjlUJuCNxNOw0MNblyR9Wi+vJGBFh+8= -github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= @@ -123,12 +113,11 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m 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.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v0.0.0-20200808040245-162e5629780b/go.mod h1:NAJj0yf/KaRKURN6nyi7A9IZydMivZEm9oQLWNjfKDc= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= @@ -136,8 +125,9 @@ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2Vvl github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= +github.com/fluent/fluent-operator/v2 v2.2.0 h1:97CiP6WKOHRM7zY/zCynX187Rg+T8hgx2JzD2iuJof8= +github.com/fluent/fluent-operator/v2 v2.2.0/go.mod h1:v/q0zLEOWP6MKHP7xvrhtASZTwlrk4LcCne/kgPQ7J0= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -146,12 +136,12 @@ github.com/gardener/cert-management v0.10.1 h1:Y4YYYEaW4SSwPL4OYOqn/HgMekKtSVQ6n github.com/gardener/cert-management v0.10.1/go.mod h1:STtKapgvQVb1gdzLAaBwYXsnlaYzgZXEiMYZO5wWXFE= github.com/gardener/etcd-druid v0.15.3 h1:IMsJTaUaSOXusfgOOF5GX5eJ0o1CI/9XtKzgxwWJ0Eo= github.com/gardener/etcd-druid v0.15.3/go.mod h1:VTxoQXmaE2RSP+LQS5qWUDoXzmdK6xlKLUdFhaGu6KM= -github.com/gardener/gardener v1.65.3 h1:dMVZw6WI1pKooMeFOpydiQhvJ3umgH4nli6gilLPwjs= -github.com/gardener/gardener v1.65.3/go.mod h1:gYzfsgsvmnev6LYAYCLw3QKsvxELVXSXz55Ws1HrOq4= +github.com/gardener/gardener v1.71.2 h1:BTLhaQNxd9zodSwg2B3tkd7h70Vo21Hkg9wAiRe1sH4= +github.com/gardener/gardener v1.71.2/go.mod h1:l6FaKO0wqF2qaUe4Zh05/CYGMNDAOuoqRGfHUnbjQ74= github.com/gardener/hvpa-controller/api v0.5.0 h1:f4F3O7YUrenwh4S3TgPREPiB287JjjUiUL18OqPLyAA= github.com/gardener/hvpa-controller/api v0.5.0/go.mod h1:QQl3ELkCaki+8RhXl0FZMfvnm0WCGwGJlGmrxJj6lvM= -github.com/gardener/machine-controller-manager v0.45.0 h1:rpf0PHRXJMGY93oMruNP+tnMawKJXhhzCACyNJsT8Lo= -github.com/gardener/machine-controller-manager v0.45.0/go.mod h1:+4j/6ab3jqbM6tM6FPtlajYgaJHM0xZ44ErOjCBlsP8= +github.com/gardener/machine-controller-manager v0.48.1 h1:Oxr5e6gRm7P40Ds4nGlga/0nmfF7cH4rOfjthR6Mm38= +github.com/gardener/machine-controller-manager v0.48.1/go.mod h1:Axeu1Oh3agySk0oR4T+FUNax41Ni2K8tuksu8KRHuh0= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -170,10 +160,13 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= +github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc= +github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= 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= @@ -193,20 +186,19 @@ github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/ github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= 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 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= 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= @@ -237,8 +229,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -257,11 +250,9 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/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/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -290,7 +281,7 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= 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= @@ -309,7 +300,6 @@ github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq 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.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= 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.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= @@ -318,7 +308,6 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -347,10 +336,8 @@ 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/kubernetes-csi/csi-lib-utils v0.7.1/go.mod h1:bze+2G9+cmoHxN6+WyG1qT4MDxgZJMLGwc7V4acPNm0= -github.com/kubernetes-csi/csi-test v2.0.0+incompatible/go.mod h1:YxJ4UiuPWIhMBkxUKY5c267DyA0uDZ/MtAimhx/2TA0= -github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4 h1:5k854kIoa81t4A0BhVAXV/VcNKklXwdPyGrvkCDoZC4= -github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4/go.mod h1:2ar8FelpdkUJaoqp8cQpucBd8pir8c1K5BQIVZwUbJI= +github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 h1:nHHjmvjitIiyPlUHk/ofpgvBcNcawJLtf4PYHORLjAA= +github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0/go.mod h1:YBCo4DoEeDndqvAn6eeu0vWM7QdXmHEeI9cFWplmBys= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -386,7 +373,6 @@ github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0Gq 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-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 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= @@ -406,8 +392,6 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= 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.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.2/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.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= @@ -417,8 +401,8 @@ github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47 github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= -github.com/onsi/ginkgo/v2 v2.6.1 h1:1xQPCjcqYw/J5LchOcp4/2q/jzJFjiAOc25chhnDw+Q= -github.com/onsi/ginkgo/v2 v2.6.1/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= 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= @@ -429,8 +413,8 @@ github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeR github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= -github.com/onsi/gomega v1.24.2 h1:J/tulyYK6JwBldPViHJReihxxZ+22FHs0piGjQAvoUE= -github.com/onsi/gomega v1.24.2/go.mod h1:gs3J10IS7Z7r7eXRoNJIrNqU4ToQukCJhFtKrWgHWnk= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= 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/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= @@ -444,7 +428,6 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -474,9 +457,7 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -507,7 +488,6 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ 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/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/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= @@ -564,12 +544,10 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/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-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= 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= @@ -605,8 +583,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20170114055629-f2499483f923/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= @@ -656,8 +634,8 @@ golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= 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= @@ -699,14 +677,12 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w 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-20190726091711-fc99dfbffb4e/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-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-20191022100944-742c48ecaeb7/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-20191220220014-0732a990476f/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= @@ -723,6 +699,7 @@ 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-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-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -752,14 +729,14 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= 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= @@ -772,11 +749,12 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -784,7 +762,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm 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-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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -823,6 +800,7 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY 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= @@ -841,17 +819,14 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= 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/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= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= 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= @@ -890,7 +865,6 @@ google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBr 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-20191220175831-5c49e3ecc1c1/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-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -919,8 +893,8 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03 h1:W70HjnmXFJm+8RNjOpIDYW2nKsSi/af0VvIZUtYkwuU= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55 h1:U1u4KB2kx6KR/aJDjQ97hZ15wQs8ZPvDcGcRynBhkvg= +google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55/go.mod h1:45EK0dUbEZ2NHjCeAd2LXmyjAgGUGrpGROgjhC3ADck= 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.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -940,7 +914,6 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 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.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= 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= @@ -992,41 +965,42 @@ 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= -istio.io/api v0.0.0-20221013011440-bc935762d2b9 h1:oDY95NgV77atZrCMx7i3XaSPL/OSirRI8jWWsiHA4GI= -istio.io/api v0.0.0-20221013011440-bc935762d2b9/go.mod h1:hQkF0Q19MCmfOTre/Sg4KvrwwETq45oaFplnBm2p4j8= -istio.io/client-go v1.15.3 h1:Zyd4ZVYCImWlPs+7yGye//K7l0j4UM06cqmQm5v8JX4= -istio.io/client-go v1.15.3/go.mod h1:7M4mYZ9o9UVQQEwWihAq//EK9Ak0a/pUfOvP7b3I+XM= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= +istio.io/api v0.0.0-20230217221049-9d422bf48675 h1:dxHqYbJwurfq+x2OOG4WP+NkbyjURgcP9PQTsxh7HXM= +istio.io/api v0.0.0-20230217221049-9d422bf48675/go.mod h1:owGDRg9uqMob8CN1gxaOzk6nJxnbT8wrP7PmggpJHHY= +istio.io/client-go v1.17.1 h1:W0kQXYCzIluA/20zLzxeNF7bNMJXXArmGYRt/MIg2io= +istio.io/client-go v1.17.1/go.mod h1:mLTRYYFxHctzUbt8Iclgj+Sueq34+qC2ZEJTn6BxRuE= k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY= -k8s.io/api v0.26.1 h1:f+SWYiPd/GsiWwVRz+NbFyCgvv75Pk9NK6dlkZgpCRQ= +k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg= -k8s.io/apiextensions-apiserver v0.26.1 h1:cB8h1SRk6e/+i3NOrQgSFij1B2S0Y0wDoNl66bn8RMI= -k8s.io/apiextensions-apiserver v0.26.1/go.mod h1:AptjOSXDGuE0JICx/Em15PaoO7buLwTs0dGleIHixSM= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.1-beta.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= +k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= +k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= +k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/apimachinery v0.18.8/go.mod h1:6sQd+iHEqmOtALqOFjSWp2KZ9F0wlU/nWm0ZgsYWMig= -k8s.io/apimachinery v0.26.1 h1:8EZ/eGJL+hY/MYCNwhmDzVqq2lPl3N3Bo8rvweJwXUQ= +k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= -k8s.io/apiserver v0.26.1 h1:6vmnAqCDO194SVCPU3MU8NcDgSqsUA62tBUSWrFXhsc= -k8s.io/apiserver v0.26.1/go.mod h1:wr75z634Cv+sifswE9HlAo5FQ7UoUauIICRlOE+5dCg= +k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= +k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/apiserver v0.26.3 h1:blBpv+yOiozkPH2aqClhJmJY+rp53Tgfac4SKPDJnU4= +k8s.io/apiserver v0.26.3/go.mod h1:CJe/VoQNcXdhm67EvaVjYXxR3QyfwpceKPuPaeLibTA= k8s.io/autoscaler/vertical-pod-autoscaler v0.9.0/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0 h1:pH6AsxeBZcyX6KBqcnl7SPIJqbN1d59RrEBuIE6Rq6c= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0/go.mod h1:LraL5kR2xX7jb4VMCG6/tUH4I75uRHlnzC0VWQHcyWk= k8s.io/client-go v0.26.1 h1:87CXzYJnAMGaa/IDDfRdhTzxk/wzGZ+/HUQpqgVSZXU= k8s.io/client-go v0.26.1/go.mod h1:IWNSglg+rQ3OcvDkhY6+QLeasV4OYHDjdqeWkDQZwGE= -k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= -k8s.io/code-generator v0.26.1 h1:dusFDsnNSKlMFYhzIM0jAO1OlnTN5WYwQQ+Ai12IIlo= -k8s.io/code-generator v0.26.1/go.mod h1:OMoJ5Dqx1wgaQzKgc+ZWaZPfGjdRq/Y3WubFrZmeI3I= -k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= +k8s.io/code-generator v0.19.0/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= +k8s.io/code-generator v0.26.3 h1:DNYPsWoeFwmg4qFg97Z1cHSSv7KSG10mAEIFoZGTQM8= +k8s.io/code-generator v0.26.3/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI= k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k= -k8s.io/component-base v0.26.1 h1:4ahudpeQXHZL5kko+iDHqLj/FSGAEUnSVO0EBbgDd+4= -k8s.io/component-base v0.26.1/go.mod h1:VHrLR0b58oC035w6YQiBSbtsf0ThuSwXP+p5dD/kAWU= +k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g= +k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/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-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20220902162205-c0856e24416d h1:U9tB195lKdzwqicbJvyJeOXV7Klv+wNAWENRnXEGi08= @@ -1040,46 +1014,40 @@ k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= 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.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-aggregator v0.26.1 h1:TqDWwuaUJpyhWGWw4JrXR8ZAAaHa9qrsXxR41aR3igw= -k8s.io/kube-aggregator v0.26.1/go.mod h1:E6dnKoQ6f4eFl8QQXHxTASZKXBX6+XcjROWl7GRltl4= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-aggregator v0.26.3 h1:nc4H5ymGkWPU3c9U9UM468JcmNENY/s/mDYVW3t3uRo= +k8s.io/kube-aggregator v0.26.3/go.mod h1:SgBESB/+PfZAyceTPIanfQ7GtX9G/+mjfUbTHg3Twbo= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715 h1:tBEbstoM+K0FiBV5KGAKQ0kuvf54v/hwpldiJt69w1s= k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/kubelet v0.26.1 h1:wQyCQYmLW6GN3v7gVTxnc3jAE4zMYDlzdF3FZV4rKas= -k8s.io/kubelet v0.26.1/go.mod h1:gFVZ1Ab4XdjtnYdVRATwGwku7FhTxo6LVEZwYoQaDT8= -k8s.io/kubernetes v1.14.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/kubelet v0.26.3 h1:6WT2dX/39cvc3q25xkFmMIT2EoV+gS/8gxZmUiDvG4U= +k8s.io/kubelet v0.26.3/go.mod h1:yd5GJNMOFLMKxP1rmZhg6etbYAbdTimF87fBIBtRimA= k8s.io/metrics v0.18.3/go.mod h1:TkuJE3ezDZ1ym8pYkZoEzJB7HDiFE7qxl+EmExEBoPA= -k8s.io/metrics v0.26.1 h1:iB+QdMLa2V70a7zb0XYEcaUpPM0y+p4fZN0UtxcPHLk= -k8s.io/metrics v0.26.1/go.mod h1:fMeLXmK/xgvckFG63GJ0kDjFiQH7P0Dpi5Lvhlo5DXE= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/metrics v0.26.3 h1:pHI8XtmBbGGdh7bL0s2C3v93fJfxyktHPAFsnRYnDTo= +k8s.io/metrics v0.26.3/go.mod h1:NNnWARAAz+ZJTs75Z66fJTV7jHcVb3GtrlDszSIr3fE= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y= k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= 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/controller-runtime v0.14.4 h1:Kd/Qgx5pd2XUL08eOV2vwIq3L9GhIbJ5Nxengbd4/0M= -sigs.k8s.io/controller-runtime v0.14.4/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= +sigs.k8s.io/controller-runtime v0.14.6 h1:oxstGVvXGNnMvY7TAESYk+lzr6S3V5VFxQ6d92KcwQA= +sigs.k8s.io/controller-runtime v0.14.6/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20221212190805-d4f1e822ca11 h1:Nub5Qwhk4i96Qvpuw1v66g45+UfOPFi3q0npFZCW+7o= sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20221212190805-d4f1e822ca11/go.mod h1:Lm5xRgQejdMHAz81exSpqvwEkIdTfoNtUDA6MM4kltw= sigs.k8s.io/controller-tools v0.11.3 h1:T1xzLkog9saiyQSLz1XOImu4OcbdXWytc5cmYsBeBiE= sigs.k8s.io/controller-tools v0.11.3/go.mod h1:qcfX7jfcfYD/b7lAhvqAyTbt/px4GpvN88WKLFFv7p8= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/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.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/apis/config/v1alpha1/zz_generated.conversion.go b/pkg/apis/config/v1alpha1/zz_generated.conversion.go index ad3ede666..caa84053b 100644 --- a/pkg/apis/config/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/config/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go index b79940c62..2293f9acc 100644 --- a/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/config/v1alpha1/zz_generated.defaults.go b/pkg/apis/config/v1alpha1/zz_generated.defaults.go index 1150161ba..294f63680 100644 --- a/pkg/apis/config/v1alpha1/zz_generated.defaults.go +++ b/pkg/apis/config/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/config/zz_generated.deepcopy.go b/pkg/apis/config/zz_generated.deepcopy.go index 73fb34201..175f52948 100644 --- a/pkg/apis/config/zz_generated.deepcopy.go +++ b/pkg/apis/config/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/service/v1alpha1/zz_generated.conversion.go b/pkg/apis/service/v1alpha1/zz_generated.conversion.go index 14baca8af..0e581692a 100644 --- a/pkg/apis/service/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/service/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/service/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/service/v1alpha1/zz_generated.deepcopy.go index be7bc67a6..e7c6c61ac 100644 --- a/pkg/apis/service/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/service/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/service/v1alpha1/zz_generated.defaults.go b/pkg/apis/service/v1alpha1/zz_generated.defaults.go index f31795e55..441363770 100644 --- a/pkg/apis/service/v1alpha1/zz_generated.defaults.go +++ b/pkg/apis/service/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/service/zz_generated.deepcopy.go b/pkg/apis/service/zz_generated.deepcopy.go index 74addd4e0..1d845498f 100644 --- a/pkg/apis/service/zz_generated.deepcopy.go +++ b/pkg/apis/service/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/controller/healthcheck/add.go b/pkg/controller/healthcheck/add.go index d5409dd89..060431040 100644 --- a/pkg/controller/healthcheck/add.go +++ b/pkg/controller/healthcheck/add.go @@ -64,8 +64,7 @@ func RegisterHealthChecks(mgr manager.Manager, opts healthcheck.DefaultAddArgs) PreCheckFunc: preCheckFunc, }, }, - // TODO(shafeeqes): Remove this condition in a future release. - sets.New[gardencorev1beta1.ConditionType](gardencorev1beta1.ShootSystemComponentsHealthy), + sets.Set[gardencorev1beta1.ConditionType]{}, ) } diff --git a/test/integration/healthcheck/test.go b/test/integration/healthcheck/test.go index f588671ba..5b1e5cf84 100644 --- a/test/integration/healthcheck/test.go +++ b/test/integration/healthcheck/test.go @@ -57,12 +57,5 @@ var _ = ginkgo.Describe("Extension-shoot-cert-service integration test: health c framework.ExpectNoError(err) }, timeout) }) - - ginkgo.Context("Condition type: ShootSystemComponentsHealthy", func() { - f.Serial().Release().CIt(fmt.Sprintf("Extension CRD should contain unhealthy condition due to ManagedResource '%s' is unhealthy", certv1alpha1.CertManagementResourceNameShoot), func(ctx context.Context) { - err := healthcheck.ExtensionHealthCheckWithManagedResource(ctx, timeout, f, "shoot-cert-service", certv1alpha1.CertManagementResourceNameShoot, gardencorev1beta1.ShootSystemComponentsHealthy) - framework.ExpectNoError(err) - }, timeout) - }) }) }) diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/LICENSE b/vendor/github.com/fluent/fluent-operator/v2/LICENSE similarity index 100% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/LICENSE rename to vendor/github.com/fluent/fluent-operator/v2/LICENSE diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfilter_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfilter_types.go new file mode 100644 index 000000000..4cc5ffa56 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfilter_types.go @@ -0,0 +1,149 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "fmt" + "reflect" + "sort" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// FilterSpec defines the desired state of ClusterFilter +type FilterSpec struct { + // A pattern to match against the tags of incoming records. + // It's case-sensitive and support the star (*) character as a wildcard. + Match string `json:"match,omitempty"` + // A regular expression to match against the tags of incoming records. + // Use this option if you want to use the full regex syntax. + MatchRegex string `json:"matchRegex,omitempty"` + // A set of filter plugins in order. + FilterItems []FilterItem `json:"filters,omitempty"` +} + +type FilterItem struct { + // Grep defines Grep Filter configuration. + Grep *filter.Grep `json:"grep,omitempty"` + // RecordModifier defines Record Modifier Filter configuration. + RecordModifier *filter.RecordModifier `json:"recordModifier,omitempty"` + // Kubernetes defines Kubernetes Filter configuration. + Kubernetes *filter.Kubernetes `json:"kubernetes,omitempty"` + // Modify defines Modify Filter configuration. + Modify *filter.Modify `json:"modify,omitempty"` + // Nest defines Nest Filter configuration. + Nest *filter.Nest `json:"nest,omitempty"` + // Parser defines Parser Filter configuration. + Parser *filter.Parser `json:"parser,omitempty"` + // Lua defines Lua Filter configuration. + Lua *filter.Lua `json:"lua,omitempty"` + // Throttle defines a Throttle configuration. + Throttle *filter.Throttle `json:"throttle,omitempty"` + // RewriteTag defines a RewriteTag configuration. + RewriteTag *filter.RewriteTag `json:"rewriteTag,omitempty"` + // Aws defines a Aws configuration. + AWS *filter.AWS `json:"aws,omitempty"` + // Multiline defines a Multiline configuration. + Multiline *filter.Multiline `json:"multiline,omitempty"` + // CustomPlugin defines a Custom plugin configuration. + CustomPlugin *custom.CustomPlugin `json:"customPlugin,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=cfbf,scope=Cluster +// +genclient +// +genclient:nonNamespaced + +// ClusterFilter defines a cluster-level Filter configuration. +type ClusterFilter struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // Specification of desired Filter configuration. + Spec FilterSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// ClusterFilterList contains a list of ClusterFilter +type ClusterFilterList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ClusterFilter `json:"items"` +} + +// +kubebuilder:object:generate:=false + +// FilterByName implements sort.Interface for []ClusterFilter based on the Name field. +type FilterByName []ClusterFilter + +func (a FilterByName) Len() int { return len(a) } +func (a FilterByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a FilterByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +func (list ClusterFilterList) Load(sl plugins.SecretLoader) (string, error) { + var buf bytes.Buffer + + sort.Sort(FilterByName(list.Items)) + + for _, item := range list.Items { + merge := func(p plugins.Plugin) error { + if p == nil || reflect.ValueOf(p).IsNil() { + return nil + } + + buf.WriteString("[Filter]\n") + if p.Name() != "" { + buf.WriteString(fmt.Sprintf(" Name %s\n", p.Name())) + } + if item.Spec.Match != "" { + buf.WriteString(fmt.Sprintf(" Match %s\n", item.Spec.Match)) + } + if item.Spec.MatchRegex != "" { + buf.WriteString(fmt.Sprintf(" Match_Regex %s\n", item.Spec.MatchRegex)) + } + kvs, err := p.Params(sl) + if err != nil { + return err + } + buf.WriteString(kvs.String()) + return nil + } + + for _, elem := range item.Spec.FilterItems { + for i := 0; i < reflect.ValueOf(elem).NumField(); i++ { + p, _ := reflect.ValueOf(elem).Field(i).Interface().(plugins.Plugin) + if err := merge(p); err != nil { + return "", err + } + } + } + } + + return buf.String(), nil +} + +func init() { + SchemeBuilder.Register(&ClusterFilter{}, &ClusterFilterList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfluentbitconfig_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfluentbitconfig_types.go new file mode 100644 index 000000000..743852d9c --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterfluentbitconfig_types.go @@ -0,0 +1,305 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "fmt" + "sort" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// FluentBitConfigSpec defines the desired state of ClusterFluentBitConfig +type FluentBitConfigSpec struct { + // Service defines the global behaviour of the Fluent Bit engine. + Service *Service `json:"service,omitempty"` + // Select input plugins + InputSelector metav1.LabelSelector `json:"inputSelector,omitempty"` + // Select filter plugins + FilterSelector metav1.LabelSelector `json:"filterSelector,omitempty"` + // Select output plugins + OutputSelector metav1.LabelSelector `json:"outputSelector,omitempty"` + // Select parser plugins + ParserSelector metav1.LabelSelector `json:"parserSelector,omitempty"` + // If namespace is defined, then the configmap and secret for fluent-bit is in this namespace. + // If it is not defined, it is in the namespace of the fluentd-operator + Namespace *string `json:"namespace,omitempty"` +} + +type Service struct { + // If true go to background on start + Daemon *bool `json:"daemon,omitempty"` + // Interval to flush output + FlushSeconds *int64 `json:"flushSeconds,omitempty"` + // Wait time on exit + GraceSeconds *int64 `json:"graceSeconds,omitempty"` + // the error count to meet the unhealthy requirement, this is a sum for all output plugins in a defined HC_Period, example for output error: [2022/02/16 10:44:10] [ warn] [engine] failed to flush chunk '1-1645008245.491540684.flb', retry in 7 seconds: task_id=0, input=forward.1 > output=cloudwatch_logs.3 (out_id=3) + // +kubebuilder:validation:Minimum:=1 + HcErrorsCount *int64 `json:"hcErrorsCount,omitempty"` + // the retry failure count to meet the unhealthy requirement, this is a sum for all output plugins in a defined HC_Period, example for retry failure: [2022/02/16 20:11:36] [ warn] [engine] chunk '1-1645042288.260516436.flb' cannot be retried: task_id=0, input=tcp.3 > output=cloudwatch_logs.1 + // +kubebuilder:validation:Minimum:=1 + HcRetryFailureCount *int64 `json:"hcRetryFailureCount,omitempty"` + // The time period by second to count the error and retry failure data point + // +kubebuilder:validation:Minimum:=1 + HcPeriod *int64 `json:"hcPeriod,omitempty"` + // enable Health check feature at http://127.0.0.1:2020/api/v1/health Note: Enabling this will not automatically configure kubernetes to use fluentbit's healthcheck endpoint + HealthCheck *bool `json:"healthCheck,omitempty"` + // Address to listen + // +kubebuilder:validation:Pattern:="^\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}$" + HttpListen string `json:"httpListen,omitempty"` + // Port to listen + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + HttpPort *int32 `json:"httpPort,omitempty"` + // If true enable statistics HTTP server + HttpServer *bool `json:"httpServer,omitempty"` + // File to log diagnostic output + LogFile string `json:"logFile,omitempty"` + // Diagnostic level (error/warning/info/debug/trace) + // +kubebuilder:validation:Enum:=error;warning;info;debug;trace + LogLevel string `json:"logLevel,omitempty"` + // Optional 'parsers' config file (can be multiple) + ParsersFile string `json:"parsersFile,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=cfbc,scope=Cluster +// +genclient +// +genclient:nonNamespaced + +// ClusterFluentBitConfig is the Schema for the cluster-level fluentbitconfigs API +type ClusterFluentBitConfig struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec FluentBitConfigSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// ClusterFluentBitConfigList contains a list of ClusterFluentBitConfig +type ClusterFluentBitConfigList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ClusterFluentBitConfig `json:"items"` +} + +func init() { + SchemeBuilder.Register(&ClusterFluentBitConfig{}, &ClusterFluentBitConfigList{}) +} + +func (s *Service) Params() *params.KVs { + m := params.NewKVs() + if s.Daemon != nil { + m.Insert("Daemon", fmt.Sprint(*s.Daemon)) + } + if s.FlushSeconds != nil { + m.Insert("Flush", fmt.Sprint(*s.FlushSeconds)) + } + if s.GraceSeconds != nil { + m.Insert("Grace", fmt.Sprint(*s.GraceSeconds)) + } + if s.HcErrorsCount != nil { + m.Insert("HC_Errors_Count", fmt.Sprint(*s.HcErrorsCount)) + } + if s.HcRetryFailureCount != nil { + m.Insert("HC_Retry_Failure_Count", fmt.Sprint(*s.HcRetryFailureCount)) + } + if s.HcPeriod != nil { + m.Insert("HC_Period", fmt.Sprint(*s.HcPeriod)) + } + if s.HealthCheck != nil { + m.Insert("Health_Check", fmt.Sprint(*s.HealthCheck)) + } + if s.HttpListen != "" { + m.Insert("Http_Listen", s.HttpListen) + } + if s.HttpPort != nil { + m.Insert("Http_Port", fmt.Sprint(*s.HttpPort)) + } + if s.HttpServer != nil { + m.Insert("Http_Server", fmt.Sprint(*s.HttpServer)) + } + if s.LogFile != "" { + m.Insert("Log_File", s.LogFile) + } + if s.LogLevel != "" { + m.Insert("Log_Level", s.LogLevel) + } + if s.ParsersFile != "" { + m.Insert("Parsers_File", s.ParsersFile) + } + return m +} + +func (cfg ClusterFluentBitConfig) RenderMainConfig(sl plugins.SecretLoader, inputs ClusterInputList, filters ClusterFilterList, + outputs ClusterOutputList, nsFilterLists []FilterList, nsOutputLists []OutputList, rewriteTagConfigs []string) (string, error) { + var buf bytes.Buffer + + // The Service defines the global behaviour of the Fluent Bit engine. + if cfg.Spec.Service != nil { + buf.WriteString("[Service]\n") + buf.WriteString(cfg.Spec.Service.Params().String()) + } + + inputSections, err := inputs.Load(sl) + if err != nil { + return "", err + } + + filterSections, err := filters.Load(sl) + if err != nil { + return "", err + } + + var nsFilterSections []string + for _, nsFilterList := range nsFilterLists { + if len(nsFilterList.Items) == 0 { + continue + } + if nsFilterList.Items != nil { + ns := nsFilterList.Items[0].Namespace + namespacedSl := plugins.NewSecretLoader(sl.Client, ns) + filters, err := nsFilterList.Load(namespacedSl) + if err != nil { + return "", err + } + nsFilterSections = append(nsFilterSections, filters) + } + } + + outputSections, err := outputs.Load(sl) + if err != nil { + return "", err + } + var nsOutputSections []string + for _, nsOutputList := range nsOutputLists { + if len(nsOutputList.Items) == 0 { + continue + } + // The lists are per namespace, so get the namespace from the first item in a list + if nsOutputList.Items != nil { + ns := nsOutputList.Items[0].Namespace + namespacedSl := plugins.NewSecretLoader(sl.Client, ns) + outputs, err := nsOutputList.Load(namespacedSl) + if err != nil { + return "", err + } + nsOutputSections = append(nsOutputSections, outputs) + } + } + + if inputSections != "" && outputSections == "" && nsOutputSections == nil { + outputSections = `[Output] + Name null + Match *` + } + + buf.WriteString(inputSections) + buf.WriteString(filterSections) + for _, rtc := range rewriteTagConfigs { + buf.WriteString(rtc) + } + for _, filters := range nsFilterSections { + buf.WriteString(filters) + } + for _, outputs := range nsOutputSections { + buf.WriteString(outputs) + } + buf.WriteString(outputSections) + + return buf.String(), nil +} + +func (cfg ClusterFluentBitConfig) RenderParserConfig(sl plugins.SecretLoader, parsers ClusterParserList, nsParserLists []ParserList, + nsClusterParserLists []ClusterParserList) (string, error) { + var buf bytes.Buffer + + parserSections, err := parsers.Load(sl) + if err != nil { + return "", err + } + + buf.WriteString(parserSections) + + for _, parserListPerNS := range nsParserLists { + if len(parserListPerNS.Items) == 0 { + continue + } + if parserListPerNS.Items != nil { + ns := parserListPerNS.Items[0].Namespace + namespacedSl := plugins.NewSecretLoader(sl.Client, ns) + nsParserSections, err := parserListPerNS.Load(namespacedSl) + if err != nil { + return "", err + } + buf.WriteString(nsParserSections) + } + } + + for _, item := range nsClusterParserLists { + nsClusterParserSections, err := item.Load(sl) + if err != nil { + return "", err + } + buf.WriteString(nsClusterParserSections) + } + + return buf.String(), nil +} + +// +kubebuilder:object:generate:=false + +type Script struct { + Name string + Content string +} + +// +kubebuilder:object:generate:=false + +// ByName implements sort.Interface for []Script based on the Name field. +type ByName []Script + +func (a ByName) Len() int { return len(a) } +func (a ByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a ByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +func (cfg ClusterFluentBitConfig) RenderLuaScript(cl plugins.ConfigMapLoader, filters ClusterFilterList, namespace string) ([]Script, error) { + + scripts := make([]Script, 0) + for _, f := range filters.Items { + for _, p := range f.Spec.FilterItems { + if p.Lua != nil { + script, err := cl.LoadConfigMap(p.Lua.Script, namespace) + if err != nil { + return nil, err + } + scripts = append(scripts, Script{Name: p.Lua.Script.Key, Content: script}) + } + } + } + + sort.Sort(ByName(scripts)) + + return scripts, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterinput_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterinput_types.go new file mode 100644 index 000000000..b234d62a7 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterinput_types.go @@ -0,0 +1,125 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "fmt" + "reflect" + "sort" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// InputSpec defines the desired state of ClusterInput +type InputSpec struct { + // A user friendly alias name for this input plugin. + // Used in metrics for distinction of each configured input. + Alias string `json:"alias,omitempty"` + // Dummy defines Dummy Input configuration. + Dummy *input.Dummy `json:"dummy,omitempty"` + // Tail defines Tail Input configuration. + Tail *input.Tail `json:"tail,omitempty"` + // Systemd defines Systemd Input configuration. + Systemd *input.Systemd `json:"systemd,omitempty"` + // NodeExporterMetrics defines Node Exporter Metrics Input configuration. + NodeExporterMetrics *input.NodeExporterMetrics `json:"nodeExporterMetrics,omitempty"` + // PrometheusScrapeMetrics defines Prometheus Scrape Metrics Input configuration. + PrometheusScrapeMetrics *input.PrometheusScrapeMetrics `json:"prometheusScrapeMetrics,omitempty"` + // FluentBitMetrics defines Fluent Bit Metrics Input configuration. + FluentBitMetrics *input.FluentbitMetrics `json:"fluentBitMetrics,omitempty"` + // CustomPlugin defines Custom Input configuration. + CustomPlugin *custom.CustomPlugin `json:"customPlugin,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=cfbi,scope=Cluster +// +genclient +// +genclient:nonNamespaced + +// ClusterInput is the Schema for the inputs API +type ClusterInput struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec InputSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:generate:=false +// InputByName implements sort.Interface for []ClusterInput based on the Name field. +type InputByName []ClusterInput + +func (a InputByName) Len() int { return len(a) } +func (a InputByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a InputByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +// +kubebuilder:object:root=true + +// ClusterInputList contains a list of ClusterInput +type ClusterInputList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ClusterInput `json:"items"` +} + +func (list ClusterInputList) Load(sl plugins.SecretLoader) (string, error) { + var buf bytes.Buffer + + sort.Sort(InputByName(list.Items)) + + for _, item := range list.Items { + merge := func(p plugins.Plugin) error { + if p == nil || reflect.ValueOf(p).IsNil() { + return nil + } + + buf.WriteString("[Input]\n") + if p.Name() != "" { + buf.WriteString(fmt.Sprintf(" Name %s\n", p.Name())) + } + if item.Spec.Alias != "" { + buf.WriteString(fmt.Sprintf(" Alias %s\n", item.Spec.Alias)) + } + kvs, err := p.Params(sl) + if err != nil { + return err + } + buf.WriteString(kvs.String()) + return nil + } + + for i := 0; i < reflect.ValueOf(item.Spec).NumField(); i++ { + p, _ := reflect.ValueOf(item.Spec).Field(i).Interface().(plugins.Plugin) + if err := merge(p); err != nil { + return "", err + } + } + } + + return buf.String(), nil +} + +func init() { + SchemeBuilder.Register(&ClusterInput{}, &ClusterInputList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusteroutput_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusteroutput_types.go new file mode 100644 index 000000000..19b913391 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusteroutput_types.go @@ -0,0 +1,172 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "fmt" + "reflect" + "sort" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// OutputSpec defines the desired state of ClusterOutput +type OutputSpec struct { + // A pattern to match against the tags of incoming records. + // It's case sensitive and support the star (*) character as a wildcard. + Match string `json:"match,omitempty"` + // A regular expression to match against the tags of incoming records. + // Use this option if you want to use the full regex syntax. + MatchRegex string `json:"matchRegex,omitempty"` + // A user friendly alias name for this output plugin. + // Used in metrics for distinction of each configured output. + Alias string `json:"alias,omitempty"` + // AzureBlob defines AzureBlob Output Configuration + AzureBlob *output.AzureBlob `json:"azureBlob,omitempty"` + // AzureLogAnalytics defines AzureLogAnalytics Output Configuration + AzureLogAnalytics *output.AzureLogAnalytics `json:"azureLogAnalytics,omitempty"` + // CloudWatch defines CloudWatch Output Configuration + CloudWatch *output.CloudWatch `json:"cloudWatch,omitempty"` + // RetryLimit represents configuration for the scheduler which can be set independently on each output section. + // This option allows to disable retries or impose a limit to try N times and then discard the data after reaching that limit. + RetryLimit string `json:"retry_limit,omitempty"` + // Elasticsearch defines Elasticsearch Output configuration. + Elasticsearch *output.Elasticsearch `json:"es,omitempty"` + // File defines File Output configuration. + File *output.File `json:"file,omitempty"` + // Forward defines Forward Output configuration. + Forward *output.Forward `json:"forward,omitempty"` + // HTTP defines HTTP Output configuration. + HTTP *output.HTTP `json:"http,omitempty"` + // Kafka defines Kafka Output configuration. + Kafka *output.Kafka `json:"kafka,omitempty"` + // Null defines Null Output configuration. + Null *output.Null `json:"null,omitempty"` + // Stdout defines Stdout Output configuration. + Stdout *output.Stdout `json:"stdout,omitempty"` + // TCP defines TCP Output configuration. + TCP *output.TCP `json:"tcp,omitempty"` + // Loki defines Loki Output configuration. + Loki *output.Loki `json:"loki,omitempty"` + // Syslog defines Syslog Output configuration. + Syslog *output.Syslog `json:"syslog,omitempty"` + // DataDog defines DataDog Output configuration. + DataDog *output.DataDog `json:"datadog,omitempty"` + // Firehose defines Firehose Output configuration. + Fireose *output.Firehose `json:"firehose,omitempty"` + // Stackdriver defines Stackdriver Output Configuration + Stackdriver *output.Stackdriver `json:"stackdriver,omitempty"` + // Splunk defines Splunk Output Configuration + Splunk *output.Splunk `json:"splunk,omitempty"` + // OpenSearch defines OpenSearch Output configuration. + OpenSearch *output.OpenSearch `json:"opensearch,omitempty"` + // OpenTelemetry defines OpenTelemetry Output configuration. + OpenTelemetry *output.OpenTelemetry `json:"opentelemetry,omitempty"` + // PrometheusRemoteWrite_types defines Prometheus Remote Write configuration. + PrometheusRemoteWrite *output.PrometheusRemoteWrite `json:"prometheusRemoteWrite,omitempty"` + // CustomPlugin defines Custom Output configuration. + CustomPlugin *custom.CustomPlugin `json:"customPlugin,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=cfbo,scope=Cluster +// +genclient +// +genclient:nonNamespaced + +// ClusterOutput is the Schema for the cluster-level outputs API +type ClusterOutput struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec OutputSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// ClusterOutputList contains a list of ClusterOutput +type ClusterOutputList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ClusterOutput `json:"items"` +} + +// +kubebuilder:object:generate:=false + +// OutputByName implements sort.Interface for []ClusterOutput based on the Name field. +type OutputByName []ClusterOutput + +func (a OutputByName) Len() int { return len(a) } +func (a OutputByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a OutputByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +func (list ClusterOutputList) Load(sl plugins.SecretLoader) (string, error) { + var buf bytes.Buffer + + sort.Sort(OutputByName(list.Items)) + + for _, item := range list.Items { + merge := func(p plugins.Plugin) error { + if p == nil || reflect.ValueOf(p).IsNil() { + return nil + } + + buf.WriteString("[Output]\n") + if p.Name() != "" { + buf.WriteString(fmt.Sprintf(" Name %s\n", p.Name())) + } + if item.Spec.Match != "" { + buf.WriteString(fmt.Sprintf(" Match %s\n", item.Spec.Match)) + } + if item.Spec.MatchRegex != "" { + buf.WriteString(fmt.Sprintf(" Match_Regex %s\n", item.Spec.MatchRegex)) + } + if item.Spec.Alias != "" { + buf.WriteString(fmt.Sprintf(" Alias %s\n", item.Spec.Alias)) + } + if item.Spec.RetryLimit != "" { + buf.WriteString(fmt.Sprintf(" Retry_Limit %s\n", item.Spec.RetryLimit)) + } + kvs, err := p.Params(sl) + if err != nil { + return err + } + buf.WriteString(kvs.String()) + return nil + } + + for i := 2; i < reflect.ValueOf(item.Spec).NumField(); i++ { + p, _ := reflect.ValueOf(item.Spec).Field(i).Interface().(plugins.Plugin) + if err := merge(p); err != nil { + return "", err + } + } + } + + return buf.String(), nil +} + +func init() { + SchemeBuilder.Register(&ClusterOutput{}, &ClusterOutputList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterparser_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterparser_types.go new file mode 100644 index 000000000..ef4e9c590 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/clusterparser_types.go @@ -0,0 +1,136 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "fmt" + "reflect" + "sort" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// ParserSpec defines the desired state of ClusterParser +type ParserSpec struct { + // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster + // Important: Run "make" to regenerate code after modifying this file + + // JSON defines json parser configuration. + JSON *parser.JSON `json:"json,omitempty"` + // Regex defines regex parser configuration. + Regex *parser.Regex `json:"regex,omitempty"` + // LTSV defines ltsv parser configuration. + LTSV *parser.LSTV `json:"ltsv,omitempty"` + // Logfmt defines logfmt parser configuration. + Logfmt *parser.Logfmt `json:"logfmt,omitempty"` + // Decoders are a built-in feature available through the Parsers file, each Parser definition can optionally set one or multiple decoders. + // There are two type of decoders type: Decode_Field and Decode_Field_As. + Decoders []Decorder `json:"decoders,omitempty"` +} + +type Decorder struct { + // If the content can be decoded in a structured message, + // append that structure message (keys and values) to the original log message. + DecodeField string `json:"decodeField,omitempty"` + // Any content decoded (unstructured or structured) will be replaced in the same key/value, + // no extra keys are added. + DecodeFieldAs string `json:"decodeFieldAs,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=cfbp,scope=Cluster +// +genclient +// +genclient:nonNamespaced + +// ClusterParser is the Schema for the cluster-level parsers API +type ClusterParser struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ParserSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// ClusterParserList contains a list of ClusterParser +type ClusterParserList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ClusterParser `json:"items"` +} + +// +kubebuilder:object:generate:=false + +// ParserByName implements sort.Interface for []ClusterParser based on the Name field. +type ParserByName []ClusterParser + +func (a ParserByName) Len() int { return len(a) } +func (a ParserByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a ParserByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +func (list ClusterParserList) Load(sl plugins.SecretLoader) (string, error) { + var buf bytes.Buffer + + sort.Sort(ParserByName(list.Items)) + + for _, item := range list.Items { + merge := func(p plugins.Plugin) error { + if p == nil || reflect.ValueOf(p).IsNil() { + return nil + } + + buf.WriteString("[PARSER]\n") + buf.WriteString(fmt.Sprintf(" Name %s\n", item.Name)) + buf.WriteString(fmt.Sprintf(" Format %s\n", p.Name())) + + kvs, err := p.Params(sl) + if err != nil { + return err + } + buf.WriteString(kvs.String()) + + for _, decorder := range item.Spec.Decoders { + if decorder.DecodeField != "" { + buf.WriteString(fmt.Sprintf(" Decode_Field %s\n", decorder.DecodeField)) + } + if decorder.DecodeFieldAs != "" { + buf.WriteString(fmt.Sprintf(" Decode_Field_As %s\n", decorder.DecodeFieldAs)) + } + } + return nil + } + + for i := 0; i < reflect.ValueOf(item.Spec).NumField()-1; i++ { + p, _ := reflect.ValueOf(item.Spec).Field(i).Interface().(plugins.Plugin) + if err := merge(p); err != nil { + return "", err + } + } + } + + return buf.String(), nil +} + +func init() { + SchemeBuilder.Register(&ClusterParser{}, &ClusterParserList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/collector_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/collector_types.go new file mode 100644 index 000000000..79c1c30d7 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/collector_types.go @@ -0,0 +1,145 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + corev1 "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/fluent/fluent-operator/v2/pkg/utils" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// CollectorSpec defines the desired state of FluentBit +type CollectorSpec struct { + // Fluent Bit image. + Image string `json:"image,omitempty"` + // Fluent Bit Watcher command line arguments. + Args []string `json:"args,omitempty"` + // Fluent Bit image pull policy. + ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"` + // Fluent Bit image pull secret + ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` + // Compute Resources required by container. + Resources corev1.ResourceRequirements `json:"resources,omitempty"` + // NodeSelector + NodeSelector map[string]string `json:"nodeSelector,omitempty"` + // Pod's scheduling constraints. + Affinity *corev1.Affinity `json:"affinity,omitempty"` + // Tolerations + Tolerations []corev1.Toleration `json:"tolerations,omitempty"` + // Fluentbitconfig object associated with this Fluentbit + FluentBitConfigName string `json:"fluentBitConfigName,omitempty"` + // The Secrets are mounted into /fluent-bit/secrets/. + Secrets []string `json:"secrets,omitempty"` + // RuntimeClassName represents the container runtime configuration. + RuntimeClassName string `json:"runtimeClassName,omitempty"` + // PriorityClassName represents the pod's priority class. + PriorityClassName string `json:"priorityClassName,omitempty"` + // List of volumes that can be mounted by containers belonging to the pod. + Volumes []corev1.Volume `json:"volumes,omitempty"` + // Pod volumes to mount into the container's filesystem. + VolumesMounts []corev1.VolumeMount `json:"volumesMounts,omitempty"` + // Annotations to add to each Fluentbit pod. + Annotations map[string]string `json:"annotations,omitempty"` + // Annotations to add to the Fluentbit service account + ServiceAccountAnnotations map[string]string `json:"serviceAccountAnnotations,omitempty"` + // SecurityContext holds pod-level security attributes and common container settings. + SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"` + // Host networking is 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. + HostNetwork bool `json:"hostNetwork,omitempty"` + // PVC definition + PersistentVolumeClaim *corev1.PersistentVolumeClaim `json:"pvc,omitempty"` + // RBACRules represents additional rbac rules which will be applied to the fluent-bit clusterrole. + RBACRules []rbacv1.PolicyRule `json:"rbacRules,omitempty"` + // By default will build the related service according to the globalinputs definition. + DisableService bool `json:"disableService,omitempty"` + // The path where buffer chunks are stored. + BufferPath *string `json:"bufferPath,omitempty"` + // Ports represents the pod's ports. + Ports []corev1.ContainerPort `json:"ports,omitempty"` + // Service represents configurations on the fluent-bit service. + Service CollectorService `json:"service,omitempty"` +} + +// CollectorService defines the service of the FluentBit +type CollectorService struct { + // Name is the name of the FluentBit service. + Name string `json:"name,omitempty"` + // Annotations to add to each Fluentbit service. + Annotations map[string]string `json:"annotations,omitempty"` + // Labels to add to each FluentBit service + Labels map[string]string `json:"labels,omitempty"` +} + +// CollectorStatus defines the observed state of FluentBit +type CollectorStatus struct { + // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster + // Important: Run "make" to regenerate code after modifying this file +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=co +// +genclient + +// Collector is the Schema for the fluentbits API +type Collector struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec CollectorSpec `json:"spec,omitempty"` + Status CollectorStatus `json:"status,omitempty"` +} + +// IsBeingDeleted returns true if a deletion timestamp is set +func (co *Collector) IsBeingDeleted() bool { + return !co.ObjectMeta.DeletionTimestamp.IsZero() +} + +// CollectorFinalizerName is the name of the fluentbit finalizer +const CollectorFinalizerName = "collector.fluent.io" + +// HasFinalizer returns true if the item has the specified finalizer +func (co *Collector) HasFinalizer(finalizerName string) bool { + return utils.ContainString(co.ObjectMeta.Finalizers, finalizerName) +} + +// AddFinalizer adds the specified finalizer +func (co *Collector) AddFinalizer(finalizerName string) { + co.ObjectMeta.Finalizers = append(co.ObjectMeta.Finalizers, finalizerName) +} + +// RemoveFinalizer removes the specified finalizer +func (co *Collector) RemoveFinalizer(finalizerName string) { + co.ObjectMeta.Finalizers = utils.RemoveString(co.ObjectMeta.Finalizers, finalizerName) +} + +// +kubebuilder:object:root=true + +// CollectorList contains a list of Collector +type CollectorList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Collector `json:"items"` +} + +func init() { + SchemeBuilder.Register(&Collector{}, &CollectorList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/doc.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/doc.go new file mode 100644 index 000000000..f98946ac5 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/doc.go @@ -0,0 +1,19 @@ +/* + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package +// +groupName=fluentbit.fluent.io + +package v1alpha2 // Package v1alpha2 import "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2" diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/filter_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/filter_types.go new file mode 100644 index 000000000..1a62c36cc --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/filter_types.go @@ -0,0 +1,132 @@ +/* +Copyright 2023. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "crypto/md5" + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom" + "github.com/fluent/fluent-operator/v2/pkg/utils" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "reflect" + "sort" + "strings" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=fbf +// +genclient + +// Filter is the Schema for namespace level filter API +type Filter struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec FilterSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// FilterList contains a list of Filters +type FilterList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Filter `json:"items"` +} + +type NSFilterByName []Filter + +func (a NSFilterByName) Len() int { return len(a) } +func (a NSFilterByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a NSFilterByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +func (list FilterList) Load(sl plugins.SecretLoader) (string, error) { + var buf bytes.Buffer + + sort.Sort(NSFilterByName(list.Items)) + + for _, item := range list.Items { + merge := func(p plugins.Plugin) error { + if p == nil || reflect.ValueOf(p).IsNil() { + return nil + } + + buf.WriteString("[Filter]\n") + if p.Name() != "" { + buf.WriteString(fmt.Sprintf(" Name %s\n", p.Name())) + } + if item.Spec.Match != "" { + buf.WriteString(fmt.Sprintf(" Match %s\n", utils.GenerateNamespacedMatchExpr(item.Namespace, item.Spec.Match))) + } + if item.Spec.MatchRegex != "" { + buf.WriteString(fmt.Sprintf(" Match_Regex %s\n", utils.GenerateNamespacedMatchRegExpr(item.Namespace, item.Spec.MatchRegex))) + } + for _, filter := range item.Spec.FilterItems { + if filter.Kubernetes != nil { + kubeTagPrefix := filter.Kubernetes.KubeTagPrefix + if kubeTagPrefix == "" { + kubeTagPrefix = "kube.var.log.containers." + } + filter.Kubernetes.KubeTagPrefix = fmt.Sprintf("%x.%s", md5.Sum([]byte(item.Namespace)), kubeTagPrefix) + if filter.Kubernetes.RegexParser != "" { + filter.Kubernetes.RegexParser = fmt.Sprintf("%s-%x", filter.Kubernetes.RegexParser, md5.Sum([]byte(item.Namespace))) + } + } + if filter.Parser != nil { + parsers := strings.Split(filter.Parser.Parser, ",") + parserString := "" + for i := range parsers { + parsers[i] = strings.Trim(parsers[i], " ") + parsers[i] = fmt.Sprintf("%s-%x", parsers[i], md5.Sum([]byte(item.Namespace))) + parserString = parserString + parsers[i] + "," + } + parserString = strings.TrimSuffix(parserString, ",") + filter.Parser.Parser = parserString + } + if filter.CustomPlugin != nil && filter.CustomPlugin.Config != "" { + filter.CustomPlugin.Config = custom.MakeCustomConfigNamespaced(filter.CustomPlugin.Config, item.Namespace) + } + } + kvs, err := p.Params(sl) + if err != nil { + return err + } + buf.WriteString(kvs.String()) + return nil + } + + for _, elem := range item.Spec.FilterItems { + for i := 0; i < reflect.ValueOf(elem).NumField(); i++ { + p, _ := reflect.ValueOf(elem).Field(i).Interface().(plugins.Plugin) + if err := merge(p); err != nil { + return "", err + } + } + } + } + + return buf.String(), nil +} + +func init() { + SchemeBuilder.Register(&Filter{}, &FilterList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbit_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbit_types.go new file mode 100644 index 000000000..9f0991347 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbit_types.go @@ -0,0 +1,164 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + corev1 "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/fluent/fluent-operator/v2/pkg/utils" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// FluentBitSpec defines the desired state of FluentBit +type FluentBitSpec struct { + // DisableService tells if the fluentbit service should be deployed. + DisableService bool `json:"disableService,omitempty"` + // Fluent Bit image. + Image string `json:"image,omitempty"` + // Fluent Bit Watcher command line arguments. + Args []string `json:"args,omitempty"` + // Fluent Bit Watcher command. + Command []string `json:"command,omitempty"` + // Fluent Bit image pull policy. + ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"` + // Fluent Bit image pull secret + ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` + // Storage for position db. You will use it if tail input is enabled. + PositionDB corev1.VolumeSource `json:"positionDB,omitempty"` + // Container log path + ContainerLogRealPath string `json:"containerLogRealPath,omitempty"` + // Compute Resources required by container. + Resources corev1.ResourceRequirements `json:"resources,omitempty"` + // NodeSelector + NodeSelector map[string]string `json:"nodeSelector,omitempty"` + // Pod's scheduling constraints. + Affinity *corev1.Affinity `json:"affinity,omitempty"` + // Tolerations + Tolerations []corev1.Toleration `json:"tolerations,omitempty"` + // Fluentbitconfig object associated with this Fluentbit + FluentBitConfigName string `json:"fluentBitConfigName,omitempty"` + // NamespacedFluentBitCfgSelector selects the namespace FluentBitConfig associated with this FluentBit + NamespacedFluentBitCfgSelector metav1.LabelSelector `json:"namespaceFluentBitCfgSelector,omitempty"` + // The Secrets are mounted into /fluent-bit/secrets/. + Secrets []string `json:"secrets,omitempty"` + // RuntimeClassName represents the container runtime configuration. + RuntimeClassName string `json:"runtimeClassName,omitempty"` + // PriorityClassName represents the pod's priority class. + PriorityClassName string `json:"priorityClassName,omitempty"` + // List of volumes that can be mounted by containers belonging to the pod. + Volumes []corev1.Volume `json:"volumes,omitempty"` + // Pod volumes to mount into the container's filesystem. + VolumesMounts []corev1.VolumeMount `json:"volumesMounts,omitempty"` + // Annotations to add to each Fluentbit pod. + Annotations map[string]string `json:"annotations,omitempty"` + // Annotations to add to the Fluentbit service account + ServiceAccountAnnotations map[string]string `json:"serviceAccountAnnotations,omitempty"` + // Labels to add to each FluentBit pod + Labels map[string]string `json:"labels,omitempty"` + // SecurityContext holds pod-level security attributes and common container settings. + SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"` + // Host networking is 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. + HostNetwork bool `json:"hostNetwork,omitempty"` + // EnvVars represent environment variables that can be passed to fluentbit pods. + EnvVars []corev1.EnvVar `json:"envVars,omitempty"` + // LivenessProbe represents the pod's liveness probe. + LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty"` + // ReadinessProbe represents the pod's readiness probe. + ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"` + // InitContainers represents the pod's init containers. + InitContainers []corev1.Container `json:"initContainers,omitempty"` + // Ports represents the pod's ports. + Ports []corev1.ContainerPort `json:"ports,omitempty"` + // RBACRules represents additional rbac rules which will be applied to the fluent-bit clusterrole. + RBACRules []rbacv1.PolicyRule `json:"rbacRules,omitempty"` + // Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are + // 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. + DNSPolicy corev1.DNSPolicy `json:"dnsPolicy,omitempty"` + // MetricsPort is the port used by the metrics server. If this option is set, HttpPort from ClusterFluentBitConfig needs to match this value. Default is 2020. + MetricsPort int32 `json:"metricsPort,omitempty"` + // Service represents configurations on the fluent-bit service. + Service FluentBitService `json:"service,omitempty"` +} + +// FluentBitService defines the service of the FluentBit +type FluentBitService struct { + // Name is the name of the FluentBit service. + Name string `json:"name,omitempty"` + // Annotations to add to each Fluentbit service. + Annotations map[string]string `json:"annotations,omitempty"` + // Labels to add to each FluentBit service + Labels map[string]string `json:"labels,omitempty"` +} + +// FluentBitStatus defines the observed state of FluentBit +type FluentBitStatus struct { + // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster + // Important: Run "make" to regenerate code after modifying this file +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=fb +// +genclient + +// FluentBit is the Schema for the fluentbits API +type FluentBit struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec FluentBitSpec `json:"spec,omitempty"` + Status FluentBitStatus `json:"status,omitempty"` +} + +// IsBeingDeleted returns true if a deletion timestamp is set +func (fb *FluentBit) IsBeingDeleted() bool { + return !fb.ObjectMeta.DeletionTimestamp.IsZero() +} + +// FluentBitFinalizerName is the name of the fluentbit finalizer +const FluentBitFinalizerName = "fluentbit.fluent.io" + +// HasFinalizer returns true if the item has the specified finalizer +func (fb *FluentBit) HasFinalizer(finalizerName string) bool { + return utils.ContainString(fb.ObjectMeta.Finalizers, finalizerName) +} + +// AddFinalizer adds the specified finalizer +func (fb *FluentBit) AddFinalizer(finalizerName string) { + fb.ObjectMeta.Finalizers = append(fb.ObjectMeta.Finalizers, finalizerName) +} + +// RemoveFinalizer removes the specified finalizer +func (fb *FluentBit) RemoveFinalizer(finalizerName string) { + fb.ObjectMeta.Finalizers = utils.RemoveString(fb.ObjectMeta.Finalizers, finalizerName) +} + +// +kubebuilder:object:root=true + +// FluentBitList contains a list of FluentBit +type FluentBitList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FluentBit `json:"items"` +} + +func init() { + SchemeBuilder.Register(&FluentBit{}, &FluentBitList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbitconfig_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbitconfig_types.go new file mode 100644 index 000000000..29a0d0144 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/fluentbitconfig_types.go @@ -0,0 +1,61 @@ +/* +Copyright 2023. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// NamespacedFluentBitCfgSpec defines the desired state of FluentBit +type NamespacedFluentBitCfgSpec struct { + // Select filter plugins + FilterSelector metav1.LabelSelector `json:"filterSelector,omitempty"` + // Select output plugins + OutputSelector metav1.LabelSelector `json:"outputSelector,omitempty"` + // Select parser plugins + ParserSelector metav1.LabelSelector `json:"parserSelector,omitempty"` + // Select cluster level parser config + ClusterParserSelector metav1.LabelSelector `json:"clusterParserSelector,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=fbc +// +genclient + +// FluentBitConfig is the Schema for the API +type FluentBitConfig struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec NamespacedFluentBitCfgSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// FluentBitConfigList contains a list of Collector +type FluentBitConfigList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FluentBitConfig `json:"items"` +} + +func init() { + SchemeBuilder.Register(&FluentBitConfig{}, &FluentBitConfigList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/groupversion_info.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/groupversion_info.go new file mode 100644 index 000000000..fc5cf5d2e --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/groupversion_info.go @@ -0,0 +1,36 @@ +/* +Copyright 2021. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1alpha2 contains API Schema definitions for the logging v1alpha2 API group +// +kubebuilder:object:generate=true +// +groupName=fluentbit.fluent.io +package v1alpha2 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: "fluentbit.fluent.io", Version: "v1alpha2"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/output_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/output_types.go new file mode 100644 index 000000000..9f95a2a0c --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/output_types.go @@ -0,0 +1,111 @@ +/* +Copyright 2023. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom" + "github.com/fluent/fluent-operator/v2/pkg/utils" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "reflect" + "sort" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=fbo +// +genclient + +// Output is the schema for namespace level output API +type Output struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec OutputSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// OutputList contains a list of Outputs +type OutputList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Output `json:"items"` +} + +type NSOutputByName []Output + +func (a NSOutputByName) Len() int { return len(a) } +func (a NSOutputByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a NSOutputByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +func (list OutputList) Load(sl plugins.SecretLoader) (string, error) { + var buf bytes.Buffer + + sort.Sort(NSOutputByName(list.Items)) + + for _, item := range list.Items { + merge := func(p plugins.Plugin) error { + if p == nil || reflect.ValueOf(p).IsNil() { + return nil + } + + buf.WriteString("[Output]\n") + if p.Name() != "" { + buf.WriteString(fmt.Sprintf(" Name %s\n", p.Name())) + } + if item.Spec.Match != "" { + buf.WriteString(fmt.Sprintf(" Match %s\n", utils.GenerateNamespacedMatchExpr(item.Namespace, item.Spec.Match))) + } + if item.Spec.MatchRegex != "" { + buf.WriteString(fmt.Sprintf(" Match_Regex %s\n", utils.GenerateNamespacedMatchRegExpr(item.Namespace, item.Spec.MatchRegex))) + } + if item.Spec.Alias != "" { + buf.WriteString(fmt.Sprintf(" Alias %s\n", item.Spec.Alias)) + } + if item.Spec.RetryLimit != "" { + buf.WriteString(fmt.Sprintf(" Retry_Limit %s\n", item.Spec.RetryLimit)) + } + if item.Spec.CustomPlugin != nil && item.Spec.CustomPlugin.Config != "" { + item.Spec.CustomPlugin.Config = custom.MakeCustomConfigNamespaced(item.Spec.CustomPlugin.Config, item.Namespace) + } + kvs, err := p.Params(sl) + if err != nil { + return err + } + buf.WriteString(kvs.String()) + return nil + } + + for i := 2; i < reflect.ValueOf(item.Spec).NumField(); i++ { + p, _ := reflect.ValueOf(item.Spec).Field(i).Interface().(plugins.Plugin) + if err := merge(p); err != nil { + return "", err + } + } + } + + return buf.String(), nil +} + +func init() { + SchemeBuilder.Register(&Output{}, &OutputList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/parser_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/parser_types.go new file mode 100644 index 000000000..08eb997c8 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/parser_types.go @@ -0,0 +1,104 @@ +/* +Copyright 2023. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "bytes" + "crypto/md5" + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "reflect" + "sort" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// +kubebuilder:object:root=true +// +kubebuilder:resource:shortName=fbp +// +genclient + +// Parser is the Schema for namespace level parser API +type Parser struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ParserSpec `json:"spec,omitempty"` +} + +// +kubebuilder:object:root=true + +// ParserList contains a list of Parsers +type ParserList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Parser `json:"items"` +} + +type NSParserByName []Parser + +func (a NSParserByName) Len() int { return len(a) } +func (a NSParserByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a NSParserByName) Less(i, j int) bool { return a[i].Name < a[j].Name } + +func (list ParserList) Load(sl plugins.SecretLoader) (string, error) { + var buf bytes.Buffer + + sort.Sort(NSParserByName(list.Items)) + + for _, item := range list.Items { + merge := func(p plugins.Plugin) error { + if p == nil || reflect.ValueOf(p).IsNil() { + return nil + } + + buf.WriteString("[PARSER]\n") + buf.WriteString(fmt.Sprintf(" Name %s\n", fmt.Sprintf("%s-%x", item.Name, md5.Sum([]byte(item.Namespace))))) + buf.WriteString(fmt.Sprintf(" Format %s\n", p.Name())) + + kvs, err := p.Params(sl) + if err != nil { + return err + } + buf.WriteString(kvs.String()) + + for _, decorder := range item.Spec.Decoders { + if decorder.DecodeField != "" { + buf.WriteString(fmt.Sprintf(" Decode_Field %s\n", decorder.DecodeField)) + } + if decorder.DecodeFieldAs != "" { + buf.WriteString(fmt.Sprintf(" Decode_Field_As %s\n", decorder.DecodeFieldAs)) + } + } + return nil + } + + for i := 0; i < reflect.ValueOf(item.Spec).NumField()-1; i++ { + p, _ := reflect.ValueOf(item.Spec).Field(i).Interface().(plugins.Plugin) + if err := merge(p); err != nil { + return "", err + } + } + } + + return buf.String(), nil +} + +func init() { + SchemeBuilder.Register(&Parser{}, &ParserList{}) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/common_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/common_types.go new file mode 100644 index 000000000..7951a11cd --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/common_types.go @@ -0,0 +1,26 @@ +package plugins + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +type CommonParams struct { + + // Alias for the plugin + Alias string `json:"alias,omitempty"` + // RetryLimit describes how many times fluent-bit should retry to send data to a specific output. If set to false fluent-bit will try indefinetly. If set to any integer N>0 it will try at most N+1 times. Leading zeros are not allowed (values such as 007, 0150, 01 do not work). If this property is not defined fluent-bit will use the default value: 1. + // +kubebuilder:validation:Pattern="^(((f|F)alse)|(no_limits)|(no_retries)|([1-9]+[0-9]*))$" + RetryLimit string `json:"retryLimit,omitempty"` +} + +func (c *CommonParams) AddCommonParams(kvs *params.KVs) error { + if c.Alias != "" { + kvs.Insert("Alias", c.Alias) + } + if c.RetryLimit != "" { + kvs.Insert("Retry_Limit", c.RetryLimit) + } + return nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/configmap_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/configmap_types.go new file mode 100644 index 000000000..8745f273f --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/configmap_types.go @@ -0,0 +1,35 @@ +package plugins + +import ( + "context" + "fmt" + "github.com/go-openapi/errors" + "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + "strings" +) + +type ConfigMapLoader struct { + client client.Client + namespace string +} + +func NewConfigMapLoader(c client.Client, ns string) ConfigMapLoader { + return ConfigMapLoader{ + client: c, + namespace: ns, + } +} + +func (cl ConfigMapLoader) LoadConfigMap(selector v1.ConfigMapKeySelector, namespace string) (string, error) { + var configMap v1.ConfigMap + if err := cl.client.Get(context.Background(), client.ObjectKey{Name: selector.Name, Namespace: namespace}, &configMap); err != nil { + return "", err + } + + if v, ok := configMap.Data[selector.Key]; !ok { + return "", errors.NotFound(fmt.Sprintf("The key %s is not found.", selector.Key)) + } else { + return strings.TrimSuffix(fmt.Sprintf("%s", v), "\n"), nil + } +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/custom_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/custom_types.go new file mode 100644 index 000000000..fc993933a --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/custom_types.go @@ -0,0 +1,59 @@ +package custom + +import ( + "bytes" + "fmt" + "github.com/fluent/fluent-operator/v2/pkg/utils" + "strings" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// CustomPlugin is used to support filter plugins that are not implemented yet.
+// **For example usage, refer to https://github.com/jjsiv/fluent-operator/blob/master/docs/best-practice/custom-plugin.md** +type CustomPlugin struct { + Config string `json:"config,omitempty"` +} + +func (c *CustomPlugin) Name() string { + return "" +} + +func (a *CustomPlugin) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + kvs.Content = indentation(a.Config) + return kvs, nil +} + +func indentation(str string) string { + splits := strings.Split(str, "\n") + var buf bytes.Buffer + for _, i := range splits { + if i != "" { + buf.WriteString(fmt.Sprintf(" %s\n", strings.TrimSpace(i))) + } + } + return buf.String() +} + +func MakeCustomConfigNamespaced(customConfig string, namespace string) string { + var buf bytes.Buffer + sections := strings.Split(customConfig, "\n") + for _, section := range sections { + section = strings.TrimSpace(section) + idx := strings.LastIndex(section, " ") + if strings.HasPrefix(section, "Match_Regex") { + buf.WriteString(fmt.Sprintf("Match_Regex %s\n", utils.GenerateNamespacedMatchRegExpr(namespace, section[idx+1:]))) + continue + } + if strings.HasPrefix(section, "Match") { + buf.WriteString(fmt.Sprintf("Match %s\n", utils.GenerateNamespacedMatchExpr(namespace, section[idx+1:]))) + continue + } + buf.WriteString(fmt.Sprintf("%s\n", section)) + } + return buf.String() +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/zz_generated.deepcopy.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/zz_generated.deepcopy.go new file mode 100644 index 000000000..9823f1e91 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom/zz_generated.deepcopy.go @@ -0,0 +1,39 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package custom + +import () + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPlugin) DeepCopyInto(out *CustomPlugin) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPlugin. +func (in *CustomPlugin) DeepCopy() *CustomPlugin { + if in == nil { + return nil + } + out := new(CustomPlugin) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/aws_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/aws_types.go new file mode 100644 index 000000000..604962dee --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/aws_types.go @@ -0,0 +1,75 @@ +package filter + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The AWS Filter Enriches logs with AWS Metadata. Currently the plugin adds the EC2 instance ID and availability zone to log records.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/aws-metadata** +type AWS struct { + plugins.CommonParams `json:",inline"` + // Specify which version of the instance metadata service to use. Valid values are 'v1' or 'v2'. + // +kubebuilder:validation:Enum:=v1;v2 + ImdsVersion string `json:"imdsVersion,omitempty"` + // The availability zone; for example, "us-east-1a". Default is true. + AZ *bool `json:"az,omitempty"` + //The EC2 instance ID.Default is true. + EC2InstanceID *bool `json:"ec2InstanceID,omitempty"` + //The EC2 instance type.Default is false. + EC2InstanceType *bool `json:"ec2InstanceType,omitempty"` + //The EC2 instance private ip.Default is false. + PrivateIP *bool `json:"privateIP,omitempty"` + //The EC2 instance image id.Default is false. + AmiID *bool `json:"amiID,omitempty"` + //The account ID for current EC2 instance.Default is false. + AccountID *bool `json:"accountID,omitempty"` + //The hostname for current EC2 instance.Default is false. + HostName *bool `json:"hostName,omitempty"` + //The VPC ID for current EC2 instance.Default is false. + VpcID *bool `json:"vpcID,omitempty"` +} + +func (_ *AWS) Name() string { + return "aws" +} + +func (a *AWS) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := a.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + if a.ImdsVersion != "" { + kvs.Insert("imds_version", a.ImdsVersion) + } + if a.AZ != nil { + kvs.Insert("az", fmt.Sprint(*a.AZ)) + } + if a.EC2InstanceID != nil { + kvs.Insert("ec2_instance_id", fmt.Sprint(*a.EC2InstanceID)) + } + if a.EC2InstanceType != nil { + kvs.Insert("ec2_instance_type", fmt.Sprint(*a.EC2InstanceType)) + } + if a.PrivateIP != nil { + kvs.Insert("private_ip", fmt.Sprint(*a.PrivateIP)) + } + if a.AmiID != nil { + kvs.Insert("ami_id", fmt.Sprint(*a.AmiID)) + } + if a.AccountID != nil { + kvs.Insert("account_id", fmt.Sprint(*a.AccountID)) + } + if a.HostName != nil { + kvs.Insert("hostname", fmt.Sprint(*a.HostName)) + } + if a.VpcID != nil { + kvs.Insert("vpc_id", fmt.Sprint(*a.VpcID)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/grep_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/grep_types.go new file mode 100644 index 000000000..7bcfd61ab --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/grep_types.go @@ -0,0 +1,39 @@ +package filter + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Grep Filter plugin allows to match or exclude specific records based in regular expression patterns.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/grep** +type Grep struct { + plugins.CommonParams `json:",inline"` + // Keep records which field matches the regular expression. + // Value Format: FIELD REGEX + Regex string `json:"regex,omitempty"` + // Exclude records which field matches the regular expression. + // Value Format: FIELD REGEX + Exclude string `json:"exclude,omitempty"` +} + +func (_ *Grep) Name() string { + return "grep" +} + +func (g *Grep) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := g.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + if g.Regex != "" { + kvs.Insert("Regex", g.Regex) + } + if g.Exclude != "" { + kvs.Insert("Exclude", g.Exclude) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/kubernetes_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/kubernetes_types.go new file mode 100644 index 000000000..bd5d89a4f --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/kubernetes_types.go @@ -0,0 +1,191 @@ +package filter + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Kubernetes filter allows to enrich your log files with Kubernetes metadata.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/kubernetes** +type Kubernetes struct { + plugins.CommonParams `json:",inline"` + // Set the buffer size for HTTP client when reading responses from Kubernetes API server. + // +kubebuilder:validation:Pattern:="^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$" + BufferSize string `json:"bufferSize,omitempty"` + // API Server end-point + KubeURL string `json:"kubeURL,omitempty"` + // CA certificate file + KubeCAFile string `json:"kubeCAFile,omitempty"` + // Absolute path to scan for certificate files + KubeCAPath string `json:"kubeCAPath,omitempty"` + // Token file + KubeTokenFile string `json:"kubeTokenFile,omitempty"` + // When the source records comes from Tail input plugin, + // this option allows to specify what's the prefix used in Tail configuration. + KubeTagPrefix string `json:"kubeTagPrefix,omitempty"` + // When enabled, it checks if the log field content is a JSON string map, + // if so, it append the map fields as part of the log structure. + MergeLog *bool `json:"mergeLog,omitempty"` + // When Merge_Log is enabled, the filter tries to assume the log field from the incoming message is a JSON string message + // and make a structured representation of it at the same level of the log field in the map. + // Now if Merge_Log_Key is set (a string name), all the new structured fields taken from the original log content are inserted under the new key. + MergeLogKey string `json:"mergeLogKey,omitempty"` + // When Merge_Log is enabled, trim (remove possible \n or \r) field values. + MergeLogTrim *bool `json:"mergeLogTrim,omitempty"` + // Optional parser name to specify how to parse the data contained in the log key. Recommended use is for developers or testing only. + MergeParser string `json:"mergeParser,omitempty"` + // When Keep_Log is disabled, the log field is removed + // from the incoming message once it has been successfully merged + // (Merge_Log must be enabled as well). + KeepLog *bool `json:"keepLog,omitempty"` + // Debug level between 0 (nothing) and 4 (every detail). + TLSDebug *int32 `json:"tlsDebug,omitempty"` + // When enabled, turns on certificate validation when connecting to the Kubernetes API server. + TLSVerify *bool `json:"tlsVerify,omitempty"` + // When enabled, the filter reads logs coming in Journald format. + UseJournal *bool `json:"useJournal,omitempty"` + // When enabled, metadata will be fetched from K8s when docker_id is changed. + CacheUseDockerId *bool `json:"cacheUseDockerId,omitempty"` + // Set an alternative Parser to process record Tag and extract pod_name, namespace_name, container_name and docker_id. + // The parser must be registered in a parsers file (refer to parser filter-kube-test as an example). + RegexParser string `json:"regexParser,omitempty"` + // Allow Kubernetes Pods to suggest a pre-defined Parser + // (read more about it in Kubernetes Annotations section) + K8SLoggingParser *bool `json:"k8sLoggingParser,omitempty"` + // Allow Kubernetes Pods to exclude their logs from the log processor + // (read more about it in Kubernetes Annotations section). + K8SLoggingExclude *bool `json:"k8sLoggingExclude,omitempty"` + // Include Kubernetes resource labels in the extra metadata. + Labels *bool `json:"labels,omitempty"` + // Include Kubernetes resource annotations in the extra metadata. + Annotations *bool `json:"annotations,omitempty"` + // If set, Kubernetes meta-data can be cached/pre-loaded from files in JSON format in this directory, + // named as namespace-pod.meta + KubeMetaPreloadCacheDir string `json:"kubeMetaPreloadCacheDir,omitempty"` + // If set, use dummy-meta data (for test/dev purposes) + DummyMeta *bool `json:"dummyMeta,omitempty"` + // DNS lookup retries N times until the network start working + DNSRetries *int32 `json:"dnsRetries,omitempty"` + // DNS lookup interval between network status checks + DNSWaitTime *int32 `json:"dnsWaitTime,omitempty"` + // This is an optional feature flag to get metadata information from kubelet + // instead of calling Kube Server API to enhance the log. + // This could mitigate the Kube API heavy traffic issue for large cluster. + UseKubelet *bool `json:"useKubelet,omitempty"` + // kubelet port using for HTTP request, this only works when useKubelet is set to On. + KubeletPort *int32 `json:"kubeletPort,omitempty"` + // kubelet host using for HTTP request, this only works when Use_Kubelet set to On. + KubeletHost string `json:"kubeletHost,omitempty"` + // configurable TTL for K8s cached metadata. By default, it is set to 0 + // which means TTL for cache entries is disabled and cache entries are evicted at random + // when capacity is reached. In order to enable this option, you should set the number to a time interval. + // For example, set this value to 60 or 60s and cache entries which have been created more than 60s will be evicted. + KubeMetaCacheTTL string `json:"kubeMetaCacheTTL,omitempty"` + // configurable 'time to live' for the K8s token. By default, it is set to 600 seconds. + // After this time, the token is reloaded from Kube_Token_File or the Kube_Token_Command. + KubeTokenTTL string `json:"kubeTokenTTL,omitempty"` +} + +func (_ *Kubernetes) Name() string { + return "kubernetes" +} + +func (k *Kubernetes) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := k.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + if k.BufferSize != "" { + kvs.Insert("Buffer_Size", k.BufferSize) + } + if k.KubeURL != "" { + kvs.Insert("Kube_URL", k.KubeURL) + } + if k.KubeCAFile != "" { + kvs.Insert("Kube_CA_File", k.KubeCAFile) + } + if k.KubeCAPath != "" { + kvs.Insert("Kube_CA_Path", k.KubeCAPath) + } + if k.KubeTokenFile != "" { + kvs.Insert("Kube_Token_File", k.KubeTokenFile) + } + if k.KubeTagPrefix != "" { + kvs.Insert("Kube_Tag_Prefix", k.KubeTagPrefix) + } + if k.MergeLog != nil { + kvs.Insert("Merge_Log", fmt.Sprint(*k.MergeLog)) + } + if k.MergeLogKey != "" { + kvs.Insert("Merge_Log_Key", k.MergeLogKey) + } + if k.MergeLogTrim != nil { + kvs.Insert("Merge_Log_Trim", fmt.Sprint(*k.MergeLogTrim)) + } + if k.MergeParser != "" { + kvs.Insert("Merge_Parser", k.MergeParser) + } + if k.KeepLog != nil { + kvs.Insert("Keep_Log", fmt.Sprint(*k.KeepLog)) + } + if k.TLSDebug != nil { + kvs.Insert("tls.debug", fmt.Sprint(*k.TLSDebug)) + } + if k.TLSVerify != nil { + kvs.Insert("tls.verify", fmt.Sprint(*k.TLSVerify)) + } + if k.UseJournal != nil { + kvs.Insert("Use_Journal", fmt.Sprint(*k.UseJournal)) + } + if k.CacheUseDockerId != nil { + kvs.Insert("Cache_Use_Docker_Id", fmt.Sprint(*k.CacheUseDockerId)) + } + if k.RegexParser != "" { + kvs.Insert("Regex_Parser", k.RegexParser) + } + if k.K8SLoggingParser != nil { + kvs.Insert("K8S-Logging.Parser", fmt.Sprint(*k.K8SLoggingParser)) + } + if k.K8SLoggingExclude != nil { + kvs.Insert("K8S-Logging.Exclude", fmt.Sprint(*k.K8SLoggingExclude)) + } + if k.Labels != nil { + kvs.Insert("Labels", fmt.Sprint(*k.Labels)) + } + if k.Annotations != nil { + kvs.Insert("Annotations", fmt.Sprint(*k.Annotations)) + } + if k.KubeMetaPreloadCacheDir != "" { + kvs.Insert("Kube_meta_preload_cache_dir", k.KubeMetaPreloadCacheDir) + } + if k.DummyMeta != nil { + kvs.Insert("Dummy_Meta", fmt.Sprint(*k.DummyMeta)) + } + if k.DNSRetries != nil { + kvs.Insert("DNS_Retries", fmt.Sprint(*k.DNSRetries)) + } + if k.DNSWaitTime != nil { + kvs.Insert("DNS_Wait_Time", fmt.Sprint(*k.DNSWaitTime)) + } + if k.UseKubelet != nil { + kvs.Insert("Use_Kubelet", fmt.Sprint(*k.UseKubelet)) + } + if k.KubeletPort != nil { + kvs.Insert("Kubelet_Port", fmt.Sprint(*k.KubeletPort)) + } + if k.KubeletHost != "" { + kvs.Insert("Kubelet_Host", k.KubeletHost) + } + if k.KubeMetaCacheTTL != "" { + kvs.Insert("Kube_Meta_Cache_TTL", k.KubeMetaCacheTTL) + } + if k.KubeTokenTTL != "" { + kvs.Insert("Kube_Token_TTL", k.KubeTokenTTL) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/lua_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/lua_types.go new file mode 100644 index 000000000..f07fd0a4d --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/lua_types.go @@ -0,0 +1,63 @@ +package filter + +import ( + "strconv" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" + "github.com/fluent/fluent-operator/v2/pkg/utils" + v1 "k8s.io/api/core/v1" +) + +// +kubebuilder:object:generate:=true + +// The Lua Filter allows you to modify the incoming records using custom Lua Scripts.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/lua** +type Lua struct { + plugins.CommonParams `json:",inline"` + // Path to the Lua script that will be used. + Script v1.ConfigMapKeySelector `json:"script"` + // Lua function name that will be triggered to do filtering. + // It's assumed that the function is declared inside the Script defined above. + Call string `json:"call"` + // If these keys are matched, the fields are converted to integer. + // If more than one key, delimit by space. + // Note that starting from Fluent Bit v1.6 integer data types are preserved + // and not converted to double as in previous versions. + TypeIntKey []string `json:"typeIntKey,omitempty"` + // If enabled, Lua script will be executed in protected mode. + // It prevents to crash when invalid Lua script is executed. Default is true. + ProtectedMode *bool `json:"protectedMode,omitempty"` + // By default when the Lua script is invoked, the record timestamp is passed as a + // Floating number which might lead to loss precision when the data is converted back. + // If you desire timestamp precision enabling this option will pass the timestamp as + // a Lua table with keys sec for seconds since epoch and nsec for nanoseconds. + TimeAsTable bool `json:"timeAsTable,omitempty"` +} + +func (l *Lua) Name() string { + return "lua" +} + +func (l *Lua) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := l.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + kvs.Insert("script", "/fluent-bit/config/"+l.Script.Key) + kvs.Insert("call", l.Call) + + if l.TypeIntKey != nil && len(l.TypeIntKey) > 0 { + kvs.Insert("type_int_key", utils.ConcatString(l.TypeIntKey, " ")) + } + + if l.ProtectedMode != nil { + kvs.Insert("protected_mode", strconv.FormatBool(*l.ProtectedMode)) + } + + if l.TimeAsTable { + kvs.Insert("time_as_table", "true") + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/modify_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/modify_types.go new file mode 100644 index 000000000..6c3f7d672 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/modify_types.go @@ -0,0 +1,147 @@ +package filter + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Modify Filter plugin allows you to change records using rules and conditions.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/modify** +type Modify struct { + plugins.CommonParams `json:",inline"` + // All conditions have to be true for the rules to be applied. + Conditions []Condition `json:"conditions,omitempty"` + // Rules are applied in the order they appear, + // with each rule operating on the result of the previous rule. + Rules []Rule `json:"rules,omitempty"` +} + +// +kubebuilder:object:generate:=true + +// The plugin supports the following conditions +type Condition struct { + // Is true if KEY exists + KeyExists string `json:"keyExists,omitempty"` + // Is true if KEY does not exist + KeyDoesNotExist map[string]string `json:"keyDoesNotExist,omitempty"` + // Is true if a key matches regex KEY + AKeyMatches string `json:"aKeyMatches,omitempty"` + // Is true if no key matches regex KEY + NoKeyMatches string `json:"noKeyMatches,omitempty"` + // Is true if KEY exists and its value is VALUE + KeyValueEquals map[string]string `json:"keyValueEquals,omitempty"` + // Is true if KEY exists and its value is not VALUE + KeyValueDoesNotEqual map[string]string `json:"keyValueDoesNotEqual,omitempty"` + // Is true if key KEY exists and its value matches VALUE + KeyValueMatches map[string]string `json:"keyValueMatches,omitempty"` + // Is true if key KEY exists and its value does not match VALUE + KeyValueDoesNotMatch map[string]string `json:"keyValueDoesNotMatch,omitempty"` + // Is true if all keys matching KEY have values that match VALUE + MatchingKeysHaveMatchingValues map[string]string `json:"matchingKeysHaveMatchingValues,omitempty"` + // Is true if all keys matching KEY have values that do not match VALUE + MatchingKeysDoNotHaveMatchingValues map[string]string `json:"matchingKeysDoNotHaveMatchingValues,omitempty"` +} + +// +kubebuilder:object:generate:=true + +// The plugin supports the following rules +type Rule struct { + // Add a key/value pair with key KEY and value VALUE. If KEY already exists, this field is overwritten + Set map[string]string `json:"set,omitempty"` + // Add a key/value pair with key KEY and value VALUE if KEY does not exist + Add map[string]string `json:"add,omitempty"` + // Remove a key/value pair with key KEY if it exists + Remove string `json:"remove,omitempty"` + // Remove all key/value pairs with key matching wildcard KEY + RemoveWildcard string `json:"removeWildcard,omitempty"` + // Remove all key/value pairs with key matching regexp KEY + RemoveRegex string `json:"removeRegex,omitempty"` + // Rename a key/value pair with key KEY to RENAMED_KEY if KEY exists AND RENAMED_KEY does not exist + Rename map[string]string `json:"rename,omitempty"` + // Rename a key/value pair with key KEY to RENAMED_KEY if KEY exists. + // If RENAMED_KEY already exists, this field is overwritten + HardRename map[string]string `json:"hardRename,omitempty"` + // Copy a key/value pair with key KEY to COPIED_KEY if KEY exists AND COPIED_KEY does not exist + Copy map[string]string `json:"copy,omitempty"` + // Copy a key/value pair with key KEY to COPIED_KEY if KEY exists. + // If COPIED_KEY already exists, this field is overwritten + HardCopy map[string]string `json:"hardCopy,omitempty"` +} + +func (*Modify) Name() string { + return "modify" +} + +func (mo *Modify) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := mo.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + for _, c := range mo.Conditions { + if c.KeyExists != "" { + kvs.Insert("Condition", fmt.Sprintf("Key_exists %s", c.KeyExists)) + } + kvs.InsertStringMap(c.KeyDoesNotExist, func(k, v string) (string, string) { + return "Condition", fmt.Sprintf("Key_does_not_exist %s %s", k, v) + }) + if c.AKeyMatches != "" { + kvs.Insert("Condition", fmt.Sprintf("A_key_matches %s", c.AKeyMatches)) + } + if c.NoKeyMatches != "" { + kvs.Insert("Condition", fmt.Sprintf("No_key_matches %s", c.NoKeyMatches)) + } + kvs.InsertStringMap(c.KeyValueEquals, func(k, v string) (string, string) { + return "Condition", fmt.Sprintf("Key_value_equals %s %s", k, v) + }) + kvs.InsertStringMap(c.KeyValueDoesNotEqual, func(k, v string) (string, string) { + return "Condition", fmt.Sprintf("Key_value_does_not_equal %s %s", k, v) + }) + kvs.InsertStringMap(c.KeyValueMatches, func(k, v string) (string, string) { + return "Condition", fmt.Sprintf("Key_value_matches %s %s", k, v) + }) + kvs.InsertStringMap(c.KeyValueDoesNotMatch, func(k, v string) (string, string) { + return "Condition", fmt.Sprintf("Key_value_does_not_match %s %s", k, v) + }) + kvs.InsertStringMap(c.MatchingKeysHaveMatchingValues, func(k, v string) (string, string) { + return "Condition", fmt.Sprintf("Matching_keys_have_matching_values %s %s", k, v) + }) + kvs.InsertStringMap(c.MatchingKeysDoNotHaveMatchingValues, func(k, v string) (string, string) { + return "Condition", fmt.Sprintf("Matching_keys_do_not_have_matching_values %s %s", k, v) + }) + } + for _, r := range mo.Rules { + kvs.InsertStringMap(r.Set, func(k, v string) (string, string) { + return "Set", fmt.Sprintf("%s %s", k, v) + }) + kvs.InsertStringMap(r.Add, func(k, v string) (string, string) { + return "Add", fmt.Sprintf("%s %s", k, v) + }) + if r.Remove != "" { + kvs.Insert("Remove", r.Remove) + } + if r.RemoveWildcard != "" { + kvs.Insert("Remove_wildcard", r.RemoveWildcard) + } + if r.RemoveRegex != "" { + kvs.Insert("Remove_regex", r.RemoveRegex) + } + kvs.InsertStringMap(r.Rename, func(k, v string) (string, string) { + return "Rename", fmt.Sprintf("%s %s", k, v) + }) + kvs.InsertStringMap(r.HardRename, func(k, v string) (string, string) { + return "Hard_rename", fmt.Sprintf("%s %s", k, v) + }) + kvs.InsertStringMap(r.Copy, func(k, v string) (string, string) { + return "Copy", fmt.Sprintf("%s %s", k, v) + }) + kvs.InsertStringMap(r.HardCopy, func(k, v string) (string, string) { + return "Hard_copy", fmt.Sprintf("%s %s", k, v) + }) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/multiline_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/multiline_types.go new file mode 100644 index 000000000..c5ccc7b30 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/multiline_types.go @@ -0,0 +1,46 @@ +package filter + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Multiline Filter helps to concatenate messages that originally belong to one context but were split across multiple records or log lines.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/multiline-stacktrace** +type Multiline struct { + plugins.CommonParams `json:",inline"` + // The Inline struct helps to concatenate messages that originally belong to one context but were split across multiple records or log lines. + *Multi `json:",inline"` +} + +type Multi struct { + // Specify one or multiple Multiline Parsing definitions to apply to the content. + //You can specify multiple multiline parsers to detect different formats by separating them with a comma. + Parser string `json:"parser"` + //Key name that holds the content to process. + //Note that a Multiline Parser definition can already specify the key_content to use, but this option allows to overwrite that value for the purpose of the filter. + KeyContent string `json:"keyContent,omitempty"` +} + +func (_ *Multiline) Name() string { + return "multiline" +} + +func (m *Multiline) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := m.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + if m.Multi != nil { + if m.Multi.Parser != "" { + kvs.Insert("multiline.parser", m.Multi.Parser) + } + if m.Multi.KeyContent != "" { + kvs.Insert("multiline.key_content", m.Multi.KeyContent) + } + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/nest_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/nest_types.go new file mode 100644 index 000000000..d4453634e --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/nest_types.go @@ -0,0 +1,58 @@ +package filter + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Nest Filter plugin allows you to operate on or with nested data. Its modes of operation are "nest" and "lift".
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/nest** +type Nest struct { + plugins.CommonParams `json:",inline"` + // Select the operation nest or lift + // +kubebuilder:validation:Enum:=nest;lift + Operation string `json:"operation,omitempty"` + // Nest records which field matches the wildcard + Wildcard []string `json:"wildcard,omitempty"` + // Nest records matching the Wildcard under this key + NestUnder string `json:"nestUnder,omitempty"` + // Lift records nested under the Nested_under key + NestedUnder string `json:"nestedUnder,omitempty"` + // Prefix affected keys with this string + AddPrefix string `json:"addPrefix,omitempty"` + // Remove prefix from affected keys if it matches this string + RemovePrefix string `json:"removePrefix,omitempty"` +} + +func (_ *Nest) Name() string { + return "nest" +} + +func (n *Nest) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := n.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + if n.Operation != "" { + kvs.Insert("Operation", n.Operation) + } + for _, wc := range n.Wildcard { + kvs.Insert("Wildcard", wc) + } + if n.NestUnder != "" { + kvs.Insert("Nest_under", n.NestUnder) + } + if n.NestedUnder != "" { + kvs.Insert("Nested_under", n.NestedUnder) + } + if n.AddPrefix != "" { + kvs.Insert("Add_prefix", n.AddPrefix) + } + if n.RemovePrefix != "" { + kvs.Insert("Remove_prefix", n.RemovePrefix) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/parser_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/parser_types.go new file mode 100644 index 000000000..9aa4e0a3a --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/parser_types.go @@ -0,0 +1,61 @@ +package filter + +import ( + "fmt" + "strings" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Parser Filter plugin allows to parse field in event records.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/parser** +type Parser struct { + plugins.CommonParams `json:",inline"` + // Specify field name in record to parse. + KeyName string `json:"keyName,omitempty"` + // Specify the parser name to interpret the field. + // Multiple Parser entries are allowed (split by comma). + Parser string `json:"parser,omitempty"` + // Keep original Key_Name field in the parsed result. + // If false, the field will be removed. + PreserveKey *bool `json:"preserveKey,omitempty"` + // Keep all other original fields in the parsed result. + // If false, all other original fields will be removed. + ReserveData *bool `json:"reserveData,omitempty"` + // If the key is a escaped string (e.g: stringify JSON), unescape the string before to apply the parser. + UnescapeKey *bool `json:"unescapeKey,omitempty"` +} + +func (_ *Parser) Name() string { + return "parser" +} + +func (p *Parser) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := p.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + if p.KeyName != "" { + kvs.Insert("Key_Name", p.KeyName) + } + if p.Parser != "" { + parsers := strings.Split(p.Parser, ",") + for _, parser := range parsers { + kvs.Insert("Parser", strings.Trim(parser, " ")) + } + } + if p.PreserveKey != nil { + kvs.Insert("Preserve_Key", fmt.Sprint(*p.PreserveKey)) + } + if p.ReserveData != nil { + kvs.Insert("Reserve_Data", fmt.Sprint(*p.ReserveData)) + } + if p.UnescapeKey != nil { + kvs.Insert("Unescape_Key", fmt.Sprint(*p.UnescapeKey)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/recordmodifier_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/recordmodifier_types.go new file mode 100644 index 000000000..cea8d776a --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/recordmodifier_types.go @@ -0,0 +1,53 @@ +package filter + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Record Modifier Filter plugin allows to append fields or to exclude specific fields.
+// RemoveKeys and WhitelistKeys are exclusive.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/record-modifier** +type RecordModifier struct { + plugins.CommonParams `json:",inline"` + // Append fields. This parameter needs key and value pair. + Records []string `json:"records,omitempty"` + // If the key is matched, that field is removed. + RemoveKeys []string `json:"removeKeys,omitempty"` + // If the key is not matched, that field is removed. + AllowlistKeys []string `json:"allowlistKeys,omitempty"` + // An alias of allowlistKeys for backwards compatibility. + WhitelistKeys []string `json:"whitelistKeys,omitempty"` + // If set, the plugin appends uuid to each record. The value assigned becomes the key in the map. + UUIDKeys []string `json:"uuidKeys,omitempty"` +} + +func (_ *RecordModifier) Name() string { + return "record_modifier" +} + +func (rm *RecordModifier) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := rm.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + for _, record := range rm.Records { + kvs.Insert("Record", record) + } + for _, key := range rm.RemoveKeys { + kvs.Insert("Remove_key", key) + } + for _, key := range rm.AllowlistKeys { + kvs.Insert("Allowlist_key", key) + } + for _, key := range rm.WhitelistKeys { + kvs.Insert("Whitelist_key", key) + } + for _, key := range rm.UUIDKeys { + kvs.Insert("Uuid_key", key) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/rewritetag_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/rewritetag_types.go new file mode 100644 index 000000000..b9193a48c --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/rewritetag_types.go @@ -0,0 +1,41 @@ +package filter + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// RewriteTag define a `rewrite_tag` filter, allows to re-emit a record under a new Tag.
+// Once a record has been re-emitted, the original record can be preserved or discarded.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/rewrite-tag** +type RewriteTag struct { + plugins.CommonParams `json:",inline"` + // Defines the matching criteria and the format of the Tag for the matching record. + // The Rule format have four components: KEY REGEX NEW_TAG KEEP. + Rules []string `json:"rules,omitempty"` + // When the filter emits a record under the new Tag, there is an internal emitter + // plugin that takes care of the job. Since this emitter expose metrics as any other + // component of the pipeline, you can use this property to configure an optional name for it. + EmitterName string `json:"emitterName,omitempty"` +} + +func (_ *RewriteTag) Name() string { + return "rewrite_tag" +} + +func (r *RewriteTag) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := r.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + for _, rule := range r.Rules { + kvs.Insert("Rule", rule) + } + if r.EmitterName != "" { + kvs.Insert("Emitter_Name", r.EmitterName) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/throttle_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/throttle_types.go new file mode 100644 index 000000000..5cac6a320 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/throttle_types.go @@ -0,0 +1,52 @@ +package filter + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Throttle filter allows you to set the average rate of messages per internal, based on leaky bucket and sliding window algorithm.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/filters/throttle** +type Throttle struct { + plugins.CommonParams `json:",inline"` + // Rate is the amount of messages for the time. + Rate *int64 `json:"rate,omitempty"` + // Window is the amount of intervals to calculate average over. + Window *int64 `json:"window,omitempty"` + // Interval is the time interval expressed in "sleep" format. e.g. 3s, 1.5m, 0.5h, etc. + // +kubebuilder:validation:Pattern:="^\\d+(\\.[0-9]{0,2})?(s|m|h|d)?$" + Interval string `json:"interval,omitempty"` + // PrintStatus represents whether to print status messages with current rate and the limits to information logs. + PrintStatus *bool `json:"printStatus,omitempty"` +} + +// Name is the name of the filter plugin. +func (*Throttle) Name() string { + return "throttle" +} + +// Params represents the config options for the filter plugin. +func (k *Throttle) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + err := k.AddCommonParams(kvs) + if err != nil { + return kvs, err + } + if k.Rate != nil { + kvs.Insert("Rate", fmt.Sprint(*k.Rate)) + } + if k.Window != nil { + kvs.Insert("Window", fmt.Sprint(*k.Window)) + } + if k.Interval != "" { + kvs.Insert("Interval", k.Interval) + } + if k.PrintStatus != nil { + kvs.Insert("Print_Status", fmt.Sprint(*k.PrintStatus)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/zz_generated.deepcopy.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/zz_generated.deepcopy.go new file mode 100644 index 000000000..45acc0e67 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter/zz_generated.deepcopy.go @@ -0,0 +1,536 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package filter + +import () + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWS) DeepCopyInto(out *AWS) { + *out = *in + out.CommonParams = in.CommonParams + if in.AZ != nil { + in, out := &in.AZ, &out.AZ + *out = new(bool) + **out = **in + } + if in.EC2InstanceID != nil { + in, out := &in.EC2InstanceID, &out.EC2InstanceID + *out = new(bool) + **out = **in + } + if in.EC2InstanceType != nil { + in, out := &in.EC2InstanceType, &out.EC2InstanceType + *out = new(bool) + **out = **in + } + if in.PrivateIP != nil { + in, out := &in.PrivateIP, &out.PrivateIP + *out = new(bool) + **out = **in + } + if in.AmiID != nil { + in, out := &in.AmiID, &out.AmiID + *out = new(bool) + **out = **in + } + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(bool) + **out = **in + } + if in.HostName != nil { + in, out := &in.HostName, &out.HostName + *out = new(bool) + **out = **in + } + if in.VpcID != nil { + in, out := &in.VpcID, &out.VpcID + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWS. +func (in *AWS) DeepCopy() *AWS { + if in == nil { + return nil + } + out := new(AWS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Condition) DeepCopyInto(out *Condition) { + *out = *in + if in.KeyDoesNotExist != nil { + in, out := &in.KeyDoesNotExist, &out.KeyDoesNotExist + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.KeyValueEquals != nil { + in, out := &in.KeyValueEquals, &out.KeyValueEquals + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.KeyValueDoesNotEqual != nil { + in, out := &in.KeyValueDoesNotEqual, &out.KeyValueDoesNotEqual + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.KeyValueMatches != nil { + in, out := &in.KeyValueMatches, &out.KeyValueMatches + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.KeyValueDoesNotMatch != nil { + in, out := &in.KeyValueDoesNotMatch, &out.KeyValueDoesNotMatch + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.MatchingKeysHaveMatchingValues != nil { + in, out := &in.MatchingKeysHaveMatchingValues, &out.MatchingKeysHaveMatchingValues + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.MatchingKeysDoNotHaveMatchingValues != nil { + in, out := &in.MatchingKeysDoNotHaveMatchingValues, &out.MatchingKeysDoNotHaveMatchingValues + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Condition. +func (in *Condition) DeepCopy() *Condition { + if in == nil { + return nil + } + out := new(Condition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Grep) DeepCopyInto(out *Grep) { + *out = *in + out.CommonParams = in.CommonParams +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Grep. +func (in *Grep) DeepCopy() *Grep { + if in == nil { + return nil + } + out := new(Grep) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Kubernetes) DeepCopyInto(out *Kubernetes) { + *out = *in + out.CommonParams = in.CommonParams + if in.MergeLog != nil { + in, out := &in.MergeLog, &out.MergeLog + *out = new(bool) + **out = **in + } + if in.MergeLogTrim != nil { + in, out := &in.MergeLogTrim, &out.MergeLogTrim + *out = new(bool) + **out = **in + } + if in.KeepLog != nil { + in, out := &in.KeepLog, &out.KeepLog + *out = new(bool) + **out = **in + } + if in.TLSDebug != nil { + in, out := &in.TLSDebug, &out.TLSDebug + *out = new(int32) + **out = **in + } + if in.TLSVerify != nil { + in, out := &in.TLSVerify, &out.TLSVerify + *out = new(bool) + **out = **in + } + if in.UseJournal != nil { + in, out := &in.UseJournal, &out.UseJournal + *out = new(bool) + **out = **in + } + if in.CacheUseDockerId != nil { + in, out := &in.CacheUseDockerId, &out.CacheUseDockerId + *out = new(bool) + **out = **in + } + if in.K8SLoggingParser != nil { + in, out := &in.K8SLoggingParser, &out.K8SLoggingParser + *out = new(bool) + **out = **in + } + if in.K8SLoggingExclude != nil { + in, out := &in.K8SLoggingExclude, &out.K8SLoggingExclude + *out = new(bool) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = new(bool) + **out = **in + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = new(bool) + **out = **in + } + if in.DummyMeta != nil { + in, out := &in.DummyMeta, &out.DummyMeta + *out = new(bool) + **out = **in + } + if in.DNSRetries != nil { + in, out := &in.DNSRetries, &out.DNSRetries + *out = new(int32) + **out = **in + } + if in.DNSWaitTime != nil { + in, out := &in.DNSWaitTime, &out.DNSWaitTime + *out = new(int32) + **out = **in + } + if in.UseKubelet != nil { + in, out := &in.UseKubelet, &out.UseKubelet + *out = new(bool) + **out = **in + } + if in.KubeletPort != nil { + in, out := &in.KubeletPort, &out.KubeletPort + *out = new(int32) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kubernetes. +func (in *Kubernetes) DeepCopy() *Kubernetes { + if in == nil { + return nil + } + out := new(Kubernetes) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Lua) DeepCopyInto(out *Lua) { + *out = *in + out.CommonParams = in.CommonParams + in.Script.DeepCopyInto(&out.Script) + if in.TypeIntKey != nil { + in, out := &in.TypeIntKey, &out.TypeIntKey + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ProtectedMode != nil { + in, out := &in.ProtectedMode, &out.ProtectedMode + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Lua. +func (in *Lua) DeepCopy() *Lua { + if in == nil { + return nil + } + out := new(Lua) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Modify) DeepCopyInto(out *Modify) { + *out = *in + out.CommonParams = in.CommonParams + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]Rule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Modify. +func (in *Modify) DeepCopy() *Modify { + if in == nil { + return nil + } + out := new(Modify) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Multiline) DeepCopyInto(out *Multiline) { + *out = *in + out.CommonParams = in.CommonParams + if in.Multi != nil { + in, out := &in.Multi, &out.Multi + *out = new(Multi) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Multiline. +func (in *Multiline) DeepCopy() *Multiline { + if in == nil { + return nil + } + out := new(Multiline) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Nest) DeepCopyInto(out *Nest) { + *out = *in + out.CommonParams = in.CommonParams + if in.Wildcard != nil { + in, out := &in.Wildcard, &out.Wildcard + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Nest. +func (in *Nest) DeepCopy() *Nest { + if in == nil { + return nil + } + out := new(Nest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Parser) DeepCopyInto(out *Parser) { + *out = *in + out.CommonParams = in.CommonParams + if in.PreserveKey != nil { + in, out := &in.PreserveKey, &out.PreserveKey + *out = new(bool) + **out = **in + } + if in.ReserveData != nil { + in, out := &in.ReserveData, &out.ReserveData + *out = new(bool) + **out = **in + } + if in.UnescapeKey != nil { + in, out := &in.UnescapeKey, &out.UnescapeKey + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Parser. +func (in *Parser) DeepCopy() *Parser { + if in == nil { + return nil + } + out := new(Parser) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecordModifier) DeepCopyInto(out *RecordModifier) { + *out = *in + out.CommonParams = in.CommonParams + if in.Records != nil { + in, out := &in.Records, &out.Records + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.RemoveKeys != nil { + in, out := &in.RemoveKeys, &out.RemoveKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.AllowlistKeys != nil { + in, out := &in.AllowlistKeys, &out.AllowlistKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.WhitelistKeys != nil { + in, out := &in.WhitelistKeys, &out.WhitelistKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.UUIDKeys != nil { + in, out := &in.UUIDKeys, &out.UUIDKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecordModifier. +func (in *RecordModifier) DeepCopy() *RecordModifier { + if in == nil { + return nil + } + out := new(RecordModifier) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RewriteTag) DeepCopyInto(out *RewriteTag) { + *out = *in + out.CommonParams = in.CommonParams + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RewriteTag. +func (in *RewriteTag) DeepCopy() *RewriteTag { + if in == nil { + return nil + } + out := new(RewriteTag) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Rule) DeepCopyInto(out *Rule) { + *out = *in + if in.Set != nil { + in, out := &in.Set, &out.Set + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Rename != nil { + in, out := &in.Rename, &out.Rename + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.HardRename != nil { + in, out := &in.HardRename, &out.HardRename + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Copy != nil { + in, out := &in.Copy, &out.Copy + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.HardCopy != nil { + in, out := &in.HardCopy, &out.HardCopy + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rule. +func (in *Rule) DeepCopy() *Rule { + if in == nil { + return nil + } + out := new(Rule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Throttle) DeepCopyInto(out *Throttle) { + *out = *in + out.CommonParams = in.CommonParams + if in.Rate != nil { + in, out := &in.Rate, &out.Rate + *out = new(int64) + **out = **in + } + if in.Window != nil { + in, out := &in.Window, &out.Window + *out = new(int64) + **out = **in + } + if in.PrintStatus != nil { + in, out := &in.PrintStatus, &out.PrintStatus + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Throttle. +func (in *Throttle) DeepCopy() *Throttle { + if in == nil { + return nil + } + out := new(Throttle) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/dummy_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/dummy_types.go new file mode 100644 index 000000000..f8a77c17c --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/dummy_types.go @@ -0,0 +1,46 @@ +package input + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The dummy input plugin, generates dummy events.
+// It is useful for testing, debugging, benchmarking and getting started with Fluent Bit.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/inputs/dummy** +type Dummy struct { + // Tag name associated to all records comming from this plugin. + Tag string `json:"tag,omitempty"` + // Dummy JSON record. + Dummy string `json:"dummy,omitempty"` + // Events number generated per second. + Rate *int32 `json:"rate,omitempty"` + // Sample events to generate. + Samples *int32 `json:"samples,omitempty"` +} + +func (_ *Dummy) Name() string { + return "dummy" +} + +// implement Section() method +func (d *Dummy) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if d.Tag != "" { + kvs.Insert("Tag", d.Tag) + } + if d.Dummy != "" { + kvs.Insert("Dummy", d.Dummy) + } + if d.Rate != nil { + kvs.Insert("Rate", fmt.Sprint(*d.Rate)) + } + if d.Samples != nil { + kvs.Insert("Samples", fmt.Sprint(*d.Samples)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/fluent_bit_metrics_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/fluent_bit_metrics_types.go new file mode 100644 index 000000000..94f3d0fd7 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/fluent_bit_metrics_types.go @@ -0,0 +1,42 @@ +package input + +import ( + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Fluent Bit exposes its own metrics to allow you to monitor the internals of your pipeline.
+// The collected metrics can be processed similarly to those from the Prometheus Node Exporter input plugin.
+// They can be sent to output plugins including Prometheus Exporter, Prometheus Remote Write or OpenTelemetry.
+// **Important note: Metrics collected with Node Exporter Metrics flow through a separate pipeline from logs and current filters do not operate on top of metrics.**
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/inputs/fluentbit-metrics** +type FluentbitMetrics struct { + Tag string `json:"tag,omitempty"` + + // The rate at which metrics are collected from the host operating system. default is 2 seconds. + ScrapeInterval string `json:"scrapeInterval,omitempty"` + + // Scrape metrics upon start, useful to avoid waiting for 'scrape_interval' for the first round of metrics. + ScrapeOnStart *bool `json:"scrapeOnStart,omitempty"` +} + +func (_ *FluentbitMetrics) Name() string { + return "fluentbit_metrics" +} + +func (f *FluentbitMetrics) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if f.Tag != "" { + kvs.Insert("Tag", f.Tag) + } + if f.ScrapeInterval != "" { + kvs.Insert("scrape_interval", f.ScrapeInterval) + } + if f.ScrapeOnStart != nil { + kvs.Insert("scrape_on_start", fmt.Sprint(*f.ScrapeOnStart)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/node_exporter_metrics_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/node_exporter_metrics_types.go new file mode 100644 index 000000000..3bba6165f --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/node_exporter_metrics_types.go @@ -0,0 +1,51 @@ +package input + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// A plugin based on Prometheus Node Exporter to collect system / host level metrics.
+// **Note: Metrics collected with Node Exporter Metrics flow through a separate pipeline from logs and current filters do not operate on top of metrics.**
+// This plugin is currently only supported on Linux based operating systems.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/inputs/node-exporter-metrics** +type NodeExporterMetrics struct { + // Tag name associated to all records comming from this plugin. + Tag string `json:"tag,omitempty"` + // The rate at which metrics are collected from the host operating system, default is 5 seconds. + ScrapeInterval string `json:"scrapeInterval,omitempty"` + Path *Path `json:"path,omitempty"` +} + +type Path struct { + // The mount point used to collect process information and metrics. + Procfs string `json:"procfs,omitempty"` + // The path in the filesystem used to collect system metrics. + Sysfs string `json:"sysfs,omitempty"` +} + +func (_ *NodeExporterMetrics) Name() string { + return "node_exporter_metrics" +} + +// Params implement Section() method +func (d *NodeExporterMetrics) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if d.Tag != "" { + kvs.Insert("Tag", d.Tag) + } + if d.ScrapeInterval != "" { + kvs.Insert("scrape_interval", d.ScrapeInterval) + } + if d.Path != nil { + if d.Path.Procfs != "" { + kvs.Insert("path.procfs", d.Path.Procfs) + } + if d.Path.Sysfs != "" { + kvs.Insert("path.sysfs", d.Path.Sysfs) + } + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/prometheus_scrape_metrics_type.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/prometheus_scrape_metrics_type.go new file mode 100644 index 000000000..f2b68b50e --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/prometheus_scrape_metrics_type.go @@ -0,0 +1,57 @@ +package input + +import ( + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" + "strings" +) + +// +kubebuilder:object:generate:=true + +// Fluent Bit 1.9 includes additional metrics features to allow you to collect both logs and metrics with the same collector.
+// The initial release of the Prometheus Scrape metric allows you to collect metrics from a Prometheus-based
+// endpoint at a set interval. These metrics can be routed to metric supported endpoints such as Prometheus Exporter, InfluxDB, or Prometheus Remote Write.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/inputs/prometheus-scrape-metrics** +type PrometheusScrapeMetrics struct { + // Tag name associated to all records comming from this plugin + Tag string `json:"tag,omitempty"` + // The host of the prometheus metric endpoint that you want to scrape + Host string `json:"host,omitempty"` + // The port of the promethes metric endpoint that you want to scrape + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // The interval to scrape metrics, default: 10s + ScrapeInterval string `json:"scrapeInterval,omitempty"` + // The metrics URI endpoint, that must start with a forward slash, deflaut: /metrics + MetricsPath string `json:"metricsPath,omitempty"` +} + +func (_ *PrometheusScrapeMetrics) Name() string { + return "prometheus_scrape" +} + +// Params implement Section() method +func (p *PrometheusScrapeMetrics) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if p.Tag != "" { + kvs.Insert("tag", p.Tag) + } + host := strings.ToLower(p.Host) + if host == "" || host == "host" { + kvs.Insert("host", "${HOST_IP}") + } else { + kvs.Insert("host", p.Host) + } + if p.Port != nil { + kvs.Insert("port", fmt.Sprint(*p.Port)) + } + if p.ScrapeInterval != "" { + kvs.Insert("scrape_interval", p.ScrapeInterval) + } + if p.MetricsPath != "" { + kvs.Insert("metrics_path", p.MetricsPath) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/systemd_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/systemd_types.go new file mode 100644 index 000000000..5d4ffac6b --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/systemd_types.go @@ -0,0 +1,90 @@ +package input + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Systemd input plugin allows to collect log messages from the Journald daemon on Linux environments.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/inputs/systemd** +type Systemd struct { + // Optional path to the Systemd journal directory, + // if not set, the plugin will use default paths to read local-only logs. + Path string `json:"path,omitempty"` + // Specify the database file to keep track of monitored files and offsets. + DB string `json:"db,omitempty"` + // Set a default synchronization (I/O) method. values: Extra, Full, Normal, Off. + // This flag affects how the internal SQLite engine do synchronization to disk, + // for more details about each option please refer to this section. + // note: this option was introduced on Fluent Bit v1.4.6. + // +kubebuilder:validation:Enum:=Extra;Full;Normal;Off + DBSync string `json:"dbSync,omitempty"` + // The tag is used to route messages but on Systemd plugin there is an extra functionality: + // if the tag includes a star/wildcard, it will be expanded with the Systemd Unit file (e.g: host.* => host.UNIT_NAME). + Tag string `json:"tag,omitempty"` + // Set a maximum number of fields (keys) allowed per record. + MaxFields int `json:"maxFields,omitempty"` + // When Fluent Bit starts, the Journal might have a high number of logs in the queue. + // In order to avoid delays and reduce memory usage, this option allows to specify the maximum number of log entries that can be processed per round. + // Once the limit is reached, Fluent Bit will continue processing the remaining log entries once Journald performs the notification. + MaxEntries int `json:"maxEntries,omitempty"` + // Allows to perform a query over logs that contains a specific Journald key/value pairs, e.g: _SYSTEMD_UNIT=UNIT. + // The Systemd_Filter option can be specified multiple times in the input section to apply multiple filters as required. + SystemdFilter []string `json:"systemdFilter,omitempty"` + // Define the filter type when Systemd_Filter is specified multiple times. Allowed values are And and Or. + // With And a record is matched only when all of the Systemd_Filter have a match. + // With Or a record is matched when any of the Systemd_Filter has a match. + // +kubebuilder:validation:Enum:=And;Or + SystemdFilterType string `json:"systemdFilterType,omitempty"` + // Start reading new entries. Skip entries already stored in Journald. + // +kubebuilder:validation:Enum:=on;off + ReadFromTail string `json:"readFromTail,omitempty"` + // Remove the leading underscore of the Journald field (key). For example the Journald field _PID becomes the key PID. + // +kubebuilder:validation:Enum:=on;off + StripUnderscores string `json:"stripUnderscores,omitempty"` +} + +func (_ *Systemd) Name() string { + return "systemd" +} + +func (s *Systemd) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + + if s.Path != "" { + kvs.Insert("Path", s.Path) + } + if s.DB != "" { + kvs.Insert("DB", s.DB) + } + if s.DBSync != "" { + kvs.Insert("DB.Sync", s.DBSync) + } + if s.Tag != "" { + kvs.Insert("Tag", s.Tag) + } + if s.MaxFields > 0 { + kvs.Insert("Max_Fields", string(rune(s.MaxFields))) + } + if s.MaxEntries > 0 { + kvs.Insert("Max_Entries", string(rune(s.MaxEntries))) + } + if s.SystemdFilter != nil && len(s.SystemdFilter) > 0 { + for _, v := range s.SystemdFilter { + kvs.Insert("Systemd_Filter", v) + } + } + if s.SystemdFilterType != "" { + kvs.Insert("Systemd_Filter_Type", s.SystemdFilterType) + } + if s.ReadFromTail != "" { + kvs.Insert("Read_From_Tail", s.ReadFromTail) + } + if s.StripUnderscores != "" { + kvs.Insert("Strip_Underscores", s.StripUnderscores) + } + + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/tail_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/tail_types.go new file mode 100644 index 000000000..149af9546 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/tail_types.go @@ -0,0 +1,183 @@ +package input + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Tail input plugin allows to monitor one or several text files.
+// It has a similar behavior like tail -f shell command.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/inputs/tail** +type Tail struct { + // Set the initial buffer size to read files data. + // This value is used too to increase buffer size. + // The value must be according to the Unit Size specification. + // +kubebuilder:validation:Pattern:="^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$" + BufferChunkSize string `json:"bufferChunkSize,omitempty"` + // Set the limit of the buffer size per monitored file. + // When a buffer needs to be increased (e.g: very long lines), + // this value is used to restrict how much the memory buffer can grow. + // If reading a file exceed this limit, the file is removed from the monitored file list + // The value must be according to the Unit Size specification. + // +kubebuilder:validation:Pattern:="^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$" + BufferMaxSize string `json:"bufferMaxSize,omitempty"` + // Pattern specifying a specific log files or multiple ones through the use of common wildcards. + Path string `json:"path,omitempty"` + // If enabled, it appends the name of the monitored file as part of the record. + // The value assigned becomes the key in the map. + PathKey string `json:"pathKey,omitempty"` + // Set one or multiple shell patterns separated by commas to exclude files matching a certain criteria, + // e.g: exclude_path=*.gz,*.zip + ExcludePath string `json:"excludePath,omitempty"` + // For new discovered files on start (without a database offset/position), + // read the content from the head of the file, not tail. + ReadFromHead *bool `json:"readFromHead,omitempty"` + // The interval of refreshing the list of watched files in seconds. + RefreshIntervalSeconds *int64 `json:"refreshIntervalSeconds,omitempty"` + // Specify the number of extra time in seconds to monitor a file once is rotated in case some pending data is flushed. + RotateWaitSeconds *int64 `json:"rotateWaitSeconds,omitempty"` + // Ignores records which are older than this time in seconds. + // Supports m,h,d (minutes, hours, days) syntax. + // Default behavior is to read all records from specified files. + // Only available when a Parser is specificied and it can parse the time of a record. + // +kubebuilder:validation:Pattern:="^\\d+(m|h|d)?$" + IgnoreOlder string `json:"ignoredOlder,omitempty"` + // When a monitored file reach it buffer capacity due to a very long line (Buffer_Max_Size), + // the default behavior is to stop monitoring that file. + // Skip_Long_Lines alter that behavior and instruct Fluent Bit to skip long lines + // and continue processing other lines that fits into the buffer size. + SkipLongLines *bool `json:"skipLongLines,omitempty"` + // Specify the database file to keep track of monitored files and offsets. + DB string `json:"db,omitempty"` + // Set a default synchronization (I/O) method. Values: Extra, Full, Normal, Off. + // +kubebuilder:validation:Enum:=Extra;Full;Normal;Off + DBSync string `json:"dbSync,omitempty"` + // Set a limit of memory that Tail plugin can use when appending data to the Engine. + // If the limit is reach, it will be paused; when the data is flushed it resumes. + MemBufLimit string `json:"memBufLimit,omitempty"` + // Specify the name of a parser to interpret the entry as a structured message. + Parser string `json:"parser,omitempty"` + // When a message is unstructured (no parser applied), it's appended as a string under the key name log. + // This option allows to define an alternative name for that key. + Key string `json:"key,omitempty"` + // Set a tag (with regex-extract fields) that will be placed on lines read. + // E.g. kube... + Tag string `json:"tag,omitempty"` + // Set a regex to exctract fields from the file + TagRegex string `json:"tagRegex,omitempty"` + // If enabled, the plugin will try to discover multiline messages + // and use the proper parsers to compose the outgoing messages. + // Note that when this option is enabled the Parser option is not used. + Multiline *bool `json:"multiline,omitempty"` + // Wait period time in seconds to process queued multiline messages + MultilineFlushSeconds *int64 `json:"multilineFlushSeconds,omitempty"` + // Name of the parser that matchs the beginning of a multiline message. + // Note that the regular expression defined in the parser must include a group name (named capture) + ParserFirstline string `json:"parserFirstline,omitempty"` + // Optional-extra parser to interpret and structure multiline entries. + // This option can be used to define multiple parsers. + ParserN []string `json:"parserN,omitempty"` + // If enabled, the plugin will recombine split Docker log lines before passing them to any parser as configured above. + // This mode cannot be used at the same time as Multiline. + DockerMode *bool `json:"dockerMode,omitempty"` + // Wait period time in seconds to flush queued unfinished split lines. + DockerModeFlushSeconds *int64 `json:"dockerModeFlushSeconds,omitempty"` + // Specify an optional parser for the first line of the docker multiline mode. The parser name to be specified must be registered in the parsers.conf file. + DockerModeParser string `json:"dockerModeParser,omitempty"` + // DisableInotifyWatcher will disable inotify and use the file stat watcher instead. + DisableInotifyWatcher *bool `json:"disableInotifyWatcher,omitempty"` + // This will help to reassembly multiline messages originally split by Docker or CRI + //Specify one or Multiline Parser definition to apply to the content. + MultilineParser string `json:"multilineParser,omitempty"` +} + +func (_ *Tail) Name() string { + return "tail" +} + +func (t *Tail) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if t.BufferChunkSize != "" { + kvs.Insert("Buffer_Chunk_Size", t.BufferChunkSize) + } + if t.BufferMaxSize != "" { + kvs.Insert("Buffer_Max_Size", t.BufferMaxSize) + } + if t.Path != "" { + kvs.Insert("Path", t.Path) + } + if t.PathKey != "" { + kvs.Insert("Path_Key", t.PathKey) + } + if t.ExcludePath != "" { + kvs.Insert("Exclude_Path", t.ExcludePath) + } + if t.ReadFromHead != nil { + kvs.Insert("Read_from_Head", fmt.Sprint(*t.ReadFromHead)) + } + if t.RefreshIntervalSeconds != nil { + kvs.Insert("Refresh_Interval", fmt.Sprint(*t.RefreshIntervalSeconds)) + } + if t.RotateWaitSeconds != nil { + kvs.Insert("Rotate_Wait", fmt.Sprint(*t.RotateWaitSeconds)) + } + if t.IgnoreOlder != "" { + kvs.Insert("Ignore_Older", t.IgnoreOlder) + } + if t.SkipLongLines != nil { + kvs.Insert("Skip_Long_Lines", fmt.Sprint(*t.SkipLongLines)) + } + if t.DB != "" { + kvs.Insert("DB", t.DB) + } + if t.DBSync != "" { + kvs.Insert("DB.Sync", t.DBSync) + } + if t.MemBufLimit != "" { + kvs.Insert("Mem_Buf_Limit", t.MemBufLimit) + } + if t.Parser != "" { + kvs.Insert("Parser", t.Parser) + } + if t.Key != "" { + kvs.Insert("Key", t.Key) + } + if t.Tag != "" { + kvs.Insert("Tag", t.Tag) + } + if t.TagRegex != "" { + kvs.Insert("Tag_Regex", t.TagRegex) + } + if t.Multiline != nil { + kvs.Insert("Multiline", fmt.Sprint(*t.Multiline)) + } + if t.MultilineFlushSeconds != nil { + kvs.Insert("Multiline_Flush", fmt.Sprint(*t.MultilineFlushSeconds)) + } + if t.ParserFirstline != "" { + kvs.Insert("Parser_Firstline", t.ParserFirstline) + } + for i, parser := range t.ParserN { + kvs.Insert(fmt.Sprintf("Parser_%d", i+1), parser) + } + if t.DockerMode != nil { + kvs.Insert("Docker_Mode", fmt.Sprint(*t.DockerMode)) + } + if t.DockerModeFlushSeconds != nil { + kvs.Insert("Docker_Mode_Flush", fmt.Sprint(*t.DockerModeFlushSeconds)) + } + if t.DockerModeParser != "" { + kvs.Insert("Docker_Mode_Parser", fmt.Sprint(t.DockerModeParser)) + } + if t.DisableInotifyWatcher != nil { + kvs.Insert("Inotify_Watcher", fmt.Sprint(!*t.DisableInotifyWatcher)) + } + if t.MultilineParser != "" { + kvs.Insert("multiline.parser", t.MultilineParser) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/zz_generated.deepcopy.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/zz_generated.deepcopy.go new file mode 100644 index 000000000..cf48e6c30 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input/zz_generated.deepcopy.go @@ -0,0 +1,194 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package input + +import () + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Dummy) DeepCopyInto(out *Dummy) { + *out = *in + if in.Rate != nil { + in, out := &in.Rate, &out.Rate + *out = new(int32) + **out = **in + } + if in.Samples != nil { + in, out := &in.Samples, &out.Samples + *out = new(int32) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Dummy. +func (in *Dummy) DeepCopy() *Dummy { + if in == nil { + return nil + } + out := new(Dummy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentbitMetrics) DeepCopyInto(out *FluentbitMetrics) { + *out = *in + if in.ScrapeOnStart != nil { + in, out := &in.ScrapeOnStart, &out.ScrapeOnStart + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentbitMetrics. +func (in *FluentbitMetrics) DeepCopy() *FluentbitMetrics { + if in == nil { + return nil + } + out := new(FluentbitMetrics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeExporterMetrics) DeepCopyInto(out *NodeExporterMetrics) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(Path) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeExporterMetrics. +func (in *NodeExporterMetrics) DeepCopy() *NodeExporterMetrics { + if in == nil { + return nil + } + out := new(NodeExporterMetrics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrometheusScrapeMetrics) DeepCopyInto(out *PrometheusScrapeMetrics) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusScrapeMetrics. +func (in *PrometheusScrapeMetrics) DeepCopy() *PrometheusScrapeMetrics { + if in == nil { + return nil + } + out := new(PrometheusScrapeMetrics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Systemd) DeepCopyInto(out *Systemd) { + *out = *in + if in.SystemdFilter != nil { + in, out := &in.SystemdFilter, &out.SystemdFilter + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Systemd. +func (in *Systemd) DeepCopy() *Systemd { + if in == nil { + return nil + } + out := new(Systemd) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Tail) DeepCopyInto(out *Tail) { + *out = *in + if in.ReadFromHead != nil { + in, out := &in.ReadFromHead, &out.ReadFromHead + *out = new(bool) + **out = **in + } + if in.RefreshIntervalSeconds != nil { + in, out := &in.RefreshIntervalSeconds, &out.RefreshIntervalSeconds + *out = new(int64) + **out = **in + } + if in.RotateWaitSeconds != nil { + in, out := &in.RotateWaitSeconds, &out.RotateWaitSeconds + *out = new(int64) + **out = **in + } + if in.SkipLongLines != nil { + in, out := &in.SkipLongLines, &out.SkipLongLines + *out = new(bool) + **out = **in + } + if in.Multiline != nil { + in, out := &in.Multiline, &out.Multiline + *out = new(bool) + **out = **in + } + if in.MultilineFlushSeconds != nil { + in, out := &in.MultilineFlushSeconds, &out.MultilineFlushSeconds + *out = new(int64) + **out = **in + } + if in.ParserN != nil { + in, out := &in.ParserN, &out.ParserN + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.DockerMode != nil { + in, out := &in.DockerMode, &out.DockerMode + *out = new(bool) + **out = **in + } + if in.DockerModeFlushSeconds != nil { + in, out := &in.DockerModeFlushSeconds, &out.DockerModeFlushSeconds + *out = new(int64) + **out = **in + } + if in.DisableInotifyWatcher != nil { + in, out := &in.DisableInotifyWatcher, &out.DisableInotifyWatcher + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tail. +func (in *Tail) DeepCopy() *Tail { + if in == nil { + return nil + } + out := new(Tail) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/interface.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/interface.go new file mode 100644 index 000000000..6ac42caa2 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/interface.go @@ -0,0 +1,12 @@ +package plugins + +import "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" + +// +kubebuilder:object:generate=false + +// The Plugin interface defines methods for transferring input, filter +// and output plugins to textual section content. +type Plugin interface { + Name() string + Params(SecretLoader) (*params.KVs, error) +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_blob_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_blob_types.go new file mode 100644 index 000000000..49c1ca834 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_blob_types.go @@ -0,0 +1,75 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Azure Blob is the Azure Blob output plugin, allows to ingest your records into Azure Blob Storage.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/azure_blob** +type AzureBlob struct { + // Azure Storage account name + AccountName string `json:"accountName"` + // Specify the Azure Storage Shared Key to authenticate against the storage account + SharedKey *plugins.Secret `json:"sharedKey"` + // Name of the container that will contain the blobs + ContainerName string `json:"containerName"` + // Specify the desired blob type. Must be `appendblob` or `blockblob` + BlobType string `json:"blobType,omitempty"` + // Creates container if ContainerName is not set. + AutoCreateContainer *bool `json:"autoCreateContainer,omitempty"` + // Optional path to store the blobs. + Path string `json:"path,omitempty"` + // Optional toggle to use an Azure emulator + EmulatorMode *bool `json:"emulatorMode,omitempty"` + // HTTP Service of the endpoint (if using EmulatorMode) + Endpoint string `json:"endpoint,omitempty"` + // Enable/Disable TLS Encryption. Azure services require TLS to be enabled. + TLS *bool `json:"tls,omitempty"` +} + +// Name implement Section() method +func (_ *AzureBlob) Name() string { + return "azureblob" +} + +// Params implement Section() method +func (o *AzureBlob) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if o.AccountName != "" { + kvs.Insert("account_name", o.AccountName) + } + if o.SharedKey != nil { + u, err := sl.LoadSecret(*o.SharedKey) + if err != nil { + return nil, err + } + kvs.Insert("shared_key", u) + } + if o.ContainerName != "" { + kvs.Insert("container_name", o.ContainerName) + } + if o.BlobType != "" { + kvs.Insert("blob_type", o.BlobType) + } + if o.AutoCreateContainer != nil { + kvs.Insert("auto_create_container", fmt.Sprint(*o.AutoCreateContainer)) + } + if o.Path != "" { + kvs.Insert("path", o.Path) + } + if o.EmulatorMode != nil { + kvs.Insert("emulator_mode", fmt.Sprint(*o.EmulatorMode)) + } + if o.Endpoint != "" { + kvs.Insert("endpoint", o.Endpoint) + } + if o.TLS != nil { + kvs.Insert("tls", fmt.Sprint(*o.TLS)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_log_analytics_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_log_analytics_types.go new file mode 100644 index 000000000..f84a4ffec --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/azure_log_analytics_types.go @@ -0,0 +1,59 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Azure Log Analytics is the Azure Log Analytics output plugin, allows you to ingest your records into Azure Log Analytics Workspace.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/azure** +type AzureLogAnalytics struct { + // Customer ID or Workspace ID + CustomerID *plugins.Secret `json:"customerID"` + // Specify the primary or the secondary client authentication key + SharedKey *plugins.Secret `json:"sharedKey"` + // Name of the event type. + LogType string `json:"logType,omitempty"` + // Specify the name of the key where the timestamp is stored. + TimeKey string `json:"timeKey,omitempty"` + // If set, overrides the timeKey value with the `time-generated-field` HTTP header value. + TimeGenerated *bool `json:"timeGenerated,omitempty"` +} + +// Name implement Section() method +func (_ *AzureLogAnalytics) Name() string { + return "azure" +} + +// Params implement Section() method +func (o *AzureLogAnalytics) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if o.CustomerID != nil { + u, err := sl.LoadSecret(*o.CustomerID) + if err != nil { + return nil, err + } + kvs.Insert("Customer_ID", u) + } + if o.SharedKey != nil { + u, err := sl.LoadSecret(*o.SharedKey) + if err != nil { + return nil, err + } + kvs.Insert("Shared_Key", u) + } + if o.LogType != "" { + kvs.Insert("Log_Type", o.LogType) + } + if o.TimeKey != "" { + kvs.Insert("Time_Key", o.TimeKey) + } + if o.TimeGenerated != nil { + kvs.Insert("Time_Generated", fmt.Sprint(*o.TimeGenerated)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/cloudwatch_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/cloudwatch_types.go new file mode 100644 index 000000000..e5641d32a --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/cloudwatch_types.go @@ -0,0 +1,112 @@ +package output + +import ( + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// CloudWatch is the AWS CloudWatch output plugin, allows you to ingest your records into AWS CloudWatch.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/cloudwatch** +type CloudWatch struct { + // AWS Region + Region string `json:"region"` + // Name of Cloudwatch Log Group to send log records to + LogGroupName string `json:"logGroupName,omitempty"` + // Template for Log Group name, overrides LogGroupName if set. + LogGroupTemplate string `json:"logGroupTemplate,omitempty"` + // The name of the CloudWatch Log Stream to send log records to + LogStreamName string `json:"logStreamName,omitempty"` + // Prefix for the Log Stream name. Not compatible with LogStreamName setting + LogStreamPrefix string `json:"logStreamPrefix,omitempty"` + // Template for Log Stream name. Overrides LogStreamPrefix and LogStreamName if set. + LogStreamTemplate string `json:"logStreamTemplate,omitempty"` + // If set, only the value of the key will be sent to CloudWatch + LogKey string `json:"logKey,omitempty"` + // Optional parameter to tell CloudWatch the format of the data + LogFormat string `json:"logFormat,omitempty"` + // Role ARN to use for cross-account access + RoleArn string `json:"roleArn,omitempty"` + // Automatically create the log group. Defaults to False. + AutoCreateGroup *bool `json:"autoCreateGroup,omitempty"` + // Number of days logs are retained for + // +kubebuilder:validation:Enum:=1;3;5;7;14;30;60;90;120;150;180;365;400;545;731;1827;3653 + LogRetentionDays *int32 `json:"logRetentionDays,omitempty"` + // Custom endpoint for CloudWatch logs API + Endpoint string `json:"endpoint,omitempty"` + // Optional string to represent the CloudWatch namespace. + MetricNamespace string `json:"metricNamespace,omitempty"` + // Optional lists of lists for dimension keys to be added to all metrics. Use comma separated strings + // for one list of dimensions and semicolon separated strings for list of lists dimensions. + MetricDimensions string `json:"metricDimensions,omitempty"` + // Specify a custom STS endpoint for the AWS STS API + StsEndpoint string `json:"stsEndpoint,omitempty"` + // Automatically retry failed requests to CloudWatch once. Defaults to True. + AutoRetryRequests *bool `json:"autoRetryRequests,omitempty"` + // Specify an external ID for the STS API. + ExternalID string `json:"externalID,omitempty"` +} + +// Name implement Section() method +func (_ *CloudWatch) Name() string { + return "cloudwatch_logs" +} + +// Params implement Section() method +func (o *CloudWatch) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if o.Region != "" { + kvs.Insert("region", o.Region) + } + if o.LogGroupName != "" { + kvs.Insert("log_group_name", o.LogGroupName) + } + if o.LogGroupTemplate != "" { + kvs.Insert("log_group_template", o.LogGroupTemplate) + } + if o.LogStreamName != "" { + kvs.Insert("log_stream_name", o.LogStreamName) + } + if o.LogStreamPrefix != "" { + kvs.Insert("log_stream_prefix", o.LogStreamPrefix) + } + if o.LogStreamTemplate != "" { + kvs.Insert("log_stream_template", o.LogStreamTemplate) + } + if o.LogKey != "" { + kvs.Insert("log_key", o.LogKey) + } + if o.LogFormat != "" { + kvs.Insert("log_format", o.LogFormat) + } + if o.AutoCreateGroup != nil { + kvs.Insert("auto_create_group", fmt.Sprint(*o.AutoCreateGroup)) + } + if o.LogRetentionDays != nil { + kvs.Insert("log_retention_days", fmt.Sprint(*o.LogRetentionDays)) + } + if o.RoleArn != "" { + kvs.Insert("role_arn", o.RoleArn) + } + if o.Endpoint != "" { + kvs.Insert("endpoint", o.Endpoint) + } + if o.MetricNamespace != "" { + kvs.Insert("metric_namespace", o.MetricNamespace) + } + if o.MetricDimensions != "" { + kvs.Insert("metric_dimensions", o.MetricDimensions) + } + if o.StsEndpoint != "" { + kvs.Insert("sts_endpoint", o.StsEndpoint) + } + if o.AutoRetryRequests != nil { + kvs.Insert("auto_retry_requests", fmt.Sprint(*o.AutoRetryRequests)) + } + if o.ExternalID != "" { + kvs.Insert("external_id", o.ExternalID) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/datadog_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/datadog_types.go new file mode 100644 index 000000000..84f7094f9 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/datadog_types.go @@ -0,0 +1,96 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// DataDog output plugin allows you to ingest your logs into Datadog.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/datadog** +type DataDog struct { + // Host is the Datadog server where you are sending your logs. + Host string `json:"host,omitempty"` + // TLS controls whether to use end-to-end security communications security protocol. + // Datadog recommends setting this to on. + TLS *bool `json:"tls,omitempty"` + // Compress the payload in GZIP format. + // Datadog supports and recommends setting this to gzip. + Compress string `json:"compress,omitempty"` + // Your Datadog API key. + APIKey string `json:"apikey,omitempty"` + // Specify an HTTP Proxy. + Proxy string `json:"proxy,omitempty"` + // To activate the remapping, specify configuration flag provider. + Provider string `json:"provider,omitempty"` + // Date key name for output. + JSONDateKey string `json:"json_date_key,omitempty"` + // If enabled, a tag is appended to output. The key name is used tag_key property. + IncludeTagKey *bool `json:"include_tag_key,omitempty"` + // The key name of tag. If include_tag_key is false, This property is ignored. + TagKey string `json:"tag_key,omitempty"` + // The human readable name for your service generating the logs. + Service string `json:"dd_service,omitempty"` + // A human readable name for the underlying technology of your service. + Source string `json:"dd_source,omitempty"` + // The tags you want to assign to your logs in Datadog. + Tags string `json:"dd_tags,omitempty"` + // By default, the plugin searches for the key 'log' and remap the value to the key 'message'. If the property is set, the plugin will search the property name key. + MessageKey string `json:"dd_message_key,omitempty"` + + // *plugins.HTTP `json:"tls,omitempty"` +} + +func (_ *DataDog) Name() string { + return "datadog" +} + +// implement Section() method +func (s *DataDog) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + + if s.Host != "" { + kvs.Insert("Host", s.Host) + } + if s.TLS != nil { + kvs.Insert("TLS", fmt.Sprint(*s.TLS)) + } + if s.Compress != "" { + kvs.Insert("compress", s.Compress) + } + if s.APIKey != "" { + kvs.Insert("apikey", s.APIKey) + } + if s.Proxy != "" { + kvs.Insert("proxy", s.Proxy) + } + if s.Provider != "" { + kvs.Insert("provider", s.Provider) + } + if s.JSONDateKey != "" { + kvs.Insert("json_date_key", s.JSONDateKey) + } + if s.IncludeTagKey != nil { + kvs.Insert("include_tag_key", fmt.Sprint(*s.IncludeTagKey)) + } + if s.TagKey != "" { + kvs.Insert("tag_key", s.TagKey) + } + if s.Service != "" { + kvs.Insert("dd_service", s.Service) + } + if s.Source != "" { + kvs.Insert("dd_source", s.Source) + } + if s.Tags != "" { + kvs.Insert("dd_tags", s.Tags) + } + if s.MessageKey != "" { + kvs.Insert("dd_message_key", s.MessageKey) + } + + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/elasticsearch_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/elasticsearch_types.go new file mode 100644 index 000000000..8e52c3624 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/elasticsearch_types.go @@ -0,0 +1,220 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Elasticsearch is the es output plugin, allows to ingest your records into an Elasticsearch database.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/elasticsearch** +type Elasticsearch struct { + // IP address or hostname of the target Elasticsearch instance + Host string `json:"host,omitempty"` + // TCP port of the target Elasticsearch instance + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Elasticsearch accepts new data on HTTP query path "/_bulk". + // But it is also possible to serve Elasticsearch behind a reverse proxy on a subpath. + // This option defines such path on the fluent-bit side. + // It simply adds a path prefix in the indexing HTTP POST URI. + Path string `json:"path,omitempty"` + // Specify the buffer size used to read the response from the Elasticsearch HTTP service. + // This option is useful for debugging purposes where is required to read full responses, + // note that response size grows depending of the number of records inserted. + // To set an unlimited amount of memory set this value to False, + // otherwise the value must be according to the Unit Size specification. + // +kubebuilder:validation:Pattern:="^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$" + BufferSize string `json:"bufferSize,omitempty"` + // Newer versions of Elasticsearch allows setting up filters called pipelines. + // This option allows defining which pipeline the database should use. + // For performance reasons is strongly suggested parsing + // and filtering on Fluent Bit side, avoid pipelines. + Pipeline string `json:"pipeline,omitempty"` + // Enable AWS Sigv4 Authentication for Amazon ElasticSearch Service. + AWSAuth string `json:"awsAuth,omitempty"` + // Specify the AWS region for Amazon ElasticSearch Service. + AWSRegion string `json:"awsRegion,omitempty"` + // Specify the custom sts endpoint to be used with STS API for Amazon ElasticSearch Service. + AWSSTSEndpoint string `json:"awsSTSEndpoint,omitempty"` + // AWS IAM Role to assume to put records to your Amazon ES cluster. + AWSRoleARN string `json:"awsRoleARN,omitempty"` + // External ID for the AWS IAM Role specified with aws_role_arn. + AWSExternalID string `json:"awsExternalID,omitempty"` + // If you are using Elastic's Elasticsearch Service you can specify the cloud_id of the cluster running. + CloudID string `json:"cloudID,omitempty"` + // Specify the credentials to use to connect to Elastic's Elasticsearch Service running on Elastic Cloud. + CloudAuth string `json:"cloudAuth,omitempty"` + // Optional username credential for Elastic X-Pack access + HTTPUser *plugins.Secret `json:"httpUser,omitempty"` + // Password for user defined in HTTP_User + HTTPPasswd *plugins.Secret `json:"httpPassword,omitempty"` + // Index name + Index string `json:"index,omitempty"` + // Type name + Type string `json:"type,omitempty"` + // Enable Logstash format compatibility. + // This option takes a boolean value: True/False, On/Off + LogstashFormat *bool `json:"logstashFormat,omitempty"` + // When Logstash_Format is enabled, the Index name is composed using a prefix and the date, + // e.g: If Logstash_Prefix is equals to 'mydata' your index will become 'mydata-YYYY.MM.DD'. + // The last string appended belongs to the date when the data is being generated. + LogstashPrefix string `json:"logstashPrefix,omitempty"` + // Time format (based on strftime) to generate the second part of the Index name. + LogstashDateFormat string `json:"logstashDateFormat,omitempty"` + // When Logstash_Format is enabled, each record will get a new timestamp field. + // The Time_Key property defines the name of that field. + TimeKey string `json:"timeKey,omitempty"` + // When Logstash_Format is enabled, this property defines the format of the timestamp. + TimeKeyFormat string `json:"timeKeyFormat,omitempty"` + // When Logstash_Format is enabled, enabling this property sends nanosecond precision timestamps. + TimeKeyNanos *bool `json:"timeKeyNanos,omitempty"` + // When enabled, it append the Tag name to the record. + IncludeTagKey *bool `json:"includeTagKey,omitempty"` + // When Include_Tag_Key is enabled, this property defines the key name for the tag. + TagKey string `json:"tagKey,omitempty"` + // When enabled, generate _id for outgoing records. + // This prevents duplicate records when retrying ES. + GenerateID *bool `json:"generateID,omitempty"` + // If set, _id will be the value of the key from incoming record and Generate_ID option is ignored. + IdKey string `json:"idKey,omitempty"` + // When enabled, replace field name dots with underscore, required by Elasticsearch 2.0-2.3. + ReplaceDots *bool `json:"replaceDots,omitempty"` + // When enabled print the elasticsearch API calls to stdout (for diag only) + TraceOutput *bool `json:"traceOutput,omitempty"` + // When enabled print the elasticsearch API calls to stdout when elasticsearch returns an error + TraceError *bool `json:"traceError,omitempty"` + // Use current time for index generation instead of message record + CurrentTimeIndex *bool `json:"currentTimeIndex,omitempty"` + // Prefix keys with this string + LogstashPrefixKey string `json:"logstashPrefixKey,omitempty"` + // When enabled, mapping types is removed and Type option is ignored. Types are deprecated in APIs in v7.0. This options is for v7.0 or later. + SuppressTypeName string `json:"suppressTypeName,omitempty"` + *plugins.TLS `json:"tls,omitempty"` +} + +// Name implement Section() method +func (_ *Elasticsearch) Name() string { + return "es" +} + +// Params implement Section() method +func (es *Elasticsearch) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if es.Host != "" { + kvs.Insert("Host", es.Host) + } + if es.Port != nil { + kvs.Insert("Port", fmt.Sprint(*es.Port)) + } + if es.Path != "" { + kvs.Insert("Path", es.Path) + } + if es.BufferSize != "" { + kvs.Insert("Buffer_Size", es.BufferSize) + } + if es.Pipeline != "" { + kvs.Insert("Pipeline", es.Pipeline) + } + if es.AWSAuth != "" { + kvs.Insert("AWS_Auth", es.AWSAuth) + } + if es.AWSRegion != "" { + kvs.Insert("AWS_Region", es.AWSRegion) + } + if es.AWSSTSEndpoint != "" { + kvs.Insert("AWS_STS_Endpoint", es.AWSSTSEndpoint) + } + if es.AWSRoleARN != "" { + kvs.Insert("AWS_Role_ARN", es.AWSRoleARN) + } + if es.CloudID != "" { + kvs.Insert("Cloud_ID", es.CloudID) + } + if es.CloudAuth != "" { + kvs.Insert("Cloud_Auth", es.CloudAuth) + } + if es.AWSExternalID != "" { + kvs.Insert("AWS_External_ID", es.AWSExternalID) + } + if es.HTTPUser != nil { + u, err := sl.LoadSecret(*es.HTTPUser) + if err != nil { + return nil, err + } + kvs.Insert("HTTP_User", u) + } + if es.HTTPPasswd != nil { + pwd, err := sl.LoadSecret(*es.HTTPPasswd) + if err != nil { + return nil, err + } + kvs.Insert("HTTP_Passwd", pwd) + } + if es.Index != "" { + kvs.Insert("Index", es.Index) + } + if es.Type != "" { + kvs.Insert("Type", es.Type) + } + if es.LogstashFormat != nil { + kvs.Insert("Logstash_Format", fmt.Sprint(*es.LogstashFormat)) + } + if es.LogstashPrefix != "" { + kvs.Insert("Logstash_Prefix", es.LogstashPrefix) + } + if es.LogstashDateFormat != "" { + kvs.Insert("Logstash_DateFormat", es.LogstashDateFormat) + } + if es.TimeKey != "" { + kvs.Insert("Time_Key", es.TimeKey) + } + if es.TimeKeyFormat != "" { + kvs.Insert("Time_Key_Format", es.TimeKeyFormat) + } + if es.TimeKeyNanos != nil { + kvs.Insert("Time_Key_Nanos", fmt.Sprint(*es.TimeKeyNanos)) + } + if es.IncludeTagKey != nil { + kvs.Insert("Include_Tag_Key", fmt.Sprint(*es.IncludeTagKey)) + } + if es.TagKey != "" { + kvs.Insert("Tag_Key", es.TagKey) + } + if es.GenerateID != nil { + kvs.Insert("Generate_ID", fmt.Sprint(*es.GenerateID)) + } + if es.IdKey != "" { + kvs.Insert("ID_KEY", es.IdKey) + } + if es.ReplaceDots != nil { + kvs.Insert("Replace_Dots", fmt.Sprint(*es.ReplaceDots)) + } + if es.TraceOutput != nil { + kvs.Insert("Trace_Output", fmt.Sprint(*es.TraceOutput)) + } + if es.TraceError != nil { + kvs.Insert("Trace_Error", fmt.Sprint(*es.TraceError)) + } + if es.CurrentTimeIndex != nil { + kvs.Insert("Current_Time_Index", fmt.Sprint(*es.CurrentTimeIndex)) + } + if es.LogstashPrefixKey != "" { + kvs.Insert("Logstash_Prefix_Key", es.LogstashPrefixKey) + } + if es.SuppressTypeName != "" { + kvs.Insert("Suppress_Type_Name", es.SuppressTypeName) + } + if es.TLS != nil { + tls, err := es.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/file_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/file_types.go new file mode 100644 index 000000000..d5f6dd467 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/file_types.go @@ -0,0 +1,53 @@ +package output + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The file output plugin allows to write the data received through the input plugin to file.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/file** +type File struct { + // Absolute directory path to store files. If not set, Fluent Bit will write the files on it's own positioned directory. + Path string `json:"path,omitempty"` + // Set file name to store the records. If not set, the file name will be the tag associated with the records. + File string `json:"file,omitempty"` + // The format of the file content. See also Format section. Default: out_file. + // +kubebuilder:validation:Enum:=out_file;plain;csv;ltsv;template + Format string `json:"format,omitempty"` + // The character to separate each pair. Applicable only if format is csv or ltsv. + Delimiter string `json:"delimiter,omitempty"` + // The character to separate each pair. Applicable only if format is ltsv. + LabelDelimiter string `json:"labelDelimiter,omitempty"` + // The format string. Applicable only if format is template. + Template string `json:"template,omitempty"` +} + +func (_ *File) Name() string { + return "file" +} + +func (f *File) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if f.Path != "" { + kvs.Insert("Path", f.Path) + } + if f.File != "" { + kvs.Insert("File", f.File) + } + if f.Format != "" { + kvs.Insert("Format", f.Format) + } + if f.Delimiter != "" { + kvs.Insert("Delimiter", f.Delimiter) + } + if f.LabelDelimiter != "" { + kvs.Insert("Label_Delimiter", f.LabelDelimiter) + } + if f.Template != "" { + kvs.Insert("Template", f.Template) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/firehose_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/firehose_types.go new file mode 100644 index 000000000..166533e9e --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/firehose_types.go @@ -0,0 +1,78 @@ +package output + +import ( + "strconv" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The Firehose output plugin, allows to ingest your records into AWS Firehose.
+// It uses the new high performance kinesis_firehose plugin (written in C) instead
+// of the older firehose plugin (written in Go).
+// The fluent-bit container must have the plugin installed.
+// https://docs.fluentbit.io/manual/pipeline/outputs/firehose
+// https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit
+type Firehose struct { + // The AWS region. + Region string `json:"region"` + // The name of the Kinesis Firehose Delivery stream that you want log records sent to. + DeliveryStream string `json:"deliveryStream"` + // Add the timestamp to the record under this key. By default, the timestamp from Fluent Bit will not be added to records sent to Kinesis. + TimeKey *string `json:"timeKey,omitempty"` + // strftime compliant format string for the timestamp; for example, %Y-%m-%dT%H *string This option is used with time_key. You can also use %L for milliseconds and %f for microseconds. If you are using ECS FireLens, make sure you are running Amazon ECS Container Agent v1.42.0 or later, otherwise the timestamps associated with your container logs will only have second precision. + TimeKeyFormat *string `json:"timeKeyFormat,omitempty"` + // By default, the whole log record will be sent to Kinesis. If you specify a key name(s) with this option, then only those keys and values will be sent to Kinesis. For example, if you are using the Fluentd Docker log driver, you can specify data_keys log and only the log message will be sent to Kinesis. If you specify multiple keys, they should be comma delimited. + DataKeys *string `json:"dataKeys,omitempty"` + // By default, the whole log record will be sent to Firehose. If you specify a key name with this option, then only the value of that key will be sent to Firehose. For example, if you are using the Fluentd Docker log driver, you can specify log_key log and only the log message will be sent to Firehose. + LogKey *string `json:"logKey,omitempty"` + // ARN of an IAM role to assume (for cross account access). + RoleARN *string `json:"roleARN,omitempty"` + // Specify a custom endpoint for the Kinesis Firehose API. + Endpoint *string `json:"endpoint,omitempty"` + // Specify a custom endpoint for the STS API; used to assume your custom role provided with role_arn. + STSEndpoint *string `json:"stsEndpoint,omitempty"` + // Immediately retry failed requests to AWS services once. This option does not affect the normal Fluent Bit retry mechanism with backoff. Instead, it enables an immediate retry with no delay for networking errors, which may help improve throughput when there are transient/random networking issues. + AutoRetryRequests *bool `json:"autoRetryRequests,omitempty"` +} + +// implement Section() method +func (_ *Firehose) Name() string { + return "kinesis_firehose" +} + +// implement Section() method +func (l *Firehose) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + kvs.Insert("region", l.Region) + kvs.Insert("delivery_stream", l.DeliveryStream) + + if l.DataKeys != nil && *l.DataKeys != "" { + kvs.Insert("data_keys", *l.DataKeys) + } + if l.LogKey != nil && *l.LogKey != "" { + kvs.Insert("log_key", *l.LogKey) + } + if l.RoleARN != nil && *l.RoleARN != "" { + kvs.Insert("role_arn", *l.RoleARN) + } + if l.Endpoint != nil && *l.Endpoint != "" { + kvs.Insert("endpoint", *l.Endpoint) + } + if l.STSEndpoint != nil && *l.STSEndpoint != "" { + kvs.Insert("sts_endpoint", *l.STSEndpoint) + } + if l.TimeKey != nil && *l.TimeKey != "" { + kvs.Insert("time_key", *l.TimeKey) + } + if l.TimeKeyFormat != nil && *l.TimeKeyFormat != "" { + kvs.Insert("time_key_format", *l.TimeKeyFormat) + } + if l.AutoRetryRequests != nil { + kvs.Insert("auto_retry_requests", strconv.FormatBool(*l.AutoRetryRequests)) + } + + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/forward_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/forward_types.go new file mode 100644 index 000000000..9e18f8d00 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/forward_types.go @@ -0,0 +1,96 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Forward is the protocol used by Fluentd to route messages between peers.
+// The forward output plugin allows to provide interoperability between Fluent Bit and Fluentd.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/forward** +type Forward struct { + // Target host where Fluent-Bit or Fluentd are listening for Forward messages. + Host string `json:"host,omitempty"` + // TCP Port of the target service. + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Set timestamps in integer format, it enable compatibility mode for Fluentd v0.12 series. + TimeAsInteger *bool `json:"timeAsInteger,omitempty"` + // Always send options (with "size"=count of messages) + SendOptions *bool `json:"sendOptions,omitempty"` + // Send "chunk"-option and wait for "ack" response from server. + // Enables at-least-once and receiving server can control rate of traffic. + // (Requires Fluentd v0.14.0+ server) + RequireAckResponse *bool `json:"requireAckResponse,omitempty"` + // A key string known by the remote Fluentd used for authorization. + SharedKey string `json:"sharedKey,omitempty"` + // Use this option to connect to Fluentd with a zero-length secret. + EmptySharedKey *bool `json:"emptySharedKey,omitempty"` + // Specify the username to present to a Fluentd server that enables user_auth. + Username *plugins.Secret `json:"username,omitempty"` + // Specify the password corresponding to the username. + Password *plugins.Secret `json:"password,omitempty"` + // Default value of the auto-generated certificate common name (CN). + SelfHostname string `json:"selfHostname,omitempty"` + *plugins.TLS `json:"tls,omitempty"` +} + +func (_ *Forward) Name() string { + return "forward" +} + +// implement Section() method +func (f *Forward) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if f.Host != "" { + kvs.Insert("Host", f.Host) + } + if f.Port != nil { + kvs.Insert("Port", fmt.Sprint(*f.Port)) + } + if f.TimeAsInteger != nil { + kvs.Insert("Time_as_Integer", fmt.Sprint(*f.TimeAsInteger)) + } + if f.SendOptions != nil { + kvs.Insert("Send_options", fmt.Sprint(*f.SendOptions)) + } + if f.RequireAckResponse != nil { + kvs.Insert("Require_ack_response", fmt.Sprint(*f.RequireAckResponse)) + } + if f.SharedKey != "" { + kvs.Insert("Shared_Key", f.SharedKey) + } + if f.EmptySharedKey != nil { + kvs.Insert("Empty_Shared_Key", fmt.Sprint(*f.EmptySharedKey)) + } + if f.Username != nil { + u, err := sl.LoadSecret(*f.Username) + if err != nil { + return nil, err + } + kvs.Insert("Username", u) + } + if f.Password != nil { + pwd, err := sl.LoadSecret(*f.Password) + if err != nil { + return nil, err + } + kvs.Insert("Password", pwd) + } + if f.SelfHostname != "" { + kvs.Insert("Self_Hostname", f.SelfHostname) + } + if f.TLS != nil { + tls, err := f.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/http_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/http_types.go new file mode 100644 index 000000000..1e7fd3143 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/http_types.go @@ -0,0 +1,144 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The http output plugin allows to flush your records into a HTTP endpoint.
+// For now the functionality is pretty basic and it issues a POST request +// with the data records in MessagePack (or JSON) format.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/http** +type HTTP struct { + // IP address or hostname of the target HTTP Server + Host string `json:"host,omitempty"` + // Basic Auth Username + HTTPUser *plugins.Secret `json:"httpUser,omitempty"` + // Basic Auth Password. Requires HTTP_User to be set + HTTPPasswd *plugins.Secret `json:"httpPassword,omitempty"` + // TCP port of the target HTTP Server + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Specify an HTTP Proxy. The expected format of this value is http://host:port. + // Note that https is not supported yet. + Proxy string `json:"proxy,omitempty"` + // Specify an optional HTTP URI for the target web server, e.g: /something + Uri string `json:"uri,omitempty"` + // Set payload compression mechanism. Option available is 'gzip' + Compress string `json:"compress,omitempty"` + // Specify the data format to be used in the HTTP request body, by default it uses msgpack. + // Other supported formats are json, json_stream and json_lines and gelf. + // +kubebuilder:validation:Enum:=msgpack;json;json_stream;json_lines;gelf + Format string `json:"format,omitempty"` + // Specify if duplicated headers are allowed. + // If a duplicated header is found, the latest key/value set is preserved. + AllowDuplicatedHeaders *bool `json:"allowDuplicatedHeaders,omitempty"` + // Specify an optional HTTP header field for the original message tag. + HeaderTag string `json:"headerTag,omitempty"` + // Add a HTTP header key/value pair. Multiple headers can be set. + Headers map[string]string `json:"headers,omitempty"` + // Specify the name of the time key in the output record. + // To disable the time key just set the value to false. + JsonDateKey string `json:"jsonDateKey,omitempty"` + // Specify the format of the date. Supported formats are double, epoch + // and iso8601 (eg: 2018-05-30T09:39:52.000681Z) + JsonDateFormat string `json:"jsonDateFormat,omitempty"` + // Specify the key to use for timestamp in gelf format + GelfTimestampKey string `json:"gelfTimestampKey,omitempty"` + // Specify the key to use for the host in gelf format + GelfHostKey string `json:"gelfHostKey,omitempty"` + // Specify the key to use as the short message in gelf format + GelfShortMessageKey string `json:"gelfShortMessageKey,omitempty"` + // Specify the key to use for the full message in gelf format + GelfFullMessageKey string `json:"gelfFullMessageKey,omitempty"` + // Specify the key to use for the level in gelf format + GelfLevelKey string `json:"gelfLevelKey,omitempty"` + // HTTP output plugin supports TTL/SSL, for more details about the properties available + // and general configuration, please refer to the TLS/SSL section. + *plugins.TLS `json:"tls,omitempty"` +} + +// implement Name method +func (*HTTP) Name() string { + return "http" +} + +// implement Params method +func (h *HTTP) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if h.Host != "" { + kvs.Insert("host", h.Host) + } + if h.HTTPUser != nil { + u, err := sl.LoadSecret(*h.HTTPUser) + if err != nil { + return nil, err + } + kvs.Insert("http_User", u) + } + if h.HTTPPasswd != nil { + pwd, err := sl.LoadSecret(*h.HTTPPasswd) + if err != nil { + return nil, err + } + kvs.Insert("http_Passwd", pwd) + } + if h.Port != nil { + kvs.Insert("port", fmt.Sprint(*h.Port)) + } + if h.Proxy != "" { + kvs.Insert("Proxy", h.Proxy) + } + if h.Uri != "" { + kvs.Insert("uri", h.Uri) + } + if h.Compress != "" { + kvs.Insert("compress", h.Compress) + } + if h.Format != "" { + kvs.Insert("format", h.Format) + } + if h.AllowDuplicatedHeaders != nil { + kvs.Insert("allow_duplicated_headers", fmt.Sprint(*h.AllowDuplicatedHeaders)) + } + if h.HeaderTag != "" { + kvs.Insert("header_tag", h.HeaderTag) + } + kvs.InsertStringMap(h.Headers, func(k, v string) (string, string) { + return "header", fmt.Sprintf(" %s %s", k, v) + }) + if h.JsonDateKey != "" { + kvs.Insert("json_date_key", h.JsonDateKey) + } + if h.JsonDateFormat != "" { + kvs.Insert("json_date_format", h.JsonDateFormat) + } + if h.GelfTimestampKey != "" { + kvs.Insert("gelf_timestamp_key", h.GelfTimestampKey) + } + if h.GelfHostKey != "" { + kvs.Insert("gelf_host_key", h.GelfHostKey) + } + if h.GelfShortMessageKey != "" { + kvs.Insert("gelf_short_message_key", h.GelfShortMessageKey) + } + if h.GelfFullMessageKey != "" { + kvs.Insert("gelf_full_message_key", h.GelfFullMessageKey) + } + if h.GelfLevelKey != "" { + kvs.Insert("gelf_level_key", h.GelfLevelKey) + } + if h.TLS != nil { + tls, err := h.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/kafka_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/kafka_types.go new file mode 100644 index 000000000..764e6e470 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/kafka_types.go @@ -0,0 +1,92 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Kafka output plugin allows to ingest your records into an Apache Kafka service.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/kafka** +type Kafka struct { + // Specify data format, options available: json, msgpack. + Format string `json:"format,omitempty"` + // Optional key to store the message + MessageKey string `json:"messageKey,omitempty"` + // If set, the value of Message_Key_Field in the record will indicate the message key. + // If not set nor found in the record, Message_Key will be used (if set). + MessageKeyField string `json:"messageKeyField,omitempty"` + // Set the key to store the record timestamp + TimestampKey string `json:"timestampKey,omitempty"` + // iso8601 or double + TimestampFormat string `json:"timestampFormat,omitempty"` + // Single of multiple list of Kafka Brokers, e.g: 192.168.1.3:9092, 192.168.1.4:9092. + Brokers string `json:"brokers,omitempty"` + // Single entry or list of topics separated by comma (,) that Fluent Bit will use to send messages to Kafka. + // If only one topic is set, that one will be used for all records. + // Instead if multiple topics exists, the one set in the record by Topic_Key will be used. + Topics string `json:"topics,omitempty"` + // If multiple Topics exists, the value of Topic_Key in the record will indicate the topic to use. + // E.g: if Topic_Key is router and the record is {"key1": 123, "router": "route_2"}, + // Fluent Bit will use topic route_2. Note that if the value of Topic_Key is not present in Topics, + // then by default the first topic in the Topics list will indicate the topic to be used. + TopicKey string `json:"topicKey,omitempty"` + // {property} can be any librdkafka properties + Rdkafka map[string]string `json:"rdkafka,omitempty"` + //adds unknown topics (found in Topic_Key) to Topics. So in Topics only a default topic needs to be configured + DynamicTopic *bool `json:"dynamicTopic,omitempty"` + //Fluent Bit queues data into rdkafka library, + //if for some reason the underlying library cannot flush the records the queue might fills up blocking new addition of records. + //The queue_full_retries option set the number of local retries to enqueue the data. + //The default value is 10 times, the interval between each retry is 1 second. + //Setting the queue_full_retries value to 0 set's an unlimited number of retries. + QueueFullRetries *int64 `json:"queueFullRetries,omitempty"` +} + +func (*Kafka) Name() string { + return "kafka" +} + +// implement Section() method +func (k *Kafka) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if k.Format != "" { + kvs.Insert("Format", k.Format) + } + if k.MessageKey != "" { + kvs.Insert("Message_Key", k.MessageKey) + } + if k.MessageKeyField != "" { + kvs.Insert("Message_Key_Field", k.MessageKeyField) + } + if k.TimestampKey != "" { + kvs.Insert("Timestamp_Key", k.TimestampKey) + } + if k.TimestampFormat != "" { + kvs.Insert("Timestamp_Format", k.TimestampFormat) + } + if k.Brokers != "" { + kvs.Insert("Brokers", k.Brokers) + } + if k.Topics != "" { + kvs.Insert("Topics", k.Topics) + } + if k.TopicKey != "" { + kvs.Insert("Topic_Key", k.TopicKey) + } + if k.DynamicTopic != nil { + kvs.Insert("Dynamic_topic", fmt.Sprint(*k.DynamicTopic)) + } + if k.QueueFullRetries != nil { + kvs.Insert("queue_full_retries", fmt.Sprint(*k.QueueFullRetries)) + } + + kvs.InsertStringMap(k.Rdkafka, func(k, v string) (string, string) { + return fmt.Sprintf("rdkafka.%s", k), v + }) + + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/loki_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/loki_types.go new file mode 100644 index 000000000..58f5a3b92 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/loki_types.go @@ -0,0 +1,102 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" + "github.com/fluent/fluent-operator/v2/pkg/utils" +) + +// +kubebuilder:object:generate:=true + +// The loki output plugin, allows to ingest your records into a Loki service.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/loki** +type Loki struct { + // Loki hostname or IP address. + Host string `json:"host"` + // Loki TCP port + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Set HTTP basic authentication user name. + HTTPUser *plugins.Secret `json:"httpUser,omitempty"` + // Password for user defined in HTTP_User + // Set HTTP basic authentication password + HTTPPasswd *plugins.Secret `json:"httpPassword,omitempty"` + // Tenant ID used by default to push logs to Loki. + // If omitted or empty it assumes Loki is running in single-tenant mode and no X-Scope-OrgID header is sent. + TenantID *plugins.Secret `json:"tenantID,omitempty"` + // Stream labels for API request. It can be multiple comma separated of strings specifying key=value pairs. + // In addition to fixed parameters, it also allows to add custom record keys (similar to label_keys property). + Labels []string `json:"labels,omitempty"` + // Optional list of record keys that will be placed as stream labels. + // This configuration property is for records key only. + LabelKeys []string `json:"labelKeys,omitempty"` + // Format to use when flattening the record to a log line. Valid values are json or key_value. + // If set to json, the log line sent to Loki will be the Fluent Bit record dumped as JSON. + // If set to key_value, the log line will be each item in the record concatenated together (separated by a single space) in the format. + // +kubebuilder:validation:Enum:=json;key_value + LineFormat string `json:"lineFormat,omitempty"` + // If set to true, it will add all Kubernetes labels to the Stream labels. + // +kubebuilder:validation:Enum:=on;off + AutoKubernetesLabels string `json:"autoKubernetesLabels,omitempty"` + *plugins.TLS `json:"tls,omitempty"` +} + +// implement Section() method +func (_ *Loki) Name() string { + return "loki" +} + +// implement Section() method +func (l *Loki) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if l.Host != "" { + kvs.Insert("host", l.Host) + } + if l.Port != nil { + kvs.Insert("port", fmt.Sprint(*l.Port)) + } + if l.HTTPUser != nil { + u, err := sl.LoadSecret(*l.HTTPUser) + if err != nil { + return nil, err + } + kvs.Insert("http_user", u) + } + if l.HTTPPasswd != nil { + pwd, err := sl.LoadSecret(*l.HTTPPasswd) + if err != nil { + return nil, err + } + kvs.Insert("http_passwd", pwd) + } + if l.TenantID != nil { + id, err := sl.LoadSecret(*l.TenantID) + if err != nil { + return nil, err + } + kvs.Insert("tenant_id", id) + } + if l.Labels != nil && len(l.Labels) > 0 { + kvs.Insert("labels", utils.ConcatString(l.Labels, ",")) + } + if l.LabelKeys != nil && len(l.LabelKeys) > 0 { + kvs.Insert("label_keys", utils.ConcatString(l.LabelKeys, ",")) + } + if l.LineFormat != "" { + kvs.Insert("line_format", l.LineFormat) + } + if l.AutoKubernetesLabels != "" { + kvs.Insert("auto_kubernetes_labels", l.AutoKubernetesLabels) + } + if l.TLS != nil { + tls, err := l.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/null_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/null_types.go new file mode 100644 index 000000000..ceac4f429 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/null_types.go @@ -0,0 +1,20 @@ +package output + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The null output plugin just throws away events. +type Null struct{} + +func (_ *Null) Name() string { + return "null" +} + +// implement Section() method +func (_ *Null) Params(_ plugins.SecretLoader) (*params.KVs, error) { + return nil, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_search_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_search_types.go new file mode 100644 index 000000000..7bdfa40ce --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_search_types.go @@ -0,0 +1,219 @@ +package output + +import ( + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// OpenSearch is the opensearch output plugin, allows to ingest your records into an OpenSearch database.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/opensearch** +type OpenSearch struct { + // IP address or hostname of the target OpenSearch instance, default `127.0.0.1` + Host string `json:"host,omitempty"` + // TCP port of the target OpenSearch instance, default `9200` + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // OpenSearch accepts new data on HTTP query path "/_bulk". + // But it is also possible to serve OpenSearch behind a reverse proxy on a subpath. + // This option defines such path on the fluent-bit side. + // It simply adds a path prefix in the indexing HTTP POST URI. + Path string `json:"path,omitempty"` + // Specify the buffer size used to read the response from the OpenSearch HTTP service. + // This option is useful for debugging purposes where is required to read full responses, + // note that response size grows depending of the number of records inserted. + // To set an unlimited amount of memory set this value to False, + // otherwise the value must be according to the Unit Size specification. + // +kubebuilder:validation:Pattern:="^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$" + BufferSize string `json:"bufferSize,omitempty"` + // OpenSearch allows to setup filters called pipelines. + // This option allows to define which pipeline the database should use. + // For performance reasons is strongly suggested to do parsing + // and filtering on Fluent Bit side, avoid pipelines. + Pipeline string `json:"pipeline,omitempty"` + // Enable AWS Sigv4 Authentication for Amazon OpenSearch Service. + AWSAuth string `json:"awsAuth,omitempty"` + // Specify the AWS region for Amazon OpenSearch Service. + AWSRegion string `json:"awsRegion,omitempty"` + // Specify the custom sts endpoint to be used with STS API for Amazon OpenSearch Service. + AWSSTSEndpoint string `json:"awsSTSEndpoint,omitempty"` + // AWS IAM Role to assume to put records to your Amazon cluster. + AWSRoleARN string `json:"awsRoleARN,omitempty"` + // External ID for the AWS IAM Role specified with aws_role_arn. + AWSExternalID string `json:"awsExternalID,omitempty"` + // Optional username credential for access + HTTPUser *plugins.Secret `json:"httpUser,omitempty"` + // Password for user defined in HTTP_User + HTTPPasswd *plugins.Secret `json:"httpPassword,omitempty"` + // Index name + Index string `json:"index,omitempty"` + // Type name + Type string `json:"type,omitempty"` + // Enable Logstash format compatibility. + // This option takes a boolean value: True/False, On/Off + LogstashFormat *bool `json:"logstashFormat,omitempty"` + // When Logstash_Format is enabled, the Index name is composed using a prefix and the date, + // e.g: If Logstash_Prefix is equals to 'mydata' your index will become 'mydata-YYYY.MM.DD'. + // The last string appended belongs to the date when the data is being generated. + LogstashPrefix string `json:"logstashPrefix,omitempty"` + // Time format (based on strftime) to generate the second part of the Index name. + LogstashDateFormat string `json:"logstashDateFormat,omitempty"` + // When Logstash_Format is enabled, each record will get a new timestamp field. + // The Time_Key property defines the name of that field. + TimeKey string `json:"timeKey,omitempty"` + // When Logstash_Format is enabled, this property defines the format of the timestamp. + TimeKeyFormat string `json:"timeKeyFormat,omitempty"` + // When Logstash_Format is enabled, enabling this property sends nanosecond precision timestamps. + TimeKeyNanos *bool `json:"timeKeyNanos,omitempty"` + // When enabled, it append the Tag name to the record. + IncludeTagKey *bool `json:"includeTagKey,omitempty"` + // When Include_Tag_Key is enabled, this property defines the key name for the tag. + TagKey string `json:"tagKey,omitempty"` + // When enabled, generate _id for outgoing records. + // This prevents duplicate records when retrying OpenSearch. + GenerateID *bool `json:"generateID,omitempty"` + // If set, _id will be the value of the key from incoming record and Generate_ID option is ignored. + IdKey string `json:"idKey,omitempty"` + // Operation to use to write in bulk requests. + WriteOperation string `json:"writeOperation,omitempty"` + // When enabled, replace field name dots with underscore, required by Elasticsearch 2.0-2.3. + ReplaceDots *bool `json:"replaceDots,omitempty"` + // When enabled print the elasticsearch API calls to stdout (for diag only) + TraceOutput *bool `json:"traceOutput,omitempty"` + // When enabled print the elasticsearch API calls to stdout when elasticsearch returns an error + TraceError *bool `json:"traceError,omitempty"` + // Use current time for index generation instead of message record + CurrentTimeIndex *bool `json:"currentTimeIndex,omitempty"` + // Prefix keys with this string + LogstashPrefixKey string `json:"logstashPrefixKey,omitempty"` + // When enabled, mapping types is removed and Type option is ignored. Types are deprecated in APIs in v7.0. This options is for v7.0 or later. + SuppressTypeName *bool `json:"suppressTypeName,omitempty"` + // Enables dedicated thread(s) for this output. Default value is set since version 1.8.13. For previous versions is 0. + Workers *int32 `json:"Workers,omitempty"` + *plugins.TLS `json:"tls,omitempty"` +} + +// Name implement Section() method +func (_ *OpenSearch) Name() string { + return "opensearch" +} + +// Params implement Section() method +func (o *OpenSearch) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if o.Host != "" { + kvs.Insert("Host", o.Host) + } + if o.Port != nil { + kvs.Insert("Port", fmt.Sprint(*o.Port)) + } + if o.Path != "" { + kvs.Insert("Path", o.Path) + } + if o.BufferSize != "" { + kvs.Insert("Buffer_Size", o.BufferSize) + } + if o.Pipeline != "" { + kvs.Insert("Pipeline", o.Pipeline) + } + if o.AWSAuth != "" { + kvs.Insert("AWS_Auth", o.AWSAuth) + } + if o.AWSRegion != "" { + kvs.Insert("AWS_Region", o.AWSRegion) + } + if o.AWSSTSEndpoint != "" { + kvs.Insert("AWS_STS_Endpoint", o.AWSSTSEndpoint) + } + if o.AWSRoleARN != "" { + kvs.Insert("AWS_Role_ARN", o.AWSRoleARN) + } + if o.AWSExternalID != "" { + kvs.Insert("AWS_External_ID", o.AWSExternalID) + } + if o.HTTPUser != nil { + u, err := sl.LoadSecret(*o.HTTPUser) + if err != nil { + return nil, err + } + kvs.Insert("HTTP_User", u) + } + if o.HTTPPasswd != nil { + pwd, err := sl.LoadSecret(*o.HTTPPasswd) + if err != nil { + return nil, err + } + kvs.Insert("HTTP_Passwd", pwd) + } + if o.Index != "" { + kvs.Insert("Index", o.Index) + } + if o.Type != "" { + kvs.Insert("Type", o.Type) + } + if o.LogstashFormat != nil { + kvs.Insert("Logstash_Format", fmt.Sprint(*o.LogstashFormat)) + } + if o.LogstashPrefix != "" { + kvs.Insert("Logstash_Prefix", o.LogstashPrefix) + } + if o.LogstashDateFormat != "" { + kvs.Insert("Logstash_DateFormat", o.LogstashDateFormat) + } + if o.TimeKey != "" { + kvs.Insert("Time_Key", o.TimeKey) + } + if o.TimeKeyFormat != "" { + kvs.Insert("Time_Key_Format", o.TimeKeyFormat) + } + if o.TimeKeyNanos != nil { + kvs.Insert("Time_Key_Nanos", fmt.Sprint(*o.TimeKeyNanos)) + } + if o.IncludeTagKey != nil { + kvs.Insert("Include_Tag_Key", fmt.Sprint(*o.IncludeTagKey)) + } + if o.TagKey != "" { + kvs.Insert("Tag_Key", o.TagKey) + } + if o.GenerateID != nil { + kvs.Insert("Generate_ID", fmt.Sprint(*o.GenerateID)) + } + if o.IdKey != "" { + kvs.Insert("ID_KEY", o.IdKey) + } + if o.WriteOperation != "" { + kvs.Insert("Write_Operation", o.WriteOperation) + } + if o.ReplaceDots != nil { + kvs.Insert("Replace_Dots", fmt.Sprint(*o.ReplaceDots)) + } + if o.TraceOutput != nil { + kvs.Insert("Trace_Output", fmt.Sprint(*o.TraceOutput)) + } + if o.TraceError != nil { + kvs.Insert("Trace_Error", fmt.Sprint(*o.TraceError)) + } + if o.CurrentTimeIndex != nil { + kvs.Insert("Current_Time_Index", fmt.Sprint(*o.CurrentTimeIndex)) + } + if o.LogstashPrefixKey != "" { + kvs.Insert("Logstash_Prefix_Key", o.LogstashPrefixKey) + } + if o.SuppressTypeName != nil { + kvs.Insert("Suppress_Type_Name", fmt.Sprint(*o.SuppressTypeName)) + } + if o.Workers != nil { + kvs.Insert("Workers", fmt.Sprint(*o.Workers)) + } + if o.TLS != nil { + tls, err := o.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_telemetry_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_telemetry_types.go new file mode 100644 index 000000000..636670d60 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/open_telemetry_types.go @@ -0,0 +1,90 @@ +package output + +import ( + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// OpenTelemetry is An output plugin to submit Metrics to an OpenTelemetry endpoint,
+// allows taking metrics from Fluent Bit and submit them to an OpenTelemetry HTTP endpoint.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/opentelemetry** +type OpenTelemetry struct { + // IP address or hostname of the target HTTP Server, default `127.0.0.1` + Host string `json:"host,omitempty"` + // TCP port of the target OpenSearch instance, default `80` + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Optional username credential for access + HTTPUser *plugins.Secret `json:"httpUser,omitempty"` + // Password for user defined in HTTP_User + HTTPPasswd *plugins.Secret `json:"httpPassword,omitempty"` + // Specify an HTTP Proxy. The expected format of this value is http://HOST:PORT. Note that HTTPS is not currently supported. + // It is recommended not to set this and to configure the HTTP proxy environment variables instead as they support both HTTP and HTTPS. + Proxy string `json:"proxy,omitempty"` + // Specify an optional HTTP URI for the target web server, e.g: /something + Uri string `json:"uri,omitempty"` + // Add a HTTP header key/value pair. Multiple headers can be set. + Header map[string]string `json:"header,omitempty"` + // Log the response payload within the Fluent Bit log. + LogResponsePayload *bool `json:"logResponsePayload,omitempty"` + // This allows you to add custom labels to all metrics exposed through the OpenTelemetry exporter. You may have multiple of these fields. + AddLabel map[string]string `json:"addLabel,omitempty"` + *plugins.TLS `json:"tls,omitempty"` +} + +// Name implement Section() method +func (_ *OpenTelemetry) Name() string { + return "opentelemetry" +} + +// Params implement Section() method +func (o *OpenTelemetry) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if o.Host != "" { + kvs.Insert("host", o.Host) + } + if o.Port != nil { + kvs.Insert("port", fmt.Sprint(*o.Port)) + } + if o.HTTPUser != nil { + u, err := sl.LoadSecret(*o.HTTPUser) + if err != nil { + return nil, err + } + kvs.Insert("http_user", u) + } + if o.HTTPPasswd != nil { + pwd, err := sl.LoadSecret(*o.HTTPPasswd) + if err != nil { + return nil, err + } + kvs.Insert("http_passwd", pwd) + } + if o.Proxy != "" { + kvs.Insert("proxy", o.Proxy) + } + if o.Uri != "" { + kvs.Insert("uri", o.Uri) + } + kvs.InsertStringMap(o.Header, func(k, v string) (string, string) { + return "header", fmt.Sprintf(" %s %s", k, v) + }) + if o.LogResponsePayload != nil { + kvs.Insert("log_response_payload", fmt.Sprint(*o.LogResponsePayload)) + } + kvs.InsertStringMap(o.AddLabel, func(k, v string) (string, string) { + return "add_label", fmt.Sprintf(" %s %s", k, v) + }) + if o.TLS != nil { + tls, err := o.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/prometheus_remote_write_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/prometheus_remote_write_types.go new file mode 100644 index 000000000..b525a2762 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/prometheus_remote_write_types.go @@ -0,0 +1,99 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// An output plugin to submit Prometheus Metrics using the remote write protocol.
+// The prometheus remote write plugin allows you to take metrics from Fluent Bit and submit them to a Prometheus server through the remote write mechanism.
+// **Important Note: The prometheus exporter only works with metric plugins, such as Node Exporter Metrics**
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/prometheus-remote-write** +type PrometheusRemoteWrite struct { + // IP address or hostname of the target HTTP Server, default: 127.0.0.1 + Host string `json:"host"` + // Basic Auth Username + HTTPUser *plugins.Secret `json:"httpUser,omitempty"` + // Basic Auth Password. + // Requires HTTP_user to be se + HTTPPasswd *plugins.Secret `json:"httpPasswd,omitempty"` + // TCP port of the target HTTP Serveri, default:80 + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Specify an HTTP Proxy. The expected format of this value is http://HOST:PORT. + Proxy string `json:"proxy,omitempty"` + //Specify an optional HTTP URI for the target web server, e.g: /something ,default: / + URI string `json:"uri,omitempty"` + //Add a HTTP header key/value pair. Multiple headers can be set. + Headers map[string]string `json:"headers,omitempty"` + //Log the response payload within the Fluent Bit log,default: false + LogResponsePayload *bool `json:"logResponsePayload,omitempty"` + //This allows you to add custom labels to all metrics exposed through the prometheus exporter. You may have multiple of these fields + AddLabels map[string]string `json:"addLabels,omitempty"` + //Enables dedicated thread(s) for this output. Default value is set since version 1.8.13. For previous versions is 0,default : 2 + Workers *int32 `json:"workers,omitempty"` + + *plugins.TLS `json:"tls,omitempty"` +} + +// implement Section() method +func (_ *PrometheusRemoteWrite) Name() string { + return "prometheus_remote_write" +} + +// implement Section() method +func (p *PrometheusRemoteWrite) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if p.Host != "" { + kvs.Insert("host", p.Host) + } + if p.Port != nil { + kvs.Insert("port", fmt.Sprint(*p.Port)) + } + if p.HTTPUser != nil { + u, err := sl.LoadSecret(*p.HTTPUser) + if err != nil { + return nil, err + } + kvs.Insert("http_user", u) + } + if p.HTTPPasswd != nil { + pwd, err := sl.LoadSecret(*p.HTTPPasswd) + if err != nil { + return nil, err + } + kvs.Insert("http_passwd", pwd) + } + if p.Proxy != "" { + kvs.Insert("proxy", p.Proxy) + } + if p.URI != "" { + kvs.Insert("uri", p.URI) + } + kvs.InsertStringMap(p.Headers, func(k, v string) (string, string) { + return "header", fmt.Sprintf(" %s %s", k, v) + }) + + if p.LogResponsePayload != nil { + kvs.Insert("log_response_payload", fmt.Sprint(*p.LogResponsePayload)) + } + kvs.InsertStringMap(p.AddLabels, func(k, v string) (string, string) { + return "add_label", fmt.Sprintf(" %s %s", k, v) + }) + if p.Workers != nil { + kvs.Insert("workers", fmt.Sprint(*p.Workers)) + } + if p.TLS != nil { + tls, err := p.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/splunk_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/splunk_types.go new file mode 100644 index 000000000..8dd8b482a --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/splunk_types.go @@ -0,0 +1,153 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Splunk output plugin allows to ingest your records into a Splunk Enterprise service +// through the HTTP Event Collector (HEC) interface.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/splunk** +type Splunk struct { + // IP address or hostname of the target OpenSearch instance, default `127.0.0.1` + Host string `json:"host,omitempty"` + // TCP port of the target Splunk instance, default `8088` + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Specify the Authentication Token for the HTTP Event Collector interface. + SplunkToken *plugins.Secret `json:"splunkToken,omitempty"` + //Buffer size used to receive Splunk HTTP responses: Default `2M` + // +kubebuilder:validation:Pattern:="^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$" + HTTPBufferSize string `json:"httpBufferSize,omitempty"` + // Set payload compression mechanism. The only available option is gzip. + Compress string `json:"compress,omitempty"` + // Specify X-Splunk-Request-Channel Header for the HTTP Event Collector interface. + Channel string `json:"channel,omitempty"` + // Optional username credential for access + HTTPUser *plugins.Secret `json:"httpUser,omitempty"` + // Password for user defined in HTTP_User + HTTPPasswd *plugins.Secret `json:"httpPassword,omitempty"` + // If the HTTP server response code is 400 (bad request) and this flag is enabled, it will print the full HTTP request + // and response to the stdout interface. This feature is available for debugging purposes. + HTTPDebugBadRequest *bool `json:"httpDebugBadRequest,omitempty"` + // When enabled, the record keys and values are set in the top level of the map instead of under the event key. Refer to + // the Sending Raw Events section from the docs more details to make this option work properly. + SplunkSendRaw *bool `json:"splunkSendRaw,omitempty"` + //Specify the key name that will be used to send a single value as part of the record. + EventKey string `json:"eventKey,omitempty"` + //Specify the key name that contains the host value. This option allows a record accessors pattern. + EventHost string `json:"eventHost,omitempty"` + //Set the source value to assign to the event data. + EventSource string `json:"eventSource,omitempty"` + //Set the sourcetype value to assign to the event data. + EventSourcetype string `json:"eventSourcetype,omitempty"` + // Set a record key that will populate 'sourcetype'. If the key is found, it will have precedence + // over the value set in event_sourcetype. + EventSourcetypeKey string `json:"eventSourcetypeKey,omitempty"` + // The name of the index by which the event data is to be indexed. + EventIndex string `json:"eventIndex,omitempty"` + // Set a record key that will populate the index field. If the key is found, it will have precedence + // over the value set in event_index. + EventIndexKey string `json:"eventIndexKey,omitempty"` + //Set event fields for the record. This option is an array and the format is "key_name + // record_accessor_pattern". + EventFields []string `json:"eventFields,omitempty"` + + // Enables dedicated thread(s) for this output. Default value `2` is set since version 1.8.13. For previous versions is 0. + Workers *int32 `json:"Workers,omitempty"` + *plugins.TLS `json:"tls,omitempty"` +} + +// Name implement Section() method +func (_ *Splunk) Name() string { + return "splunk" +} + +// Params implement Section() method +func (o *Splunk) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if o.Host != "" { + kvs.Insert("host", o.Host) + } + if o.Port != nil { + kvs.Insert("port", fmt.Sprint(*o.Port)) + } + if o.SplunkToken != nil { + u, err := sl.LoadSecret(*o.SplunkToken) + if err != nil { + return nil, err + } + kvs.Insert("splunk_token", u) + } + if o.HTTPBufferSize != "" { + kvs.Insert("http_buffer_size", o.HTTPBufferSize) + } + if o.HTTPUser != nil { + u, err := sl.LoadSecret(*o.HTTPUser) + if err != nil { + return nil, err + } + kvs.Insert("http_user", u) + } + if o.HTTPPasswd != nil { + pwd, err := sl.LoadSecret(*o.HTTPPasswd) + if err != nil { + return nil, err + } + kvs.Insert("http_passwd", pwd) + } + if o.Compress != "" { + kvs.Insert("compress", o.Compress) + } + if o.Channel != "" { + kvs.Insert("channel", o.Channel) + } + if o.HTTPDebugBadRequest != nil { + kvs.Insert("http_debug_bad_request", fmt.Sprint(*o.HTTPDebugBadRequest)) + } + if o.SplunkSendRaw != nil { + kvs.Insert("splunk_send_raw", fmt.Sprint(*o.SplunkSendRaw)) + } + if o.EventKey != "" { + kvs.Insert("event_key", o.EventKey) + } + if o.EventHost != "" { + kvs.Insert("event_host", o.EventHost) + } + if o.EventSource != "" { + kvs.Insert("event_source", o.EventSource) + } + if o.EventSourcetype != "" { + kvs.Insert("event_sourcetype", o.EventSourcetype) + } + if o.EventSourcetypeKey != "" { + kvs.Insert("event_sourcetype_key", o.EventSourcetypeKey) + } + if o.EventIndex != "" { + kvs.Insert("event_index", o.EventIndex) + } + if o.EventIndexKey != "" { + kvs.Insert("event_index_key", o.EventIndexKey) + } + if o.EventFields != nil && len(o.EventFields) > 0 { + for _, v := range o.EventFields { + kvs.Insert("event_field", v) + } + } + if o.Workers != nil { + kvs.Insert("workers", fmt.Sprint(*o.Workers)) + } + if o.TLS != nil { + tls, err := o.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stackdriver_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stackdriver_types.go new file mode 100644 index 000000000..2f1e163d6 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stackdriver_types.go @@ -0,0 +1,144 @@ +package output + +import ( + "fmt" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" + "github.com/fluent/fluent-operator/v2/pkg/utils" +) + +// +kubebuilder:object:generate:=true + +// Stackdriver is the Stackdriver output plugin, allows you to ingest your records into GCP Stackdriver.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/stackdriver** +type Stackdriver struct { + // Path to GCP Credentials JSON file + GoogleServiceCredentials string `json:"googleServiceCredentials,omitempty"` + // Email associated with the service + ServiceAccountEmail *plugins.Secret `json:"serviceAccountEmail,omitempty"` + // Private Key associated with the service + ServiceAccountSecret *plugins.Secret `json:"serviceAccountSecret,omitempty"` + // Metadata Server Prefix + MetadataServer string `json:"metadataServer,omitempty"` + // GCP/AWS region to store data. Required if Resource is generic_node or generic_task + Location string `json:"location,omitempty"` + // Namespace identifier. Required if Resource is generic_node or generic_task + Namespace string `json:"namespace,omitempty"` + // Node identifier within the namespace. Required if Resource is generic_node or generic_task + NodeID string `json:"nodeID,omitempty"` + // Identifier for a grouping of tasks. Required if Resource is generic_task + Job string `json:"job,omitempty"` + // Identifier for a task within a namespace. Required if Resource is generic_task + TaskID string `json:"taskID,omitempty"` + // The GCP Project that should receive the logs + ExportToProjectID string `json:"exportToProjectID,omitempty"` + // Set resource types of data + Resource string `json:"resource,omitempty"` + // Name of the cluster that the pod is running in. Required if Resource is k8s_container, k8s_node, or k8s_pod + K8sClusterName string `json:"k8sClusterName,omitempty"` + // Location of the cluster that contains the pods/nodes. Required if Resource is k8s_container, k8s_node, or k8s_pod + K8sClusterLocation string `json:"k8sClusterLocation,omitempty"` + // Used by Stackdriver to find related labels and extract them to LogEntry Labels + LabelsKey string `json:"labelsKey,omitempty"` + // Optional list of comma separated of strings for key/value pairs + Labels []string `json:"labels,omitempty"` + // The value of this field is set as the logName field in Stackdriver + LogNameKey string `json:"logNameKey,omitempty"` + // Used to validate the tags of logs that when the Resource is k8s_container, k8s_node, or k8s_pod + TagPrefix string `json:"tagPrefix,omitempty"` + // Specify the key that contains the severity information for the logs + SeverityKey string `json:"severityKey,omitempty"` + // Rewrite the trace field to be formatted for use with GCP Cloud Trace + AutoformatStackdriverTrace *bool `json:"autoformatStackdriverTrace,omitempty"` + // Number of dedicated threads for the Stackdriver Output Plugin + Workers *int32 `json:"workers,omitempty"` + // A custom regex to extract fields from the local_resource_id of the logs + CustomK8sRegex string `json:"customK8sRegex,omitempty"` + // Optional list of comma seperated strings. Setting these fields overrides the Stackdriver monitored resource API values + ResourceLabels []string `json:"resourceLabels,omitempty"` +} + +// Name implement Section() method +func (_ *Stackdriver) Name() string { + return "stackdriver" +} + +// Params implement Section() method +func (o *Stackdriver) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if o.GoogleServiceCredentials != "" { + kvs.Insert("google_service_credentials", o.GoogleServiceCredentials) + } + if o.ServiceAccountEmail != nil { + u, err := sl.LoadSecret(*o.ServiceAccountEmail) + if err != nil { + return nil, err + } + kvs.Insert("service_account_email", u) + } + if o.ServiceAccountSecret != nil { + u, err := sl.LoadSecret(*o.ServiceAccountSecret) + if err != nil { + return nil, err + } + kvs.Insert("service_account_secret", u) + } + if o.MetadataServer != "" { + kvs.Insert("metadata_server", o.MetadataServer) + } + if o.Location != "" { + kvs.Insert("location", o.Location) + } + if o.Namespace != "" { + kvs.Insert("namespace", o.Namespace) + } + if o.NodeID != "" { + kvs.Insert("node_id", o.NodeID) + } + if o.Job != "" { + kvs.Insert("job", o.Job) + } + if o.TaskID != "" { + kvs.Insert("task_id", o.TaskID) + } + if o.ExportToProjectID != "" { + kvs.Insert("export_to_project_id", o.ExportToProjectID) + } + if o.Resource != "" { + kvs.Insert("resource", o.Resource) + } + if o.K8sClusterName != "" { + kvs.Insert("k8s_cluster_name", o.K8sClusterName) + } + if o.K8sClusterLocation != "" { + kvs.Insert("k8s_cluster_location", o.K8sClusterLocation) + } + if o.LabelsKey != "" { + kvs.Insert("labels_key", o.LabelsKey) + } + if o.Labels != nil && len(o.Labels) > 0 { + kvs.Insert("labels", utils.ConcatString(o.Labels, ",")) + } + if o.LogNameKey != "" { + kvs.Insert("log_name_key", o.LogNameKey) + } + if o.TagPrefix != "" { + kvs.Insert("tag_prefix", o.TagPrefix) + } + if o.SeverityKey != "" { + kvs.Insert("severity_key", o.SeverityKey) + } + if o.AutoformatStackdriverTrace != nil { + kvs.Insert("autoformat_stackdriver_trace", fmt.Sprint(*o.AutoformatStackdriverTrace)) + } + if o.Workers != nil { + kvs.Insert("Workers", fmt.Sprint(*o.Workers)) + } + if o.CustomK8sRegex != "" { + kvs.Insert("custom_k8s_regex", o.CustomK8sRegex) + } + if o.ResourceLabels != nil && len(o.ResourceLabels) > 0 { + kvs.Insert("resource_labels", utils.ConcatString(o.ResourceLabels, ",")) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stdout_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stdout_types.go new file mode 100644 index 000000000..890cff6ba --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/stdout_types.go @@ -0,0 +1,40 @@ +package output + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The stdout output plugin allows to print to the standard output the data received through the input plugin.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/standard-output** +type Stdout struct { + // Specify the data format to be printed. Supported formats are msgpack json, json_lines and json_stream. + // +kubebuilder:validation:Enum:=msgpack;json;json_lines;json_stream + Format string `json:"format,omitempty"` + // Specify the name of the date field in output. + JsonDateKey string `json:"jsonDateKey,omitempty"` + // Specify the format of the date. Supported formats are double, iso8601 (eg: 2018-05-30T09:39:52.000681Z) and epoch. + // +kubebuilder:validation:Enum:= double;iso8601;epoch + JsonDateFormat string `json:"jsonDateFormat,omitempty"` +} + +func (_ *Stdout) Name() string { + return "stdout" +} + +// implement Section() method +func (s *Stdout) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if s.Format != "" { + kvs.Insert("Format", s.Format) + } + if s.JsonDateKey != "" { + kvs.Insert("json_date_key", s.JsonDateKey) + } + if s.JsonDateFormat != "" { + kvs.Insert("json_date_format", s.JsonDateFormat) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/syslog_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/syslog_types.go new file mode 100644 index 000000000..8a510fba0 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/syslog_types.go @@ -0,0 +1,102 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Syslog output plugin allows you to deliver messages to Syslog servers.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/syslog** +type Syslog struct { + // Host domain or IP address of the remote Syslog server. + Host string `json:"host,omitempty"` + // TCP or UDP port of the remote Syslog server. + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Mode of the desired transport type, the available options are tcp, tls and udp. + Mode string `json:"mode,omitempty"` + // Syslog protocol format to use, the available options are rfc3164 and rfc5424. + SyslogFormat string `json:"syslogFormat,omitempty"` + // Maximum size allowed per message, in bytes. + SyslogMaxSize *int32 `json:"syslogMaxSize,omitempty"` + // Key from the original record that contains the Syslog severity number. + SyslogSeverityKey string `json:"syslogSeverityKey,omitempty"` + // Key from the original record that contains the Syslog facility number. + SyslogFacilityKey string `json:"syslogFacilityKey,omitempty"` + // Key name from the original record that contains the hostname that generated the message. + SyslogHostnameKey string `json:"syslogHostnameKey,omitempty"` + // Key name from the original record that contains the application name that generated the message. + SyslogAppnameKey string `json:"syslogAppnameKey,omitempty"` + // Key name from the original record that contains the Process ID that generated the message. + SyslogProcessIDKey string `json:"syslogProcessIDKey,omitempty"` + // Key name from the original record that contains the Message ID associated to the message. + SyslogMessageIDKey string `json:"syslogMessageIDKey,omitempty"` + // Key name from the original record that contains the Structured Data (SD) content. + SyslogSDKey string `json:"syslogSDKey,omitempty"` + // Key key name that contains the message to deliver. + SyslogMessageKey string `json:"syslogMessageKey,omitempty"` + // Syslog output plugin supports TTL/SSL, for more details about the properties available + // and general configuration, please refer to the TLS/SSL section. + *plugins.TLS `json:"tls,omitempty"` +} + +func (_ *Syslog) Name() string { + return "syslog" +} + +// implement Section() method +func (s *Syslog) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if s.Host != "" { + kvs.Insert("Host", s.Host) + } + if s.Port != nil { + kvs.Insert("port", fmt.Sprint(*s.Port)) + } + if s.Mode != "" { + kvs.Insert("mode", s.Mode) + } + if s.SyslogFormat != "" { + kvs.Insert("syslog_format", s.SyslogFormat) + } + if s.SyslogMaxSize != nil { + kvs.Insert("syslog_maxsize", fmt.Sprint(s.SyslogMaxSize)) + } + if s.SyslogSeverityKey != "" { + kvs.Insert("syslog_severity_key", s.SyslogSeverityKey) + } + if s.SyslogFacilityKey != "" { + kvs.Insert("syslog_facility_key", s.SyslogFacilityKey) + } + if s.SyslogHostnameKey != "" { + kvs.Insert("syslog_hostname_key", s.SyslogHostnameKey) + } + if s.SyslogAppnameKey != "" { + kvs.Insert("syslog_appname_key", s.SyslogAppnameKey) + } + if s.SyslogProcessIDKey != "" { + kvs.Insert("syslog_procid_key", s.SyslogProcessIDKey) + } + if s.SyslogMessageIDKey != "" { + kvs.Insert("syslog_msgid_key", s.SyslogMessageIDKey) + } + if s.SyslogSDKey != "" { + kvs.Insert("syslog_sd_key", s.SyslogSDKey) + } + if s.SyslogMessageKey != "" { + kvs.Insert("syslog_message_key", s.SyslogMessageKey) + } + if s.TLS != nil { + tls, err := s.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/tcp_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/tcp_types.go new file mode 100644 index 000000000..70a941d09 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/tcp_types.go @@ -0,0 +1,64 @@ +package output + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The tcp output plugin allows to send records to a remote TCP server.
+// The payload can be formatted in different ways as required.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/outputs/tcp-and-tls** +type TCP struct { + // Target host where Fluent-Bit or Fluentd are listening for Forward messages. + Host string `json:"host,omitempty"` + // TCP Port of the target service. + // +kubebuilder:validation:Minimum:=1 + // +kubebuilder:validation:Maximum:=65535 + Port *int32 `json:"port,omitempty"` + // Specify the data format to be printed. Supported formats are msgpack json, json_lines and json_stream. + // +kubebuilder:validation:Enum:=msgpack;json;json_lines;json_stream + Format string `json:"format,omitempty"` + // TSpecify the name of the time key in the output record. + // To disable the time key just set the value to false. + JsonDateKey string `json:"jsonDateKey,omitempty"` + // Specify the format of the date. Supported formats are double, epoch + // and iso8601 (eg: 2018-05-30T09:39:52.000681Z) + // +kubebuilder:validation:Enum:=double;epoch;iso8601 + JsonDateFormat string `json:"jsonDateFormat,omitempty"` + *plugins.TLS `json:"tls,omitempty"` +} + +func (_ *TCP) Name() string { + return "tcp" +} + +func (t *TCP) Params(sl plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if t.Host != "" { + kvs.Insert("Host", t.Host) + } + if t.Port != nil { + kvs.Insert("Port", fmt.Sprint(*t.Port)) + } + if t.Format != "" { + kvs.Insert("Format", t.Format) + } + if t.JsonDateKey != "" { + kvs.Insert("json_date_key", t.JsonDateKey) + } + if t.JsonDateFormat != "" { + kvs.Insert("json_date_format", t.JsonDateFormat) + } + if t.TLS != nil { + tls, err := t.TLS.Params(sl) + if err != nil { + return nil, err + } + kvs.Merge(tls) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/zz_generated.deepcopy.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/zz_generated.deepcopy.go new file mode 100644 index 000000000..359c9c782 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output/zz_generated.deepcopy.go @@ -0,0 +1,863 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package output + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureBlob) DeepCopyInto(out *AzureBlob) { + *out = *in + if in.SharedKey != nil { + in, out := &in.SharedKey, &out.SharedKey + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.AutoCreateContainer != nil { + in, out := &in.AutoCreateContainer, &out.AutoCreateContainer + *out = new(bool) + **out = **in + } + if in.EmulatorMode != nil { + in, out := &in.EmulatorMode, &out.EmulatorMode + *out = new(bool) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureBlob. +func (in *AzureBlob) DeepCopy() *AzureBlob { + if in == nil { + return nil + } + out := new(AzureBlob) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureLogAnalytics) DeepCopyInto(out *AzureLogAnalytics) { + *out = *in + if in.CustomerID != nil { + in, out := &in.CustomerID, &out.CustomerID + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.SharedKey != nil { + in, out := &in.SharedKey, &out.SharedKey + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.TimeGenerated != nil { + in, out := &in.TimeGenerated, &out.TimeGenerated + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureLogAnalytics. +func (in *AzureLogAnalytics) DeepCopy() *AzureLogAnalytics { + if in == nil { + return nil + } + out := new(AzureLogAnalytics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudWatch) DeepCopyInto(out *CloudWatch) { + *out = *in + if in.AutoCreateGroup != nil { + in, out := &in.AutoCreateGroup, &out.AutoCreateGroup + *out = new(bool) + **out = **in + } + if in.LogRetentionDays != nil { + in, out := &in.LogRetentionDays, &out.LogRetentionDays + *out = new(int32) + **out = **in + } + if in.AutoRetryRequests != nil { + in, out := &in.AutoRetryRequests, &out.AutoRetryRequests + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudWatch. +func (in *CloudWatch) DeepCopy() *CloudWatch { + if in == nil { + return nil + } + out := new(CloudWatch) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataDog) DeepCopyInto(out *DataDog) { + *out = *in + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(bool) + **out = **in + } + if in.IncludeTagKey != nil { + in, out := &in.IncludeTagKey, &out.IncludeTagKey + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataDog. +func (in *DataDog) DeepCopy() *DataDog { + if in == nil { + return nil + } + out := new(DataDog) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Elasticsearch) DeepCopyInto(out *Elasticsearch) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.HTTPUser != nil { + in, out := &in.HTTPUser, &out.HTTPUser + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPPasswd != nil { + in, out := &in.HTTPPasswd, &out.HTTPPasswd + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.LogstashFormat != nil { + in, out := &in.LogstashFormat, &out.LogstashFormat + *out = new(bool) + **out = **in + } + if in.TimeKeyNanos != nil { + in, out := &in.TimeKeyNanos, &out.TimeKeyNanos + *out = new(bool) + **out = **in + } + if in.IncludeTagKey != nil { + in, out := &in.IncludeTagKey, &out.IncludeTagKey + *out = new(bool) + **out = **in + } + if in.GenerateID != nil { + in, out := &in.GenerateID, &out.GenerateID + *out = new(bool) + **out = **in + } + if in.ReplaceDots != nil { + in, out := &in.ReplaceDots, &out.ReplaceDots + *out = new(bool) + **out = **in + } + if in.TraceOutput != nil { + in, out := &in.TraceOutput, &out.TraceOutput + *out = new(bool) + **out = **in + } + if in.TraceError != nil { + in, out := &in.TraceError, &out.TraceError + *out = new(bool) + **out = **in + } + if in.CurrentTimeIndex != nil { + in, out := &in.CurrentTimeIndex, &out.CurrentTimeIndex + *out = new(bool) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Elasticsearch. +func (in *Elasticsearch) DeepCopy() *Elasticsearch { + if in == nil { + return nil + } + out := new(Elasticsearch) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *File) DeepCopyInto(out *File) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new File. +func (in *File) DeepCopy() *File { + if in == nil { + return nil + } + out := new(File) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Firehose) DeepCopyInto(out *Firehose) { + *out = *in + if in.TimeKey != nil { + in, out := &in.TimeKey, &out.TimeKey + *out = new(string) + **out = **in + } + if in.TimeKeyFormat != nil { + in, out := &in.TimeKeyFormat, &out.TimeKeyFormat + *out = new(string) + **out = **in + } + if in.DataKeys != nil { + in, out := &in.DataKeys, &out.DataKeys + *out = new(string) + **out = **in + } + if in.LogKey != nil { + in, out := &in.LogKey, &out.LogKey + *out = new(string) + **out = **in + } + if in.RoleARN != nil { + in, out := &in.RoleARN, &out.RoleARN + *out = new(string) + **out = **in + } + if in.Endpoint != nil { + in, out := &in.Endpoint, &out.Endpoint + *out = new(string) + **out = **in + } + if in.STSEndpoint != nil { + in, out := &in.STSEndpoint, &out.STSEndpoint + *out = new(string) + **out = **in + } + if in.AutoRetryRequests != nil { + in, out := &in.AutoRetryRequests, &out.AutoRetryRequests + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Firehose. +func (in *Firehose) DeepCopy() *Firehose { + if in == nil { + return nil + } + out := new(Firehose) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Forward) DeepCopyInto(out *Forward) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.TimeAsInteger != nil { + in, out := &in.TimeAsInteger, &out.TimeAsInteger + *out = new(bool) + **out = **in + } + if in.SendOptions != nil { + in, out := &in.SendOptions, &out.SendOptions + *out = new(bool) + **out = **in + } + if in.RequireAckResponse != nil { + in, out := &in.RequireAckResponse, &out.RequireAckResponse + *out = new(bool) + **out = **in + } + if in.EmptySharedKey != nil { + in, out := &in.EmptySharedKey, &out.EmptySharedKey + *out = new(bool) + **out = **in + } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.Password != nil { + in, out := &in.Password, &out.Password + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Forward. +func (in *Forward) DeepCopy() *Forward { + if in == nil { + return nil + } + out := new(Forward) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTP) DeepCopyInto(out *HTTP) { + *out = *in + if in.HTTPUser != nil { + in, out := &in.HTTPUser, &out.HTTPUser + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPPasswd != nil { + in, out := &in.HTTPPasswd, &out.HTTPPasswd + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.AllowDuplicatedHeaders != nil { + in, out := &in.AllowDuplicatedHeaders, &out.AllowDuplicatedHeaders + *out = new(bool) + **out = **in + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTP. +func (in *HTTP) DeepCopy() *HTTP { + if in == nil { + return nil + } + out := new(HTTP) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Kafka) DeepCopyInto(out *Kafka) { + *out = *in + if in.Rdkafka != nil { + in, out := &in.Rdkafka, &out.Rdkafka + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.DynamicTopic != nil { + in, out := &in.DynamicTopic, &out.DynamicTopic + *out = new(bool) + **out = **in + } + if in.QueueFullRetries != nil { + in, out := &in.QueueFullRetries, &out.QueueFullRetries + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kafka. +func (in *Kafka) DeepCopy() *Kafka { + if in == nil { + return nil + } + out := new(Kafka) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Loki) DeepCopyInto(out *Loki) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.HTTPUser != nil { + in, out := &in.HTTPUser, &out.HTTPUser + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPPasswd != nil { + in, out := &in.HTTPPasswd, &out.HTTPPasswd + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.TenantID != nil { + in, out := &in.TenantID, &out.TenantID + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.LabelKeys != nil { + in, out := &in.LabelKeys, &out.LabelKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Loki. +func (in *Loki) DeepCopy() *Loki { + if in == nil { + return nil + } + out := new(Loki) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Null) DeepCopyInto(out *Null) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Null. +func (in *Null) DeepCopy() *Null { + if in == nil { + return nil + } + out := new(Null) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpenSearch) DeepCopyInto(out *OpenSearch) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.HTTPUser != nil { + in, out := &in.HTTPUser, &out.HTTPUser + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPPasswd != nil { + in, out := &in.HTTPPasswd, &out.HTTPPasswd + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.LogstashFormat != nil { + in, out := &in.LogstashFormat, &out.LogstashFormat + *out = new(bool) + **out = **in + } + if in.TimeKeyNanos != nil { + in, out := &in.TimeKeyNanos, &out.TimeKeyNanos + *out = new(bool) + **out = **in + } + if in.IncludeTagKey != nil { + in, out := &in.IncludeTagKey, &out.IncludeTagKey + *out = new(bool) + **out = **in + } + if in.GenerateID != nil { + in, out := &in.GenerateID, &out.GenerateID + *out = new(bool) + **out = **in + } + if in.ReplaceDots != nil { + in, out := &in.ReplaceDots, &out.ReplaceDots + *out = new(bool) + **out = **in + } + if in.TraceOutput != nil { + in, out := &in.TraceOutput, &out.TraceOutput + *out = new(bool) + **out = **in + } + if in.TraceError != nil { + in, out := &in.TraceError, &out.TraceError + *out = new(bool) + **out = **in + } + if in.CurrentTimeIndex != nil { + in, out := &in.CurrentTimeIndex, &out.CurrentTimeIndex + *out = new(bool) + **out = **in + } + if in.SuppressTypeName != nil { + in, out := &in.SuppressTypeName, &out.SuppressTypeName + *out = new(bool) + **out = **in + } + if in.Workers != nil { + in, out := &in.Workers, &out.Workers + *out = new(int32) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenSearch. +func (in *OpenSearch) DeepCopy() *OpenSearch { + if in == nil { + return nil + } + out := new(OpenSearch) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpenTelemetry) DeepCopyInto(out *OpenTelemetry) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.HTTPUser != nil { + in, out := &in.HTTPUser, &out.HTTPUser + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPPasswd != nil { + in, out := &in.HTTPPasswd, &out.HTTPPasswd + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.Header != nil { + in, out := &in.Header, &out.Header + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.LogResponsePayload != nil { + in, out := &in.LogResponsePayload, &out.LogResponsePayload + *out = new(bool) + **out = **in + } + if in.AddLabel != nil { + in, out := &in.AddLabel, &out.AddLabel + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTelemetry. +func (in *OpenTelemetry) DeepCopy() *OpenTelemetry { + if in == nil { + return nil + } + out := new(OpenTelemetry) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrometheusRemoteWrite) DeepCopyInto(out *PrometheusRemoteWrite) { + *out = *in + if in.HTTPUser != nil { + in, out := &in.HTTPUser, &out.HTTPUser + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPPasswd != nil { + in, out := &in.HTTPPasswd, &out.HTTPPasswd + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.LogResponsePayload != nil { + in, out := &in.LogResponsePayload, &out.LogResponsePayload + *out = new(bool) + **out = **in + } + if in.AddLabels != nil { + in, out := &in.AddLabels, &out.AddLabels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Workers != nil { + in, out := &in.Workers, &out.Workers + *out = new(int32) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusRemoteWrite. +func (in *PrometheusRemoteWrite) DeepCopy() *PrometheusRemoteWrite { + if in == nil { + return nil + } + out := new(PrometheusRemoteWrite) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Splunk) DeepCopyInto(out *Splunk) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.SplunkToken != nil { + in, out := &in.SplunkToken, &out.SplunkToken + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPUser != nil { + in, out := &in.HTTPUser, &out.HTTPUser + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPPasswd != nil { + in, out := &in.HTTPPasswd, &out.HTTPPasswd + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.HTTPDebugBadRequest != nil { + in, out := &in.HTTPDebugBadRequest, &out.HTTPDebugBadRequest + *out = new(bool) + **out = **in + } + if in.SplunkSendRaw != nil { + in, out := &in.SplunkSendRaw, &out.SplunkSendRaw + *out = new(bool) + **out = **in + } + if in.EventFields != nil { + in, out := &in.EventFields, &out.EventFields + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Workers != nil { + in, out := &in.Workers, &out.Workers + *out = new(int32) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Splunk. +func (in *Splunk) DeepCopy() *Splunk { + if in == nil { + return nil + } + out := new(Splunk) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Stackdriver) DeepCopyInto(out *Stackdriver) { + *out = *in + if in.ServiceAccountEmail != nil { + in, out := &in.ServiceAccountEmail, &out.ServiceAccountEmail + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.ServiceAccountSecret != nil { + in, out := &in.ServiceAccountSecret, &out.ServiceAccountSecret + *out = new(plugins.Secret) + (*in).DeepCopyInto(*out) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.AutoformatStackdriverTrace != nil { + in, out := &in.AutoformatStackdriverTrace, &out.AutoformatStackdriverTrace + *out = new(bool) + **out = **in + } + if in.Workers != nil { + in, out := &in.Workers, &out.Workers + *out = new(int32) + **out = **in + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Stackdriver. +func (in *Stackdriver) DeepCopy() *Stackdriver { + if in == nil { + return nil + } + out := new(Stackdriver) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Stdout) DeepCopyInto(out *Stdout) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Stdout. +func (in *Stdout) DeepCopy() *Stdout { + if in == nil { + return nil + } + out := new(Stdout) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Syslog) DeepCopyInto(out *Syslog) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.SyslogMaxSize != nil { + in, out := &in.SyslogMaxSize, &out.SyslogMaxSize + *out = new(int32) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Syslog. +func (in *Syslog) DeepCopy() *Syslog { + if in == nil { + return nil + } + out := new(Syslog) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TCP) DeepCopyInto(out *TCP) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int32) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = new(plugins.TLS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TCP. +func (in *TCP) DeepCopy() *TCP { + if in == nil { + return nil + } + out := new(TCP) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params/kvs.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params/kvs.go new file mode 100644 index 000000000..7ead29680 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params/kvs.go @@ -0,0 +1,67 @@ +package params + +import ( + "bytes" + "fmt" + "sort" +) + +type kvTransformFunc func(string, string) (string, string) + +type KVs struct { + keys []string + values []string + Content string +} + +func NewKVs() *KVs { + return &KVs{ + keys: []string{}, + values: []string{}, + } +} + +func (kvs *KVs) Insert(key, value string) { + kvs.keys = append(kvs.keys, key) + kvs.values = append(kvs.values, value) +} + +func (kvs *KVs) InsertStringMap(m map[string]string, f kvTransformFunc) { + if len(m) > 0 { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + + sort.Strings(keys) + + for _, k := range keys { + v := m[k] + if f != nil { + k, v = f(k, v) + } + kvs.Insert(k, v) + } + } +} + +func (kvs *KVs) Merge(tail *KVs) { + kvs.keys = append(kvs.keys, tail.keys...) + kvs.values = append(kvs.values, tail.values...) +} + +func (kvs *KVs) String() string { + if kvs == nil { + return "" + } + + if kvs.Content != "" { + return kvs.Content + } + + var buf bytes.Buffer + for i := 0; i < len(kvs.keys); i++ { + buf.WriteString(fmt.Sprintf(" %s %s\n", kvs.keys[i], kvs.values[i])) + } + return buf.String() +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/json_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/json_types.go new file mode 100644 index 000000000..bd9dbc9e8 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/json_types.go @@ -0,0 +1,39 @@ +package parser + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The JSON parser plugin.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/parsers/json** +type JSON struct { + // Time_Key + TimeKey string `json:"timeKey,omitempty"` + // Time_Format, eg. %Y-%m-%dT%H:%M:%S %z + TimeFormat string `json:"timeFormat,omitempty"` + // Time_Keep + TimeKeep *bool `json:"timeKeep,omitempty"` +} + +func (_ *JSON) Name() string { + return "json" +} + +func (j *JSON) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if j.TimeKey != "" { + kvs.Insert("Time_Key", j.TimeKey) + } + if j.TimeFormat != "" { + kvs.Insert("Time_Format", j.TimeFormat) + } + if j.TimeKeep != nil { + kvs.Insert("Time_Keep", fmt.Sprint(*j.TimeKeep)) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/logfmt_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/logfmt_types.go new file mode 100644 index 000000000..f4a7ea711 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/logfmt_types.go @@ -0,0 +1,20 @@ +package parser + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The logfmt parser allows to parse the logfmt format described in https://brandur.org/logfmt .
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/parsers/logfmt** +type Logfmt struct{} + +func (_ *Logfmt) Name() string { + return "logfmt" +} + +func (_ *Logfmt) Params(_ plugins.SecretLoader) (*params.KVs, error) { + return nil, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/lstv_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/lstv_types.go new file mode 100644 index 000000000..51ae61f3a --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/lstv_types.go @@ -0,0 +1,43 @@ +package parser + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The LSTV parser allows to parse LTSV formatted texts.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/parsers/ltsv** +type LSTV struct { + // Time_Key + TimeKey string `json:"timeKey,omitempty"` + // Time_Format, eg. %Y-%m-%dT%H:%M:%S %z + TimeFormat string `json:"timeFormat,omitempty"` + // Time_Keep + TimeKeep *bool `json:"timeKeep,omitempty"` + Types string `json:"types,omitempty"` +} + +func (_ *LSTV) Name() string { + return "ltsv" +} + +func (l *LSTV) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if l.TimeKey != "" { + kvs.Insert("Time_Key", l.TimeKey) + } + if l.TimeFormat != "" { + kvs.Insert("Time_Format", l.TimeFormat) + } + if l.TimeKeep != nil { + kvs.Insert("Time_Format", fmt.Sprint(*l.TimeKeep)) + } + if l.Types != "" { + kvs.Insert("Types", l.Types) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/regex_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/regex_types.go new file mode 100644 index 000000000..dc107a7ae --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/regex_types.go @@ -0,0 +1,52 @@ +package parser + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// The regex parser allows to define a custom Ruby Regular Expression that will use a named capture feature to define which content belongs to which key name.
+// **For full documentation, refer to https://docs.fluentbit.io/manual/pipeline/parsers/regular-expression** +type Regex struct { + Regex string `json:"regex,omitempty"` + // Time_Key + TimeKey string `json:"timeKey,omitempty"` + // Time_Format, eg. %Y-%m-%dT%H:%M:%S %z + TimeFormat string `json:"timeFormat,omitempty"` + // Time_Keep + TimeKeep *bool `json:"timeKeep,omitempty"` + // Time_Offset, eg. +0200 + TimeOffset string `json:"timeOffset,omitempty"` + Types string `json:"types,omitempty"` +} + +func (_ *Regex) Name() string { + return "regex" +} + +func (re *Regex) Params(_ plugins.SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + if re.Regex != "" { + kvs.Insert("Regex", re.Regex) + } + if re.TimeKey != "" { + kvs.Insert("Time_Key", re.TimeKey) + } + if re.TimeFormat != "" { + kvs.Insert("Time_Format", re.TimeFormat) + } + if re.TimeKeep != nil { + kvs.Insert("Time_Keep", fmt.Sprint(*re.TimeKeep)) + } + if re.TimeOffset != "" { + kvs.Insert("Time_Offset", re.TimeOffset) + } + if re.Types != "" { + kvs.Insert("Types", re.Types) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/zz_generated.deepcopy.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/zz_generated.deepcopy.go new file mode 100644 index 000000000..34b14fa72 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser/zz_generated.deepcopy.go @@ -0,0 +1,99 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package parser + +import () + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSON) DeepCopyInto(out *JSON) { + *out = *in + if in.TimeKeep != nil { + in, out := &in.TimeKeep, &out.TimeKeep + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSON. +func (in *JSON) DeepCopy() *JSON { + if in == nil { + return nil + } + out := new(JSON) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LSTV) DeepCopyInto(out *LSTV) { + *out = *in + if in.TimeKeep != nil { + in, out := &in.TimeKeep, &out.TimeKeep + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LSTV. +func (in *LSTV) DeepCopy() *LSTV { + if in == nil { + return nil + } + out := new(LSTV) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Logfmt) DeepCopyInto(out *Logfmt) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Logfmt. +func (in *Logfmt) DeepCopy() *Logfmt { + if in == nil { + return nil + } + out := new(Logfmt) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Regex) DeepCopyInto(out *Regex) { + *out = *in + if in.TimeKeep != nil { + in, out := &in.TimeKeep, &out.TimeKeep + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Regex. +func (in *Regex) DeepCopy() *Regex { + if in == nil { + return nil + } + out := new(Regex) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/secret_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/secret_types.go new file mode 100644 index 000000000..1e8db3769 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/secret_types.go @@ -0,0 +1,50 @@ +package plugins + +import ( + "context" + "fmt" + "strings" + + "github.com/go-openapi/errors" + corev1 "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// +kubebuilder:object:generate:=true +// Secret defines the key of a value. +type Secret struct { + ValueFrom ValueSource `json:"valueFrom,omitempty"` +} + +// +kubebuilder:object:generate:=true +// ValueSource defines how to find a value's key. +type ValueSource struct { + // Selects a key of a secret in the pod's namespace + // +optional + SecretKeyRef corev1.SecretKeySelector `json:"secretKeyRef,omitempty"` +} + +type SecretLoader struct { + Client client.Client + namespace string +} + +func NewSecretLoader(c client.Client, ns string) SecretLoader { + return SecretLoader{ + Client: c, + namespace: ns, + } +} + +func (sl SecretLoader) LoadSecret(s Secret) (string, error) { + var secret corev1.Secret + if err := sl.Client.Get(context.Background(), client.ObjectKey{Name: s.ValueFrom.SecretKeyRef.Name, Namespace: sl.namespace}, &secret); err != nil { + return "", err + } + + if v, ok := secret.Data[s.ValueFrom.SecretKeyRef.Key]; !ok { + return "", errors.NotFound(fmt.Sprintf("The key %s is not found.", s.ValueFrom.SecretKeyRef.Key)) + } else { + return strings.TrimSuffix(fmt.Sprintf("%s", v), "\n"), nil + } +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/tls_types.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/tls_types.go new file mode 100644 index 000000000..2ab82f42d --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/tls_types.go @@ -0,0 +1,65 @@ +package plugins + +import ( + "fmt" + + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/params" +) + +// +kubebuilder:object:generate:=true + +// Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively. +type TLS struct { + // Force certificate validation + Verify *bool `json:"verify,omitempty"` + // Set TLS debug verbosity level. + // It accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose + // +kubebuilder:validation:Enum:=0;1;2;3;4 + Debug *int32 `json:"debug,omitempty"` + // Absolute path to CA certificate file + CAFile string `json:"caFile,omitempty"` + // Absolute path to scan for certificate files + CAPath string `json:"caPath,omitempty"` + // Absolute path to Certificate file + CRTFile string `json:"crtFile,omitempty"` + // Absolute path to private Key file + KeyFile string `json:"keyFile,omitempty"` + // Optional password for tls.key_file file + KeyPassword *Secret `json:"keyPassword,omitempty"` + // Hostname to be used for TLS SNI extension + Vhost string `json:"vhost,omitempty"` +} + +func (t *TLS) Params(sl SecretLoader) (*params.KVs, error) { + kvs := params.NewKVs() + kvs.Insert("tls", "On") + if t.Verify != nil { + kvs.Insert("tls.verify", fmt.Sprint(*t.Verify)) + } + if t.Debug != nil { + kvs.Insert("tls.debug", fmt.Sprint(*t.Debug)) + } + if t.CAFile != "" { + kvs.Insert("tls.ca_file", t.CAFile) + } + if t.CAPath != "" { + kvs.Insert("tls.ca_path", t.CAPath) + } + if t.CRTFile != "" { + kvs.Insert("tls.crt_file", t.CRTFile) + } + if t.KeyFile != "" { + kvs.Insert("tls.key_file", t.KeyFile) + } + if t.KeyPassword != nil { + pwd, err := sl.LoadSecret(*t.KeyPassword) + if err != nil { + return nil, err + } + kvs.Insert("tls.key_passwd", pwd) + } + if t.Vhost != "" { + kvs.Insert("tls.vhost", t.Vhost) + } + return kvs, nil +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/zz_generated.deepcopy.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/zz_generated.deepcopy.go new file mode 100644 index 000000000..2820ea052 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/zz_generated.deepcopy.go @@ -0,0 +1,101 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package plugins + +import () + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CommonParams) DeepCopyInto(out *CommonParams) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonParams. +func (in *CommonParams) DeepCopy() *CommonParams { + if in == nil { + return nil + } + out := new(CommonParams) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Secret) DeepCopyInto(out *Secret) { + *out = *in + in.ValueFrom.DeepCopyInto(&out.ValueFrom) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Secret. +func (in *Secret) DeepCopy() *Secret { + if in == nil { + return nil + } + out := new(Secret) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TLS) DeepCopyInto(out *TLS) { + *out = *in + if in.Verify != nil { + in, out := &in.Verify, &out.Verify + *out = new(bool) + **out = **in + } + if in.Debug != nil { + in, out := &in.Debug, &out.Debug + *out = new(int32) + **out = **in + } + if in.KeyPassword != nil { + in, out := &in.KeyPassword, &out.KeyPassword + *out = new(Secret) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLS. +func (in *TLS) DeepCopy() *TLS { + if in == nil { + return nil + } + out := new(TLS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ValueSource) DeepCopyInto(out *ValueSource) { + *out = *in + in.SecretKeyRef.DeepCopyInto(&out.SecretKeyRef) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValueSource. +func (in *ValueSource) DeepCopy() *ValueSource { + if in == nil { + return nil + } + out := new(ValueSource) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/zz_generated.deepcopy.go b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/zz_generated.deepcopy.go new file mode 100644 index 000000000..c1648cc46 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/zz_generated.deepcopy.go @@ -0,0 +1,1494 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha2 + +import ( + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/custom" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/output" + "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/parser" + "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterFilter) DeepCopyInto(out *ClusterFilter) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterFilter. +func (in *ClusterFilter) DeepCopy() *ClusterFilter { + if in == nil { + return nil + } + out := new(ClusterFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterFilter) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterFilterList) DeepCopyInto(out *ClusterFilterList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterFilterList. +func (in *ClusterFilterList) DeepCopy() *ClusterFilterList { + if in == nil { + return nil + } + out := new(ClusterFilterList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterFilterList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterFluentBitConfig) DeepCopyInto(out *ClusterFluentBitConfig) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterFluentBitConfig. +func (in *ClusterFluentBitConfig) DeepCopy() *ClusterFluentBitConfig { + if in == nil { + return nil + } + out := new(ClusterFluentBitConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterFluentBitConfig) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterFluentBitConfigList) DeepCopyInto(out *ClusterFluentBitConfigList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterFluentBitConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterFluentBitConfigList. +func (in *ClusterFluentBitConfigList) DeepCopy() *ClusterFluentBitConfigList { + if in == nil { + return nil + } + out := new(ClusterFluentBitConfigList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterFluentBitConfigList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterInput) DeepCopyInto(out *ClusterInput) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInput. +func (in *ClusterInput) DeepCopy() *ClusterInput { + if in == nil { + return nil + } + out := new(ClusterInput) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterInput) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterInputList) DeepCopyInto(out *ClusterInputList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterInput, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInputList. +func (in *ClusterInputList) DeepCopy() *ClusterInputList { + if in == nil { + return nil + } + out := new(ClusterInputList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterInputList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterOutput) DeepCopyInto(out *ClusterOutput) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterOutput. +func (in *ClusterOutput) DeepCopy() *ClusterOutput { + if in == nil { + return nil + } + out := new(ClusterOutput) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterOutput) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterOutputList) DeepCopyInto(out *ClusterOutputList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterOutput, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterOutputList. +func (in *ClusterOutputList) DeepCopy() *ClusterOutputList { + if in == nil { + return nil + } + out := new(ClusterOutputList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterOutputList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterParser) DeepCopyInto(out *ClusterParser) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterParser. +func (in *ClusterParser) DeepCopy() *ClusterParser { + if in == nil { + return nil + } + out := new(ClusterParser) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterParser) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterParserList) DeepCopyInto(out *ClusterParserList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterParser, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterParserList. +func (in *ClusterParserList) DeepCopy() *ClusterParserList { + if in == nil { + return nil + } + out := new(ClusterParserList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterParserList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Collector) DeepCopyInto(out *Collector) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Collector. +func (in *Collector) DeepCopy() *Collector { + if in == nil { + return nil + } + out := new(Collector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Collector) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CollectorList) DeepCopyInto(out *CollectorList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Collector, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectorList. +func (in *CollectorList) DeepCopy() *CollectorList { + if in == nil { + return nil + } + out := new(CollectorList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CollectorList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CollectorService) DeepCopyInto(out *CollectorService) { + *out = *in + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectorService. +func (in *CollectorService) DeepCopy() *CollectorService { + if in == nil { + return nil + } + out := new(CollectorService) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CollectorSpec) DeepCopyInto(out *CollectorSpec) { + *out = *in + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]v1.LocalObjectReference, len(*in)) + copy(*out, *in) + } + in.Resources.DeepCopyInto(&out.Resources) + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Affinity != nil { + in, out := &in.Affinity, &out.Affinity + *out = new(v1.Affinity) + (*in).DeepCopyInto(*out) + } + if in.Tolerations != nil { + in, out := &in.Tolerations, &out.Tolerations + *out = make([]v1.Toleration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]v1.Volume, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.VolumesMounts != nil { + in, out := &in.VolumesMounts, &out.VolumesMounts + *out = make([]v1.VolumeMount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ServiceAccountAnnotations != nil { + in, out := &in.ServiceAccountAnnotations, &out.ServiceAccountAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(v1.PodSecurityContext) + (*in).DeepCopyInto(*out) + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + *out = new(v1.PersistentVolumeClaim) + (*in).DeepCopyInto(*out) + } + if in.RBACRules != nil { + in, out := &in.RBACRules, &out.RBACRules + *out = make([]rbacv1.PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.BufferPath != nil { + in, out := &in.BufferPath, &out.BufferPath + *out = new(string) + **out = **in + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]v1.ContainerPort, len(*in)) + copy(*out, *in) + } + in.Service.DeepCopyInto(&out.Service) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectorSpec. +func (in *CollectorSpec) DeepCopy() *CollectorSpec { + if in == nil { + return nil + } + out := new(CollectorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CollectorStatus) DeepCopyInto(out *CollectorStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectorStatus. +func (in *CollectorStatus) DeepCopy() *CollectorStatus { + if in == nil { + return nil + } + out := new(CollectorStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Decorder) DeepCopyInto(out *Decorder) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Decorder. +func (in *Decorder) DeepCopy() *Decorder { + if in == nil { + return nil + } + out := new(Decorder) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Filter) DeepCopyInto(out *Filter) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Filter. +func (in *Filter) DeepCopy() *Filter { + if in == nil { + return nil + } + out := new(Filter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Filter) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterItem) DeepCopyInto(out *FilterItem) { + *out = *in + if in.Grep != nil { + in, out := &in.Grep, &out.Grep + *out = new(filter.Grep) + **out = **in + } + if in.RecordModifier != nil { + in, out := &in.RecordModifier, &out.RecordModifier + *out = new(filter.RecordModifier) + (*in).DeepCopyInto(*out) + } + if in.Kubernetes != nil { + in, out := &in.Kubernetes, &out.Kubernetes + *out = new(filter.Kubernetes) + (*in).DeepCopyInto(*out) + } + if in.Modify != nil { + in, out := &in.Modify, &out.Modify + *out = new(filter.Modify) + (*in).DeepCopyInto(*out) + } + if in.Nest != nil { + in, out := &in.Nest, &out.Nest + *out = new(filter.Nest) + (*in).DeepCopyInto(*out) + } + if in.Parser != nil { + in, out := &in.Parser, &out.Parser + *out = new(filter.Parser) + (*in).DeepCopyInto(*out) + } + if in.Lua != nil { + in, out := &in.Lua, &out.Lua + *out = new(filter.Lua) + (*in).DeepCopyInto(*out) + } + if in.Throttle != nil { + in, out := &in.Throttle, &out.Throttle + *out = new(filter.Throttle) + (*in).DeepCopyInto(*out) + } + if in.RewriteTag != nil { + in, out := &in.RewriteTag, &out.RewriteTag + *out = new(filter.RewriteTag) + (*in).DeepCopyInto(*out) + } + if in.AWS != nil { + in, out := &in.AWS, &out.AWS + *out = new(filter.AWS) + (*in).DeepCopyInto(*out) + } + if in.Multiline != nil { + in, out := &in.Multiline, &out.Multiline + *out = new(filter.Multiline) + (*in).DeepCopyInto(*out) + } + if in.CustomPlugin != nil { + in, out := &in.CustomPlugin, &out.CustomPlugin + *out = new(custom.CustomPlugin) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterItem. +func (in *FilterItem) DeepCopy() *FilterItem { + if in == nil { + return nil + } + out := new(FilterItem) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterList) DeepCopyInto(out *FilterList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Filter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterList. +func (in *FilterList) DeepCopy() *FilterList { + if in == nil { + return nil + } + out := new(FilterList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FilterList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterSpec) DeepCopyInto(out *FilterSpec) { + *out = *in + if in.FilterItems != nil { + in, out := &in.FilterItems, &out.FilterItems + *out = make([]FilterItem, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterSpec. +func (in *FilterSpec) DeepCopy() *FilterSpec { + if in == nil { + return nil + } + out := new(FilterSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBit) DeepCopyInto(out *FluentBit) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBit. +func (in *FluentBit) DeepCopy() *FluentBit { + if in == nil { + return nil + } + out := new(FluentBit) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FluentBit) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitConfig) DeepCopyInto(out *FluentBitConfig) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitConfig. +func (in *FluentBitConfig) DeepCopy() *FluentBitConfig { + if in == nil { + return nil + } + out := new(FluentBitConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FluentBitConfig) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitConfigList) DeepCopyInto(out *FluentBitConfigList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FluentBitConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitConfigList. +func (in *FluentBitConfigList) DeepCopy() *FluentBitConfigList { + if in == nil { + return nil + } + out := new(FluentBitConfigList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FluentBitConfigList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitConfigSpec) DeepCopyInto(out *FluentBitConfigSpec) { + *out = *in + if in.Service != nil { + in, out := &in.Service, &out.Service + *out = new(Service) + (*in).DeepCopyInto(*out) + } + in.InputSelector.DeepCopyInto(&out.InputSelector) + in.FilterSelector.DeepCopyInto(&out.FilterSelector) + in.OutputSelector.DeepCopyInto(&out.OutputSelector) + in.ParserSelector.DeepCopyInto(&out.ParserSelector) + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitConfigSpec. +func (in *FluentBitConfigSpec) DeepCopy() *FluentBitConfigSpec { + if in == nil { + return nil + } + out := new(FluentBitConfigSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitList) DeepCopyInto(out *FluentBitList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FluentBit, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitList. +func (in *FluentBitList) DeepCopy() *FluentBitList { + if in == nil { + return nil + } + out := new(FluentBitList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FluentBitList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitService) DeepCopyInto(out *FluentBitService) { + *out = *in + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitService. +func (in *FluentBitService) DeepCopy() *FluentBitService { + if in == nil { + return nil + } + out := new(FluentBitService) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitSpec) DeepCopyInto(out *FluentBitSpec) { + *out = *in + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]v1.LocalObjectReference, len(*in)) + copy(*out, *in) + } + in.PositionDB.DeepCopyInto(&out.PositionDB) + in.Resources.DeepCopyInto(&out.Resources) + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Affinity != nil { + in, out := &in.Affinity, &out.Affinity + *out = new(v1.Affinity) + (*in).DeepCopyInto(*out) + } + if in.Tolerations != nil { + in, out := &in.Tolerations, &out.Tolerations + *out = make([]v1.Toleration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.NamespacedFluentBitCfgSelector.DeepCopyInto(&out.NamespacedFluentBitCfgSelector) + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]v1.Volume, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.VolumesMounts != nil { + in, out := &in.VolumesMounts, &out.VolumesMounts + *out = make([]v1.VolumeMount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ServiceAccountAnnotations != nil { + in, out := &in.ServiceAccountAnnotations, &out.ServiceAccountAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(v1.PodSecurityContext) + (*in).DeepCopyInto(*out) + } + if in.EnvVars != nil { + in, out := &in.EnvVars, &out.EnvVars + *out = make([]v1.EnvVar, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]v1.Container, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]v1.ContainerPort, len(*in)) + copy(*out, *in) + } + if in.RBACRules != nil { + in, out := &in.RBACRules, &out.RBACRules + *out = make([]rbacv1.PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.Service.DeepCopyInto(&out.Service) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitSpec. +func (in *FluentBitSpec) DeepCopy() *FluentBitSpec { + if in == nil { + return nil + } + out := new(FluentBitSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitStatus) DeepCopyInto(out *FluentBitStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitStatus. +func (in *FluentBitStatus) DeepCopy() *FluentBitStatus { + if in == nil { + return nil + } + out := new(FluentBitStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InputSpec) DeepCopyInto(out *InputSpec) { + *out = *in + if in.Dummy != nil { + in, out := &in.Dummy, &out.Dummy + *out = new(input.Dummy) + (*in).DeepCopyInto(*out) + } + if in.Tail != nil { + in, out := &in.Tail, &out.Tail + *out = new(input.Tail) + (*in).DeepCopyInto(*out) + } + if in.Systemd != nil { + in, out := &in.Systemd, &out.Systemd + *out = new(input.Systemd) + (*in).DeepCopyInto(*out) + } + if in.NodeExporterMetrics != nil { + in, out := &in.NodeExporterMetrics, &out.NodeExporterMetrics + *out = new(input.NodeExporterMetrics) + (*in).DeepCopyInto(*out) + } + if in.PrometheusScrapeMetrics != nil { + in, out := &in.PrometheusScrapeMetrics, &out.PrometheusScrapeMetrics + *out = new(input.PrometheusScrapeMetrics) + (*in).DeepCopyInto(*out) + } + if in.FluentBitMetrics != nil { + in, out := &in.FluentBitMetrics, &out.FluentBitMetrics + *out = new(input.FluentbitMetrics) + (*in).DeepCopyInto(*out) + } + if in.CustomPlugin != nil { + in, out := &in.CustomPlugin, &out.CustomPlugin + *out = new(custom.CustomPlugin) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InputSpec. +func (in *InputSpec) DeepCopy() *InputSpec { + if in == nil { + return nil + } + out := new(InputSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in NSFilterByName) DeepCopyInto(out *NSFilterByName) { + { + in := &in + *out = make(NSFilterByName, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NSFilterByName. +func (in NSFilterByName) DeepCopy() NSFilterByName { + if in == nil { + return nil + } + out := new(NSFilterByName) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in NSOutputByName) DeepCopyInto(out *NSOutputByName) { + { + in := &in + *out = make(NSOutputByName, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NSOutputByName. +func (in NSOutputByName) DeepCopy() NSOutputByName { + if in == nil { + return nil + } + out := new(NSOutputByName) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in NSParserByName) DeepCopyInto(out *NSParserByName) { + { + in := &in + *out = make(NSParserByName, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NSParserByName. +func (in NSParserByName) DeepCopy() NSParserByName { + if in == nil { + return nil + } + out := new(NSParserByName) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NamespacedFluentBitCfgSpec) DeepCopyInto(out *NamespacedFluentBitCfgSpec) { + *out = *in + in.FilterSelector.DeepCopyInto(&out.FilterSelector) + in.OutputSelector.DeepCopyInto(&out.OutputSelector) + in.ParserSelector.DeepCopyInto(&out.ParserSelector) + in.ClusterParserSelector.DeepCopyInto(&out.ClusterParserSelector) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedFluentBitCfgSpec. +func (in *NamespacedFluentBitCfgSpec) DeepCopy() *NamespacedFluentBitCfgSpec { + if in == nil { + return nil + } + out := new(NamespacedFluentBitCfgSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Output) DeepCopyInto(out *Output) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Output. +func (in *Output) DeepCopy() *Output { + if in == nil { + return nil + } + out := new(Output) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Output) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutputList) DeepCopyInto(out *OutputList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Output, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutputList. +func (in *OutputList) DeepCopy() *OutputList { + if in == nil { + return nil + } + out := new(OutputList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OutputList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutputSpec) DeepCopyInto(out *OutputSpec) { + *out = *in + if in.AzureBlob != nil { + in, out := &in.AzureBlob, &out.AzureBlob + *out = new(output.AzureBlob) + (*in).DeepCopyInto(*out) + } + if in.AzureLogAnalytics != nil { + in, out := &in.AzureLogAnalytics, &out.AzureLogAnalytics + *out = new(output.AzureLogAnalytics) + (*in).DeepCopyInto(*out) + } + if in.CloudWatch != nil { + in, out := &in.CloudWatch, &out.CloudWatch + *out = new(output.CloudWatch) + (*in).DeepCopyInto(*out) + } + if in.Elasticsearch != nil { + in, out := &in.Elasticsearch, &out.Elasticsearch + *out = new(output.Elasticsearch) + (*in).DeepCopyInto(*out) + } + if in.File != nil { + in, out := &in.File, &out.File + *out = new(output.File) + **out = **in + } + if in.Forward != nil { + in, out := &in.Forward, &out.Forward + *out = new(output.Forward) + (*in).DeepCopyInto(*out) + } + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + *out = new(output.HTTP) + (*in).DeepCopyInto(*out) + } + if in.Kafka != nil { + in, out := &in.Kafka, &out.Kafka + *out = new(output.Kafka) + (*in).DeepCopyInto(*out) + } + if in.Null != nil { + in, out := &in.Null, &out.Null + *out = new(output.Null) + **out = **in + } + if in.Stdout != nil { + in, out := &in.Stdout, &out.Stdout + *out = new(output.Stdout) + **out = **in + } + if in.TCP != nil { + in, out := &in.TCP, &out.TCP + *out = new(output.TCP) + (*in).DeepCopyInto(*out) + } + if in.Loki != nil { + in, out := &in.Loki, &out.Loki + *out = new(output.Loki) + (*in).DeepCopyInto(*out) + } + if in.Syslog != nil { + in, out := &in.Syslog, &out.Syslog + *out = new(output.Syslog) + (*in).DeepCopyInto(*out) + } + if in.DataDog != nil { + in, out := &in.DataDog, &out.DataDog + *out = new(output.DataDog) + (*in).DeepCopyInto(*out) + } + if in.Fireose != nil { + in, out := &in.Fireose, &out.Fireose + *out = new(output.Firehose) + (*in).DeepCopyInto(*out) + } + if in.Stackdriver != nil { + in, out := &in.Stackdriver, &out.Stackdriver + *out = new(output.Stackdriver) + (*in).DeepCopyInto(*out) + } + if in.Splunk != nil { + in, out := &in.Splunk, &out.Splunk + *out = new(output.Splunk) + (*in).DeepCopyInto(*out) + } + if in.OpenSearch != nil { + in, out := &in.OpenSearch, &out.OpenSearch + *out = new(output.OpenSearch) + (*in).DeepCopyInto(*out) + } + if in.OpenTelemetry != nil { + in, out := &in.OpenTelemetry, &out.OpenTelemetry + *out = new(output.OpenTelemetry) + (*in).DeepCopyInto(*out) + } + if in.PrometheusRemoteWrite != nil { + in, out := &in.PrometheusRemoteWrite, &out.PrometheusRemoteWrite + *out = new(output.PrometheusRemoteWrite) + (*in).DeepCopyInto(*out) + } + if in.CustomPlugin != nil { + in, out := &in.CustomPlugin, &out.CustomPlugin + *out = new(custom.CustomPlugin) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutputSpec. +func (in *OutputSpec) DeepCopy() *OutputSpec { + if in == nil { + return nil + } + out := new(OutputSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Parser) DeepCopyInto(out *Parser) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Parser. +func (in *Parser) DeepCopy() *Parser { + if in == nil { + return nil + } + out := new(Parser) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Parser) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParserList) DeepCopyInto(out *ParserList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Parser, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParserList. +func (in *ParserList) DeepCopy() *ParserList { + if in == nil { + return nil + } + out := new(ParserList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ParserList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParserSpec) DeepCopyInto(out *ParserSpec) { + *out = *in + if in.JSON != nil { + in, out := &in.JSON, &out.JSON + *out = new(parser.JSON) + (*in).DeepCopyInto(*out) + } + if in.Regex != nil { + in, out := &in.Regex, &out.Regex + *out = new(parser.Regex) + (*in).DeepCopyInto(*out) + } + if in.LTSV != nil { + in, out := &in.LTSV, &out.LTSV + *out = new(parser.LSTV) + (*in).DeepCopyInto(*out) + } + if in.Logfmt != nil { + in, out := &in.Logfmt, &out.Logfmt + *out = new(parser.Logfmt) + **out = **in + } + if in.Decoders != nil { + in, out := &in.Decoders, &out.Decoders + *out = make([]Decorder, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParserSpec. +func (in *ParserSpec) DeepCopy() *ParserSpec { + if in == nil { + return nil + } + out := new(ParserSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Service) DeepCopyInto(out *Service) { + *out = *in + if in.Daemon != nil { + in, out := &in.Daemon, &out.Daemon + *out = new(bool) + **out = **in + } + if in.FlushSeconds != nil { + in, out := &in.FlushSeconds, &out.FlushSeconds + *out = new(int64) + **out = **in + } + if in.GraceSeconds != nil { + in, out := &in.GraceSeconds, &out.GraceSeconds + *out = new(int64) + **out = **in + } + if in.HcErrorsCount != nil { + in, out := &in.HcErrorsCount, &out.HcErrorsCount + *out = new(int64) + **out = **in + } + if in.HcRetryFailureCount != nil { + in, out := &in.HcRetryFailureCount, &out.HcRetryFailureCount + *out = new(int64) + **out = **in + } + if in.HcPeriod != nil { + in, out := &in.HcPeriod, &out.HcPeriod + *out = new(int64) + **out = **in + } + if in.HealthCheck != nil { + in, out := &in.HealthCheck, &out.HealthCheck + *out = new(bool) + **out = **in + } + if in.HttpPort != nil { + in, out := &in.HttpPort, &out.HttpPort + *out = new(int32) + **out = **in + } + if in.HttpServer != nil { + in, out := &in.HttpServer, &out.HttpServer + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service. +func (in *Service) DeepCopy() *Service { + if in == nil { + return nil + } + out := new(Service) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/fluent/fluent-operator/v2/pkg/utils/utils.go b/vendor/github.com/fluent/fluent-operator/v2/pkg/utils/utils.go new file mode 100644 index 000000000..188498973 --- /dev/null +++ b/vendor/github.com/fluent/fluent-operator/v2/pkg/utils/utils.go @@ -0,0 +1,54 @@ +package utils + +import ( + "crypto/md5" + "fmt" + "strings" +) + +func ContainString(slice []string, s string) bool { + for _, item := range slice { + if item == s { + return true + } + } + return false +} + +func RemoveString(slice []string, s string) (result []string) { + for _, item := range slice { + if item == s { + continue + } + result = append(result, item) + } + return +} + +func ConcatString(slice []string, sep string) string { + + if slice == nil || len(slice) == 0 { + return "" + } + + ns := "" + for _, s := range slice { + ns = ns + s + sep + } + + return strings.TrimSuffix(ns, sep) +} + +func HashCode(msg string) string { + var h = md5.New() + h.Write([]byte(msg)) + return string(h.Sum(nil)) +} + +func GenerateNamespacedMatchExpr(namespace string, match string) string { + return fmt.Sprintf("%x.%s", md5.Sum([]byte(namespace)), match) +} + +func GenerateNamespacedMatchRegExpr(namespace string, matchRegex string) string { + return fmt.Sprintf("^%x\\.%s", md5.Sum([]byte(namespace)), matchRegex) +} diff --git a/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go b/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go index 7d27222a7..c10cc4700 100644 --- a/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go +++ b/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/.github/doc.go b/vendor/github.com/gardener/gardener/.github/doc.go index 8b2438348..dfdd3c2e5 100644 --- a/vendor/github.com/gardener/gardener/.github/doc.go +++ b/vendor/github.com/gardener/gardener/.github/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go index e19531c5e..5864ea9cb 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/types.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/types.go index fc08347ed..49477e8fe 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/types.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/doc.go index 91ddda2a9..facfd5b29 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/types.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/types.go index 70b3b591c..d679addfe 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go index 5b2c87b23..b9d512424 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go index 8a6490b96..b78308cd3 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cluster.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cluster.go index e4f1573db..221dfa059 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cluster.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cluster.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go index 5ecaf2733..7e0f06126 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -230,11 +230,11 @@ func (m *ManagerOptions) AddFlags(fs *pflag.FlagSet) { // Complete implements Completer.Complete. func (m *ManagerOptions) Complete() error { - if !sets.New[string](logger.AllLogLevels...).Has(m.LogLevel) { + if !sets.New(logger.AllLogLevels...).Has(m.LogLevel) { return fmt.Errorf("invalid --%s: %s", LogLevelFlag, m.LogLevel) } - if !sets.New[string](logger.AllLogFormats...).Has(m.LogFormat) { + if !sets.New(logger.AllLogFormats...).Has(m.LogFormat) { return fmt.Errorf("invalid --%s: %s", LogFormatFlag, m.LogFormat) } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go index d210c66c5..fa2dc9e99 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/actuator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/actuator.go index 1dc056a90..655262ce5 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/actuator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/actuator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/controller.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/controller.go index d65b7cba2..c69afe421 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/controller.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/controller.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/mapper.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/mapper.go index f345b4c64..bd7bc44a9 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/mapper.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/mapper.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/reconciler.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/reconciler.go index 91d8a7a7f..a9259d92e 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/reconciler.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/reconciler.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/actuator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/actuator.go index 241d50ace..0faf3908d 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/actuator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/actuator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/controller.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/controller.go index f8be31d0f..868145d83 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/controller.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/controller.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/daemonset.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/daemonset.go index 0efadca24..fff43fe64 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/daemonset.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/daemonset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/deployment.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/deployment.go index c0d77ee4b..0adcf20f3 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/deployment.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/deployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/managed_resource.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/managed_resource.go index 79dfba808..ef9630736 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/managed_resource.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/managed_resource.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/statefulsets.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/statefulsets.go index f0d92fc70..3b413fa59 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/statefulsets.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general/statefulsets.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/healthcheck_actuator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/healthcheck_actuator.go index b7229a302..650b6cb42 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/healthcheck_actuator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/healthcheck_actuator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -183,7 +183,7 @@ func (a *Actuator) ExecuteHealthCheckFunctions(ctx context.Context, log logr.Log healthCheckResult, err := check.Check(ctx, request) - if errorCodeCheckFunc != nil { + if healthCheckResult != nil && errorCodeCheckFunc != nil { healthCheckResult.Codes = append(healthCheckResult.Codes, errorCodeCheckFunc(fmt.Errorf("%s", healthCheckResult.Detail))...) } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/inject.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/inject.go index a81fc6ff3..dd1836439 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/inject.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/inject.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/message_util.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/message_util.go index f1b6dfa43..664d1b60b 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/message_util.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/message_util.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/reconciler.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/reconciler.go index 9ee17ce31..0fcb219e7 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/reconciler.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/healthcheck/reconciler.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go index d468a0c83..894e177ea 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go index 9f8f5d08b..1e7cc3785 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go index 38b988194..7437d32f3 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/shoot.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/shoot.go index 10ed769fd..5d7f4ea1d 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/shoot.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -35,7 +35,7 @@ func (f ChartRendererFactoryFunc) NewChartRendererForShoot(version string) (char // GetPodNetwork returns the pod network CIDR of the given Shoot. func GetPodNetwork(cluster *Cluster) string { - if cluster.Shoot.Spec.Networking.Pods != nil { + if cluster.Shoot.Spec.Networking != nil && cluster.Shoot.Spec.Networking.Pods != nil { return *cluster.Shoot.Spec.Networking.Pods } return "" @@ -43,7 +43,7 @@ func GetPodNetwork(cluster *Cluster) string { // GetServiceNetwork returns the service network CIDR of the given Shoot. func GetServiceNetwork(cluster *Cluster) string { - if cluster.Shoot.Spec.Networking.Services != nil { + if cluster.Shoot.Spec.Networking != nil && cluster.Shoot.Spec.Networking.Services != nil { return *cluster.Shoot.Spec.Networking.Services } return "" diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go index 1f4a3036c..b0471499e 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/utils.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/utils.go index f35775984..dbd8996b7 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/utils.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/default.go b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/default.go index 0d1c786d3..6a91e5911 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/default.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/default.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -83,11 +83,6 @@ var defaultControllerPredicate = predicate.Funcs{ return true } - // If the last operation does not indicate success and the object's timestamp changes then we admit reconciliation. - if lastOperationNotSuccessful(e.ObjectNew) && e.ObjectOld.GetAnnotations()[v1beta1constants.GardenerTimestamp] != e.ObjectNew.GetAnnotations()[v1beta1constants.GardenerTimestamp] { - return true - } - // If none of the above conditions applies then reconciliation is not allowed. return false }, diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go index 82dba461f..40c2ddc42 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go index 0339bb98d..8352190e8 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/util/clientset.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/clientset.go index a3612e546..c353b37c4 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/clientset.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/clientset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/util/errors.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/errors.go index 85c08b038..e609bde94 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/errors.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/util/serialization.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/serialization.go index 12600a7be..04df88101 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/serialization.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/serialization.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot.go index 5dda7b621..25b787487 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go index 745cb8213..202f032f7 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/.ci/doc.go b/vendor/github.com/gardener/gardener/hack/.ci/doc.go index 64493305f..fd4efa871 100755 --- a/vendor/github.com/gardener/gardener/hack/.ci/doc.go +++ b/vendor/github.com/gardener/gardener/hack/.ci/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/.ci/prepare_release b/vendor/github.com/gardener/gardener/hack/.ci/prepare_release index de07eeb46..42eeb6f1b 100755 --- a/vendor/github.com/gardener/gardener/hack/.ci/prepare_release +++ b/vendor/github.com/gardener/gardener/hack/.ci/prepare_release @@ -1,6 +1,6 @@ #!/usr/bin/env sh # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version b/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version index bcb150897..8c43c475e 100755 --- a/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version +++ b/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -121,7 +121,7 @@ elif name == 'vpn2': elif name == 'external-dns-management': names = ['dns-controller-manager'] elif name == 'logging': - names = ['fluent-bit-plugin-installer', 'loki-curator', 'telegraf', 'event-logger'] + names = ['fluent-bit-plugin-installer', 'vali-curator', 'telegraf', 'event-logger', 'tune2fs'] elif name == 'etcd-custom-image': names = ['etcd'] elif name == 'egress-filter-refresher': diff --git a/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt b/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt index 30aba94bd..c9d7360e9 100755 --- a/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt +++ b/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/add-license-header.sh b/vendor/github.com/gardener/gardener/hack/add-license-header.sh new file mode 100755 index 000000000..a56d7fd37 --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/add-license-header.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +echo "> Adding Apache License header to all go files where it is not present" + +addlicense \ + -c "SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file." \ + -y "$(date +"%Y")" \ + -l apache \ + -ignore ".idea/**" \ + -ignore ".vscode/**" \ + -ignore "dev/**" \ + -ignore "vendor/**" \ + -ignore "**/*.md" \ + -ignore "**/*.html" \ + -ignore "**/*.yaml" \ + -ignore "**/Dockerfile" \ + -ignore "hack/tools/gomegacheck/**" \ + -ignore "pkg/component/**/*.sh" \ + . diff --git a/vendor/github.com/gardener/gardener/hack/api-reference/template/tools.go b/vendor/github.com/gardener/gardener/hack/api-reference/template/tools.go index 729fbeb5b..73ba610a1 100644 --- a/vendor/github.com/gardener/gardener/hack/api-reference/template/tools.go +++ b/vendor/github.com/gardener/gardener/hack/api-reference/template/tools.go @@ -1,7 +1,7 @@ //go:build tools // +build tools -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/check-apidiff.sh b/vendor/github.com/gardener/gardener/hack/check-apidiff.sh index 6bb008476..46bb9ed27 100755 --- a/vendor/github.com/gardener/gardener/hack/check-apidiff.sh +++ b/vendor/github.com/gardener/gardener/hack/check-apidiff.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,62 +20,74 @@ set -o pipefail tmpDir=$(mktemp -d) function cleanup_output { - rm -rf "$tmpDir" + rm -rf "$tmpDir" } trap cleanup_output EXIT retval=0 temp=0 -BASE_SHA=${PULL_BASE_SHA:-} # PULL_BASE_SHA env variable is set by default in prow presubmit jobs - -if [ ! -z ${BASE_SHA} ]; then - echo "invoking: go-apidiff ${PULL_BASE_SHA} --print-compatible --repo-path=." - echo "$(go-apidiff ${PULL_BASE_SHA} --print-compatible --repo-path=.)" > ${tmpDir}/output.txt -else - echo "invoking: go-apidiff master --print-compatible --repo-path=." - echo "$(go-apidiff master --print-compatible --repo-path=.)" > ${tmpDir}/output.txt -fi +# PULL_BASE_SHA env variable is set by default in prow presubmit jobs +echo "invoking: go-apidiff ${PULL_BASE_SHA:-master} --repo-path=." +go-apidiff ${PULL_BASE_SHA:-master} --repo-path=. >${tmpDir}/output.txt || true exported_pkg=( -"gardener/gardener/extensions/" -"gardener/gardener/pkg/api/" -"gardener/gardener/pkg/apis/" -"gardener/gardener/pkg/chartrenderer/" -"gardener/gardener/pkg/client/" -"gardener/gardener/pkg/controllerutils/" -"gardener/gardener/pkg/extensions/" -"gardener/gardener/pkg/gardenlet/apis/config/" -"gardener/gardener/pkg/logger/" -"gardener/gardener/pkg/mock/controller-runtime/client/" -"gardener/gardener/pkg/operation/botanist/component/extensions/operatingsystemconfig/" -"gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/" -"gardener/gardener/pkg/scheduler/" -"gardener/gardener/pkg/utils/" -"gardener/gardener/test/framework/" + gardener/gardener/extensions/ + gardener/gardener/pkg/api/ + gardener/gardener/pkg/apis/.*/v1alpha1 + gardener/gardener/pkg/apis/.*/v1beta1 + gardener/gardener/pkg/apis/extensions/validation + gardener/gardener/pkg/chartrenderer/ + gardener/gardener/pkg/client/ + gardener/gardener/pkg/controllerutils/ + gardener/gardener/pkg/extensions/ + gardener/gardener/pkg/gardenlet/apis/config/v1alpha1 + gardener/gardener/pkg/logger/ + gardener/gardener/pkg/mock/controller-runtime/client/ + gardener/gardener/pkg/component/extensions/operatingsystemconfig/ + gardener/gardener/pkg/operator/apis/config/v1alpha1 + gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/ + gardener/gardener/pkg/scheduler/ + gardener/gardener/pkg/utils/ + gardener/gardener/test/framework/ ) # check the changes only for the package that is in the exported_pkg list while IFS= read -r line; do - if [[ $line =~ ^"github.com/gardener/gardener" ]]; then - temp=0 - for x in ${exported_pkg[*]}; do - if [[ $line =~ $x ]]; then - retval=1 - temp=1 - echo "$line" >> ${tmpDir}/result.txt - fi - done - else - if [[ $temp -eq 1 ]]; then - echo "$line" >> ${tmpDir}/result.txt - fi + if [[ $line =~ ^"github.com/gardener/gardener" ]]; then + temp=0 + for x in ${exported_pkg[*]}; do + if [[ $line =~ $x ]]; then + retval=1 + temp=1 + echo "$line" >>${tmpDir}/result.txt + fi + done + else + if [[ $temp -eq 1 ]]; then + echo "$line" >>${tmpDir}/result.txt fi -done < "${tmpDir}/output.txt" + fi +done <"${tmpDir}/output.txt" if [[ $retval -eq 1 ]]; then - echo >&2 "FAIL: contains compatible/incompatible changes:" - cat ${tmpDir}/result.txt + echo >&2 "FAIL: contains compatible/incompatible changes:" + cat ${tmpDir}/result.txt + + cat < Checking if license header is present in all required files" + +missing_license_header_files="$(addlicense \ + -check \ + -ignore ".idea/**" \ + -ignore ".vscode/**" \ + -ignore "dev/**" \ + -ignore "vendor/**" \ + -ignore "**/*.md" \ + -ignore "**/*.html" \ + -ignore "**/*.yaml" \ + -ignore "**/Dockerfile" \ + -ignore "hack/tools/gomegacheck/**" \ + -ignore "pkg/component/**/*.sh" \ + .)" || true + +if [[ "$missing_license_header_files" ]]; then + echo "Files with no license header detected:" + echo "$missing_license_header_files" + echo "Consider running \`make add-license-headers\` to automatically add all missing headers." + exit 1 +fi + +echo "All files have license headers, nothing to be done." diff --git a/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh b/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh index 00311ac6c..5187183d2 100755 --- a/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh +++ b/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/check.sh b/vendor/github.com/gardener/gardener/hack/check.sh index a72d8cfe2..2753e3711 100755 --- a/vendor/github.com/gardener/gardener/hack/check.sh +++ b/vendor/github.com/gardener/gardener/hack/check.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/ci-common.sh b/vendor/github.com/gardener/gardener/hack/ci-common.sh index eb95747d9..779b53962 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-common.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-common.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,7 @@ export_artifacts() { kubectl -n "$namespace" get pod "$node" --show-managed-fields -oyaml >"$node_dir/pod.yaml" || true # systemd units - for unit in cloud-config-downloader kubelet containerd; do + for unit in cloud-config-downloader kubelet containerd containerd-configuration-local-setup; do kubectl -n "$namespace" exec "$node" -- journalctl --no-pager -u $unit.service >"$node_dir/$unit.log" || true done kubectl -n "$namespace" exec "$node" -- journalctl --no-pager >"$node_dir/journal.log" || true diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh index 3d5d220bd..844c82b07 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -33,5 +33,5 @@ trap '{ }' EXIT make gardener-ha-multi-zone-up -make test-e2e-local-ha-multi-zone PARALLEL_E2E_TESTS=10 +make test-e2e-local-ha-multi-zone make gardener-ha-multi-zone-down diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh index 29fd4ed13..8917658e9 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -33,5 +33,5 @@ trap '{ }' EXIT make gardener-ha-single-zone-up -make test-e2e-local-ha-single-zone PARALLEL_E2E_TESTS=10 +make test-e2e-local-ha-single-zone make gardener-ha-single-zone-down diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh new file mode 100755 index 000000000..a8de9e4b8 --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o nounset +set -o pipefail +set -o errexit + +source $(dirname "${0}")/ci-common.sh + +clamp_mss_to_pmtu + +# test setup +make kind-ha-single-zone-up +make kind2-ha-single-zone-up + +# export all container logs and events after test execution +trap '{ + KUBECONFIG=$GARDENER_LOCAL_KUBECONFIG export_artifacts "gardener-local-ha-single-zone" + KUBECONFIG=$GARDENER_LOCAL2_KUBECONFIG; export_artifacts "gardener-local2-ha-single-zone" + make kind-ha-single-zone-down + make kind2-ha-single-zone-down +}' EXIT + +make gardener-ha-single-zone-up +make gardenlet-kind2-ha-single-zone-up +make test-e2e-local-migration-ha-single-zone +make gardener-ha-single-zone-down +make gardenlet-kind2-ha-single-zone-down diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh index 20518be1e..930847c7c 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh index 9f4e12227..ba60842b1 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -28,9 +28,9 @@ make kind-operator-up # export all container logs and events after test execution trap " ( export KUBECONFIG=$PWD/example/gardener-local/kind/operator/kubeconfig; export_artifacts 'gardener-operator-local' ) - ( make kind-down ) + ( make kind-operator-down ) " EXIT make operator-up -make test-e2e-local-operator PARALLEL_E2E_TESTS=10 +make test-e2e-local-operator make operator-down diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh index 844d3ebba..fbc74beae 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -170,6 +170,30 @@ function set_seed_name() { esac } +function run_pre_upgrade_test() { + local test_command + + if [[ "$SHOOT_FAILURE_TOLERANCE_TYPE" == "node" || "$SHOOT_FAILURE_TOLERANCE_TYPE" == "zone" ]]; then + test_command="test-pre-upgrade" + else + test_command="test-non-ha-pre-upgrade" + fi + + make "$test_command" GARDENER_PREVIOUS_RELEASE="$GARDENER_PREVIOUS_RELEASE" GARDENER_NEXT_RELEASE="$GARDENER_NEXT_RELEASE" +} + +function run_post_upgrade_test() { + local test_command + + if [[ "$SHOOT_FAILURE_TOLERANCE_TYPE" == "node" || "$SHOOT_FAILURE_TOLERANCE_TYPE" == "zone" ]]; then + test_command="test-post-upgrade" + else + test_command="test-non-ha-post-upgrade" + fi + + make "$test_command" GARDENER_PREVIOUS_RELEASE="$GARDENER_PREVIOUS_RELEASE" GARDENER_NEXT_RELEASE="$GARDENER_NEXT_RELEASE" +} + clamp_mss_to_pmtu set_gardener_upgrade_version_env_variables set_cluster_name @@ -193,7 +217,7 @@ echo "Installing gardener version '$GARDENER_PREVIOUS_RELEASE'" install_previous_release echo "Running gardener pre-upgrade tests" -make test-pre-upgrade GARDENER_PREVIOUS_RELEASE=$GARDENER_PREVIOUS_RELEASE GARDENER_NEXT_RELEASE=$GARDENER_NEXT_RELEASE +run_pre_upgrade_test echo "Upgrading gardener version '$GARDENER_PREVIOUS_RELEASE' to '$GARDENER_NEXT_RELEASE'" upgrade_to_next_release @@ -205,7 +229,13 @@ kubectl wait seed $SEED_NAME --timeout=5m --for=jsonpath="{.status.gardener.vers # In a multi-zone setup, 6 istio-ingressgateway pods will be running, and it will take 18 minutes to complete the rollout. TIMEOUT=1200 ./hack/usage/wait-for.sh seed "$SEED_NAME" GardenletReady Bootstrapped SeedSystemComponentsHealthy ExtensionsReady BackupBucketsReady +# The downtime validator considers downtime after 3 consecutive failures, taking a total of 30 seconds. +# Therefore, we're waiting for double that amount of time (60s) to detect if there is any downtime after the upgrade process. +# By waiting for double the amount of time (60 seconds) post-upgrade, the script accounts for the possibility of missing the last 30-second window, +# thus ensuring that any potential downtime after the post-upgrade is detected. +sleep 60 + echo "Running gardener post-upgrade tests" -make test-post-upgrade GARDENER_PREVIOUS_RELEASE=$GARDENER_PREVIOUS_RELEASE GARDENER_NEXT_RELEASE=$GARDENER_NEXT_RELEASE +run_post_upgrade_test gardener_down diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh index 468fa3a9a..36255679c 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,5 +32,5 @@ trap '{ }' EXIT make gardener-up -make test-e2e-local PARALLEL_E2E_TESTS=10 +make test-e2e-local make gardener-down diff --git a/vendor/github.com/gardener/gardener/hack/clean.sh b/vendor/github.com/gardener/gardener/hack/clean.sh index 1bc229782..f06555fd7 100755 --- a/vendor/github.com/gardener/gardener/hack/clean.sh +++ b/vendor/github.com/gardener/gardener/hack/clean.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh index 906faf750..204cdd567 100755 --- a/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh +++ b/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh index c29a9abd9..3378aade2 100755 --- a/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh +++ b/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh index 6bd1c741e..033266f57 100755 --- a/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh +++ b/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh b/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh index 3ff770223..1cb0513b3 100755 --- a/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh +++ b/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/format.sh b/vendor/github.com/gardener/gardener/hack/format.sh index 23587d2cb..a8434fa28 100755 --- a/vendor/github.com/gardener/gardener/hack/format.sh +++ b/vendor/github.com/gardener/gardener/hack/format.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/gardener-down.sh b/vendor/github.com/gardener/gardener/hack/gardener-down.sh index f1438d325..4597ac1c2 100755 --- a/vendor/github.com/gardener/gardener/hack/gardener-down.sh +++ b/vendor/github.com/gardener/gardener/hack/gardener-down.sh @@ -1,48 +1,46 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -o errexit set -o nounset set -o pipefail -SKAFFOLD_PROFILE="" - -parse_flags() { - while test $# -gt 0; do - case "$1" in - --skaffold-profile) - shift; SKAFFOLD_PROFILE="-p $1" - ;; - esac - - shift - done -} - -parse_flags "$@" - # delete stuff gradually in the right order, otherwise several dependencies will prevent the cleanup from succeeding kubectl delete seed \ local \ local2 \ local-ha-single-zone \ + local2-ha-single-zone \ local-ha-multi-zone \ --ignore-not-found \ --wait \ --timeout 5m -skaffold delete -m provider-local,gardenlet $SKAFFOLD_PROFILE - -kubectl delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found kubectl annotate project local garden confirmation.gardener.cloud/deletion=true +skaffold delete -m provider-local,gardenlet -skaffold delete -m local-env $SKAFFOLD_PROFILE -skaffold delete -m etcd,controlplane $SKAFFOLD_PROFILE +kubectl delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found +skaffold delete -m etcd,controlplane # workaround for https://github.com/gardener/gardener/issues/5164 kubectl delete ns \ seed-local \ seed-local2 \ seed-local-ha-single-zone \ + seed-local2-ha-single-zone \ seed-local-ha-multi-zone \ --ignore-not-found diff --git a/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh b/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh index 7e77e59da..22c0acc8b 100755 --- a/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh +++ b/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -o errexit set -o nounset @@ -33,17 +47,22 @@ parse_flags "$@" # Delete stuff gradually in the right order, otherwise several dependencies will prevent the cleanup from succeeding. # Deleting seed will fail as long as there are shoots scheduled on it. This is desired to ensure that there are no orphan infrastructure elements left. echo "Deleting $SEED_NAME seed" -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete seeds "$SEED_NAME" --wait --ignore-not-found +kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete seed "$SEED_NAME" --wait --ignore-not-found skaffold --kubeconfig="$PATH_SEED_KUBECONFIG" delete -m gardenlet -p extensions -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns relay --ignore-not-found +kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns "relay-$SEED_NAME" --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete ns garden registry relay --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete -k "$SCRIPT_DIR"/../example/provider-extensions/kyverno --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete mutatingwebhookconfigurations kyverno-policy-mutating-webhook-cfg kyverno-resource-mutating-webhook-cfg kyverno-verify-mutating-webhook-cfg --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete validatingwebhookconfigurations kyverno-policy-validating-webhook-cfg kyverno-resource-validating-webhook-cfg --ignore-not-found -echo "Cleaning up kind cluster" -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" annotate project local garden confirmation.gardener.cloud/deletion=true -skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m extensions-env -p extensions -skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m etcd,controlplane -p extensions -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns garden gardener-system-seed-lease --ignore-not-found +remaining_seeds=$(kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" get seed --no-headers -o custom-columns=":metadata.name") +if [[ "$remaining_seeds" != "" ]]; then + echo "No clean up of kind cluster because of remaining seeds: ${remaining_seeds//$'\n'/,}" +else + echo "Cleaning up kind cluster" + kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found + kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" annotate project local garden confirmation.gardener.cloud/deletion=true + skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m extensions-env -p extensions + skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m etcd,controlplane -p extensions + kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns garden gardener-system-seed-lease --ignore-not-found +fi diff --git a/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh b/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh index c9670e1d1..aef0b3525 100755 --- a/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh +++ b/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -o errexit set -o nounset @@ -35,7 +49,7 @@ echo "Configure seed cluster" echo "Start bootstrapping Gardener" SKAFFOLD_DEFAULT_REPO=localhost:5001 SKAFFOLD_PUSH=true skaffold run -m etcd,controlplane,extensions-env -p extensions echo "Registering controllers" -kubectl --kubeconfig "$PATH_GARDEN_KUBECONFIG" --server-side=true apply -f "$SCRIPT_DIR"/../example/provider-extensions/garden/controllerregistrations +kubectl --kubeconfig "$PATH_GARDEN_KUBECONFIG" --server-side=true --force-conflicts=true apply -f "$SCRIPT_DIR"/../example/provider-extensions/garden/controllerregistrations echo "Creating CloudProfiles" kubectl --kubeconfig "$PATH_GARDEN_KUBECONFIG" --server-side=true apply -f "$SCRIPT_DIR"/../example/provider-extensions/garden/cloudprofiles -"$SCRIPT_DIR"/../example/provider-extensions/seed/create-seed.sh "$PATH_GARDEN_KUBECONFIG" "$PATH_SEED_KUBECONFIG" +"$SCRIPT_DIR"/../example/provider-extensions/seed/create-seed.sh "$PATH_GARDEN_KUBECONFIG" "$PATH_SEED_KUBECONFIG" "$SEED_NAME" diff --git a/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh b/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh index 408ae792d..82007583a 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ set -o pipefail function usage { cat < [kinds-and-types ...] +generate-controller-registration [kinds-and-types ...] Name of the controller registration to generate. Location of the chart directory. @@ -65,7 +65,7 @@ trap cleanup EXIT ERR INT TERM export HELM_HOME="$temp_helm_home" [ "$(helm version --client --template "{{.Version}}" | head -c2 | tail -c1)" = "3" ] || helm init --client-only > /dev/null 2>&1 -helm package "$CHART_DIR" --version "$VERSION" --app-version "$VERSION" --destination "$temp_dir" > /dev/null +helm package "$CHART_DIR" --destination "$temp_dir" > /dev/null tar -xzm -C "$temp_extract_dir" -f "$temp_dir"/* chart="$(tar --sort=name -c --owner=root:0 --group=root:0 --mtime='UTC 2019-01-01' -C "$temp_extract_dir" "$(basename "$temp_extract_dir"/*)" | gzip -n | base64 | tr -d '\n')" @@ -81,8 +81,28 @@ type: helm providerConfig: chart: $chart values: +EOM + +if [ -n "$(yq '.image.repository' "$CHART_DIR"/values.yaml)" ] ; then + # image value specifies repository and tag separately, output the image stanza with the given version as tag value + cat <> "$DEST" image: tag: $VERSION +EOM +else + # image value specifies a fully-qualified image reference, output the default image plus the given version as tag + default_image="$(yq '.image' "$CHART_DIR"/values.yaml)" + if [ -n "$VERSION" ] ; then + # if a version is given, replace the default tag + default_image="${default_image%%:*}:$VERSION" + fi + + cat <> "$DEST" + image: $default_image +EOM +fi + +cat <> "$DEST" --- apiVersion: core.gardener.cloud/v1beta1 kind: ControllerRegistration diff --git a/vendor/github.com/gardener/gardener/hack/generate-crds.sh b/vendor/github.com/gardener/gardener/hack/generate-crds.sh index 253027126..b119d9a4c 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-crds.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-crds.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -35,6 +35,7 @@ fi output_dir="$(pwd)" file_name_prefix="$1" add_deletion_protection_label=false +crd_options="" get_group_package () { case "$1" in @@ -54,7 +55,7 @@ get_group_package () { echo "github.com/gardener/hvpa-controller/api/v1alpha1" ;; "fluentbit.fluent.io") - echo "github.com/fluent/fluent-operator/apis/fluentbit/v1alpha2" + echo "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2" ;; *) >&2 echo "unknown group $1" @@ -62,6 +63,15 @@ get_group_package () { esac } +generate_all_groups () { + generate_group extensions.gardener.cloud + generate_group resources.gardener.cloud + generate_group operator.gardener.cloud + generate_group druid.gardener.cloud + generate_group autoscaling.k8s.io + generate_group fluentbit.fluent.io +} + generate_group () { local group="$1" echo "Generating CRDs for $group group" @@ -80,7 +90,7 @@ generate_group () { rm "$output_dir"/*${group}_*.yaml fi - controller-gen crd paths="$package_path" output:crd:dir="$output_dir" output:stdout + controller-gen crd"$crd_options" paths="$package_path" output:crd:dir="$output_dir" output:stdout while IFS= read -r crd; do crd_out="$output_dir/$file_name_prefix$(basename $crd)" @@ -113,12 +123,17 @@ if [ -n "${2:-}" ]; then shift done else - generate_group extensions.gardener.cloud - generate_group resources.gardener.cloud - generate_group operator.gardener.cloud - generate_group druid.gardener.cloud - generate_group autoscaling.k8s.io - generate_group fluentbit.fluent.io + generate_all_groups + fi + elif [ "${2}" == "-allow-dangerous-types" ]; then + crd_options=":allowDangerousTypes=true" + if [ -n "${3:-}" ]; then + while [ -n "${3:-}" ] ; do + generate_group "$3" + shift + done + else + generate_all_groups fi else while [ -n "${2:-}" ] ; do @@ -127,10 +142,6 @@ if [ -n "${2:-}" ]; then done fi else - generate_group extensions.gardener.cloud - generate_group resources.gardener.cloud - generate_group operator.gardener.cloud - generate_group druid.gardener.cloud - generate_group autoscaling.k8s.io - generate_group fluentbit.fluent.io + generate_all_groups fi + diff --git a/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh b/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh index bf68fcf78..dc7053437 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh b/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh index ae15f03de..201a7524b 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ cat < $PROJECT_ROOT/docs/monitoring/operator_alerts.md EOF pushd $PROJECT_ROOT/charts/seed-monitoring/charts/core/charts/prometheus > /dev/null -for file in rules/*.yaml; do +for file in rules/worker/*.yaml rules/*.yaml; do cat $file | yaml2json | jq -r ' .groups | .[].rules | diff --git a/vendor/github.com/gardener/gardener/hack/generate-parallel.sh b/vendor/github.com/gardener/gardener/hack/generate-parallel.sh index ceffb695f..743530c8f 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-parallel.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-parallel.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/generate.sh b/vendor/github.com/gardener/gardener/hack/generate.sh index 0db955071..de00baa44 100755 --- a/vendor/github.com/gardener/gardener/hack/generate.sh +++ b/vendor/github.com/gardener/gardener/hack/generate.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh b/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh index f3349ae4c..58138693b 100755 --- a/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh +++ b/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/hook-me.sh b/vendor/github.com/gardener/gardener/hack/hook-me.sh index 326d4e1d8..0bc38f0a8 100755 --- a/vendor/github.com/gardener/gardener/hack/hook-me.sh +++ b/vendor/github.com/gardener/gardener/hack/hook-me.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/install.sh b/vendor/github.com/gardener/gardener/hack/install.sh index 1ca8b5012..718d1bfd7 100755 --- a/vendor/github.com/gardener/gardener/hack/install.sh +++ b/vendor/github.com/gardener/gardener/hack/install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/kind-down.sh b/vendor/github.com/gardener/gardener/hack/kind-down.sh index 464d39487..ba937a9fe 100755 --- a/vendor/github.com/gardener/gardener/hack/kind-down.sh +++ b/vendor/github.com/gardener/gardener/hack/kind-down.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -o errexit set -o nounset diff --git a/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh b/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh index eb2dba902..094be499d 100755 --- a/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh +++ b/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -o errexit set -o nounset diff --git a/vendor/github.com/gardener/gardener/hack/kind-up.sh b/vendor/github.com/gardener/gardener/hack/kind-up.sh index 1eaaef9fa..140949f46 100755 --- a/vendor/github.com/gardener/gardener/hack/kind-up.sh +++ b/vendor/github.com/gardener/gardener/hack/kind-up.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -o errexit set -o nounset @@ -12,6 +26,10 @@ DEPLOY_REGISTRY=true MULTI_ZONAL=false CHART=$(dirname "$0")/../example/gardener-local/kind/cluster ADDITIONAL_ARGS="" +SUDO="" +if [[ "$(id -u)" != "0" ]]; then + SUDO="sudo " +fi parse_flags() { while test $# -gt 0; do @@ -43,6 +61,37 @@ parse_flags() { done } +# setup_kind_network is similar to kind's network creation logic, ref https://github.com/kubernetes-sigs/kind/blob/23d2ac0e9c41028fa252dd1340411d70d46e2fd4/pkg/cluster/internal/providers/docker/network.go#L50 +# In addition to kind's logic, we ensure stable CIDRs that we can rely on in our local setup manifests and code. +setup_kind_network() { + # check if network already exists + local existing_network_id + existing_network_id="$(docker network list --filter=name=^kind$ --format='{{.ID}}')" + + if [ -n "$existing_network_id" ] ; then + # ensure the network is configured correctly + local network network_options network_ipam expected_network_ipam + network="$(docker network inspect $existing_network_id | yq '.[]')" + network_options="$(echo "$network" | yq '.EnableIPv6 + "," + .Options["com.docker.network.bridge.enable_ip_masquerade"]')" + network_ipam="$(echo "$network" | yq '.IPAM.Config' -o=json -I=0)" + expected_network_ipam='[{"Subnet":"172.18.0.0/16","Gateway":"172.18.0.1"},{"Subnet":"fd00:10::/64","Gateway":"fd00:10::1"}]' + + if [ "$network_options" = 'true,true' ] && [ "$network_ipam" = "$expected_network_ipam" ] ; then + # kind network is already configured correctly, nothing to do + return 0 + else + echo "kind network is not configured correctly for local gardener setup, recreating network with correct configuration..." + docker network rm $existing_network_id + fi + fi + + # (re-)create kind network with expected settings + docker network create kind --driver=bridge \ + --subnet 172.18.0.0/16 --gateway 172.18.0.1 \ + --ipv6 --subnet fd00:10::/64 --gateway fd00:10::1 \ + --opt com.docker.network.bridge.enable_ip_masquerade=true +} + setup_loopback_device() { if ! command -v ip &>/dev/null; then if [[ "$OSTYPE" == "darwin"* ]]; then @@ -58,12 +107,12 @@ setup_loopback_device() { LOOPBACK_IP_ADDRESSES+=(::10 ::11 ::12) fi echo "Checking loopback device ${LOOPBACK_DEVICE}..." - for address in ${LOOPBACK_IP_ADDRESSES[@]}; do + for address in "${LOOPBACK_IP_ADDRESSES[@]}"; do if ip address show dev ${LOOPBACK_DEVICE} | grep -q $address; then echo "IP address $address already assigned to ${LOOPBACK_DEVICE}." else echo "Adding IP address $address to ${LOOPBACK_DEVICE}..." - sudo ip address add $address dev ${LOOPBACK_DEVICE} + ${SUDO}ip address add "$address" dev "${LOOPBACK_DEVICE}" fi done echo "Setting up loopback device ${LOOPBACK_DEVICE} completed." @@ -79,6 +128,8 @@ if [[ "$MULTI_ZONAL" == "true" ]]; then setup_loopback_device fi +setup_kind_network + if [[ "$IPFAMILY" == "ipv6" ]]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS --values $CHART/values-ipv6.yaml" fi @@ -89,8 +140,41 @@ fi kind create cluster \ --name "$CLUSTER_NAME" \ + --image "kindest/node:v1.26.3" \ --config <(helm template $CHART --values "$PATH_CLUSTER_VALUES" $ADDITIONAL_ARGS --set "environment=$ENVIRONMENT" --set "gardener.repositoryRoot"=$(dirname "$0")/..) +# adjust Kind's CRI default OCI runtime spec for new containers to include the cgroup namespace +# this is required for nesting kubelets on cgroupsv2, as the kindest-node entrypoint script assumes an existing cgroupns when the host kernel uses cgroupsv2 +# See containerd CRI: https://github.com/containerd/containerd/commit/687469d3cee18bf0e12defa5c6d0c7b9139a2dbd +if [ -f "/sys/fs/cgroup/cgroup.controllers" ]; then + echo "Host uses cgroupsv2" + cat << 'EOF' > adjust_cri_base.sh +#!/bin/bash +if [ -f /etc/containerd/cri-base.json ]; then + key=$(cat /etc/containerd/cri-base.json | jq '.linux.namespaces | map(select(.type == "cgroup"))[0]') + if [ "$key" = "null" ]; then + echo "Adjusting kind node /etc/containerd/cri-base.json to create containers with a cgroup namespace"; + cat /etc/containerd/cri-base.json | jq '.linux.namespaces += [{ + "type": "cgroup" + }]' > /etc/containerd/cri-base.tmp.json && cp /etc/containerd/cri-base.tmp.json /etc/containerd/cri-base.json + else + echo "cgroup namespace already configured for kind node"; + fi +else + echo "cannot configure cgroup namespace for kind containers: /etc/containerd/cri-base.json not found in kind container" +fi +EOF + + for node_name in $(kubectl get nodes -o name | cut -d/ -f2) + do + echo "Adjusting containerd config for kind node $node_name" + + # copy script to the kind's docker container and execute it + docker cp adjust_cri_base.sh "$node_name":/etc/containerd/adjust_cri_base.sh + docker exec "$node_name" bash -c "chmod +x /etc/containerd/adjust_cri_base.sh && /etc/containerd/adjust_cri_base.sh && systemctl restart containerd" + done +fi + # workaround https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files kubectl get nodes -o name |\ cut -d/ -f2 |\ @@ -100,6 +184,52 @@ if [[ "$KUBECONFIG" != "$PATH_KUBECONFIG" ]]; then cp "$KUBECONFIG" "$PATH_KUBECONFIG" fi +# Prepare garden.local.gardener.cloud hostname that can be used everywhere to talk to the garden cluster. +# Historically, we used the docker container name for this, but this differs between clusters with different names +# and doesn't work in IPv6 kind clusters: https://github.com/kubernetes-sigs/kind/issues/3114 +# Hence, we "manually" inject a host configuration into the cluster that always resolves to the kind container's IP, +# that serves our garden cluster API. +# This works in +# - the first and the second kind cluster +# - in IPv4 and IPv6 kind clusters +# - in ManagedSeeds + +garden_cluster="$CLUSTER_NAME" +if [[ "$CLUSTER_NAME" == "gardener-local2" ]] ; then + # garden-local2 is used as a second seed cluster, the first kind cluster runs the gardener control plane + garden_cluster="gardener-local" +fi + +if [[ "$CLUSTER_NAME" == "gardener-local2-ha-single-zone" ]]; then + garden_cluster="gardener-local-ha-single-zone" +fi + +ip_address_field="IPAddress" +if [[ "$IPFAMILY" == "ipv6" ]]; then + ip_address_field="GlobalIPv6Address" +fi + +garden_cluster_ip="$(docker inspect "$garden_cluster"-control-plane | yq ".[].NetworkSettings.Networks.kind.$ip_address_field")" + +# Inject garden.local.gardener.cloud into all nodes +kubectl get nodes -o name |\ + cut -d/ -f2 |\ + xargs -I {} docker exec {} sh -c "echo $garden_cluster_ip garden.local.gardener.cloud >> /etc/hosts" + +# Inject garden.local.gardener.cloud into coredns config (after ready plugin, before kubernetes plugin) +kubectl -n kube-system get configmap coredns -ojson | \ + yq '.data.Corefile' | \ + sed '0,/ready.*$/s//&'"\n\ + hosts {\n\ + $garden_cluster_ip garden.local.gardener.cloud\n\ + fallthrough\n\ + }\ +"'/' | \ + kubectl -n kube-system create configmap coredns --from-file Corefile=/dev/stdin --dry-run=client -oyaml | \ + kubectl -n kube-system patch configmap coredns --patch-file /dev/stdin + +kubectl -n kube-system rollout restart deployment coredns + if [[ "$DEPLOY_REGISTRY" == "true" ]]; then kubectl apply -k "$(dirname "$0")/../example/gardener-local/registry" --server-side kubectl wait --for=condition=available deployment -l app=registry -n registry --timeout 5m @@ -109,4 +239,25 @@ kubectl apply -k "$(dirname "$0")/../example/gardener-local/metrics-server" -- kubectl get nodes -l node-role.kubernetes.io/control-plane -o name |\ cut -d/ -f2 |\ - xargs -I {} kubectl taint node {} node-role.kubernetes.io/master:NoSchedule- node-role.kubernetes.io/control-plane:NoSchedule- || true + xargs -I {} kubectl taint node {} node-role.kubernetes.io/control-plane:NoSchedule- || true + +# Allow multiple shoot worker nodes with calico as shoot CNI: As we run overlay in overlay ip-in-ip needs to be allowed in the workload. +# Unfortunately, the felix configuration is created on the fly by calico. Hence, we need to poll until kubectl wait for new resources +# (https://github.com/kubernetes/kubernetes/issues/83242) is fixed. (10 minutes should be enough for the felix configuration to be created.) +echo "Waiting for FelixConfiguration to be created..." +felix_config_found=0 +max_retries=600 +for ((i = 0; i < max_retries; i++)); do + if kubectl get felixconfiguration default > /dev/null 2>&1; then + if kubectl patch felixconfiguration default --type merge --patch '{"spec":{"allowIPIPPacketsFromWorkloads":true}}' > /dev/null 2>&1; then + echo "FelixConfiguration 'default' successfully updated." + felix_config_found=1 + break + fi + fi + sleep 1 +done +if [ $felix_config_found -eq 0 ]; then + echo "Error: FelixConfiguration 'default' not found or patch failed after $max_retries attempts." + exit 1 +fi diff --git a/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh b/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh index 715046d6d..f5caafd20 100755 --- a/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh +++ b/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -26,7 +26,8 @@ if ! command -v setup-envtest &> /dev/null ; then exit 1 fi -export KUBEBUILDER_ASSETS="$(setup-envtest use -p path ${ENVTEST_K8S_VERSION})" +# --use-env allows overwriting the envtest tools path via the KUBEBUILDER_ASSETS env var +export KUBEBUILDER_ASSETS="$(setup-envtest use --use-env -p path ${ENVTEST_K8S_VERSION})" echo "using envtest tools installed at '$KUBEBUILDER_ASSETS'" source "$(dirname "$0")/test-integration.env" diff --git a/vendor/github.com/gardener/gardener/hack/start-envtest.sh b/vendor/github.com/gardener/gardener/hack/start-envtest.sh index 9e357b7f8..708270beb 100755 --- a/vendor/github.com/gardener/gardener/hack/start-envtest.sh +++ b/vendor/github.com/gardener/gardener/hack/start-envtest.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh b/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh index 4f53ddaed..b521ab435 100755 --- a/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh +++ b/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/test-cover.sh b/vendor/github.com/gardener/gardener/hack/test-cover.sh index ff9e45129..bbe19d0e1 100755 --- a/vendor/github.com/gardener/gardener/hack/test-cover.sh +++ b/vendor/github.com/gardener/gardener/hack/test-cover.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh b/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh index 7f999c805..94b149c7f 100755 --- a/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh +++ b/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -o errexit set -o nounset @@ -30,33 +44,47 @@ if [[ "$1" != "operator" ]]; then shoot_names=( e2e-managedseed.garden - e2e-hibernated.local + e2e-hib.local + e2e-hib-wl.local e2e-unpriv.local e2e-wake-up.local + e2e-wake-up-wl.local e2e-migrate.local + e2e-migrate-wl.local e2e-rotate.local + e2e-rotate-wl.local e2e-default.local - e2e-update-node.local - e2e-update-zone.local + e2e-default-wl.local + e2e-upd-node.local + e2e-upd-node-wl.local + e2e-upd-zone.local + e2e-upd-zone-wl.local e2e-upgrade.local + e2e-upgrade-ha.local + e2e-upgrade-hib.local ) if [ -n "${CI:-}" -a -n "${ARTIFACTS:-}" ]; then for shoot in "${shoot_names[@]}" ; do - if [ "${SHOOT_FAILURE_TOLERANCE_TYPE:-}" = "zone" -a "$shoot" = "e2e-update-zone.local" ]; then - # Do not add the entry for the e2e-update-zone test as the target ip is dynamic. - # The shoot cluster in e2e-update-zone is created as single-zone control plane and afterwards updated to a multi-zone control plane. + if [[ "${SHOOT_FAILURE_TOLERANCE_TYPE:-}" == "zone" && ("$shoot" == "e2e-upgrade-ha.local" || "$shoot" == "e2e-upd-zone.local" || "$shoot" == "e2e-upd-zone-wl.local") ]]; then + # Do not add the entry for the e2e-upd-zone test as the target ip is dynamic. + # The shoot cluster in e2e-upd-zone is created as single-zone control plane and afterwards updated to a multi-zone control plane. # This means that the external loadbalancer IP will change from a zone-specific istio ingress gateway to the default istio ingress gateway. # A static mapping (to the default istio ingress gateway) as done here will not work in this scenario. - # The e2e-update-zone test uses the in-cluster coredns for name resolution and can therefore resolve the api endpoint. + # The e2e-upd-zone test uses the in-cluster coredns for name resolution and can therefore resolve the api endpoint. continue fi printf "\n127.0.0.1 api.%s.external.local.gardener.cloud\n127.0.0.1 api.%s.internal.local.gardener.cloud\n" $shoot $shoot >>/etc/hosts done printf "\n127.0.0.1 gu-local--e2e-rotate.ingress.$seed_name.seed.local.gardener.cloud\n" >>/etc/hosts + printf "\n127.0.0.1 gu-local--e2e-rotate-wl.ingress.$seed_name.seed.local.gardener.cloud\n" >>/etc/hosts printf "\n127.0.0.1 api.e2e-managedseed.garden.external.local.gardener.cloud\n127.0.0.1 api.e2e-managedseed.garden.internal.local.gardener.cloud\n" >>/etc/hosts else for shoot in "${shoot_names[@]}" ; do + if [[ "${SHOOT_FAILURE_TOLERANCE_TYPE:-}" == "zone" && ("$shoot" == "e2e-upgrade-ha.local" || "$shoot" == "e2e-upd-zone.local" || "$shoot" == "e2e-upd-zone-wl.local") ]]; then + # Do not check the entry for the e2e-upd-zone test as the target ip is dynamic. + continue + fi for ip in internal external ; do if ! grep -q -x "127.0.0.1 api.$shoot.$ip.local.gardener.cloud" /etc/hosts; then printf "Hostnames for Shoot $shoot is missing in /etc/hosts. To access shoot clusters and run e2e tests, you have to extend your /etc/hosts file.\nPlease refer to https://github.com/gardener/gardener/blob/master/docs/deployment/getting_started_locally.md#accessing-the-shoot-cluster\n\n" @@ -65,6 +93,16 @@ if [[ "$1" != "operator" ]]; then done done fi +# If we are running the gardener-operator tests then we have to make the virtual garden domains accessible. +else + if [ -n "${CI:-}" -a -n "${ARTIFACTS:-}" ]; then + printf "\n127.0.0.1 api.virtual-garden.local.gardener.cloud\n" >>/etc/hosts + else + if ! grep -q -x "127.0.0.1 api.virtual-garden.local.gardener.cloud" /etc/hosts; then + printf "Hostname for virtual garden cluster is missing in /etc/hosts. To access the virtual garden cluster and run e2e tests, you have to extend your /etc/hosts file.\nPlease refer to https://github.com/gardener/gardener/blob/master/docs/deployment/getting_started_locally.md#accessing-the-shoot-cluster\n\n" + exit 1 + fi + fi fi GO111MODULE=on ginkgo run --timeout=1h $ginkgo_flags --v --show-node-events "$@" diff --git a/vendor/github.com/gardener/gardener/hack/test-integration.sh b/vendor/github.com/gardener/gardener/hack/test-integration.sh index e164399d1..5e3b70754 100755 --- a/vendor/github.com/gardener/gardener/hack/test-integration.sh +++ b/vendor/github.com/gardener/gardener/hack/test-integration.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/test-prometheus.sh b/vendor/github.com/gardener/gardener/hack/test-prometheus.sh index 2270fd84e..9cdada928 100755 --- a/vendor/github.com/gardener/gardener/hack/test-prometheus.sh +++ b/vendor/github.com/gardener/gardener/hack/test-prometheus.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/test.sh b/vendor/github.com/gardener/gardener/hack/test.sh index 0e08481ac..fd194f28c 100755 --- a/vendor/github.com/gardener/gardener/hack/test.sh +++ b/vendor/github.com/gardener/gardener/hack/test.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/tools.go b/vendor/github.com/gardener/gardener/hack/tools.go index 79cf6e752..3da5b25a6 100755 --- a/vendor/github.com/gardener/gardener/hack/tools.go +++ b/vendor/github.com/gardener/gardener/hack/tools.go @@ -1,7 +1,7 @@ //go:build tools // +build tools -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/tools.mk b/vendor/github.com/gardener/gardener/hack/tools.mk index 43f40a435..43cd339d9 100755 --- a/vendor/github.com/gardener/gardener/hack/tools.mk +++ b/vendor/github.com/gardener/gardener/hack/tools.mk @@ -1,4 +1,4 @@ -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -37,6 +37,7 @@ GOIMPORTS := $(TOOLS_BIN_DIR)/goimports GOIMPORTSREVISER := $(TOOLS_BIN_DIR)/goimports-reviser GOLANGCI_LINT := $(TOOLS_BIN_DIR)/golangci-lint GOMEGACHECK := $(TOOLS_BIN_DIR)/gomegacheck.so # plugin binary +GO_ADD_LICENSE := $(TOOLS_BIN_DIR)/addlicense GO_APIDIFF := $(TOOLS_BIN_DIR)/go-apidiff GO_VULN_CHECK := $(TOOLS_BIN_DIR)/govulncheck GO_TO_PROTOBUF := $(TOOLS_BIN_DIR)/go-to-protobuf @@ -59,14 +60,14 @@ YQ := $(TOOLS_BIN_DIR)/yq DOCFORGE_VERSION ?= v0.33.0 GOLANGCI_LINT_VERSION ?= v1.51.2 GO_APIDIFF_VERSION ?= v0.5.0 -# TODO(vpnachev): Update goimports-reviser to v3.4.0 when there is a release including https://github.com/incu6us/goimports-reviser/pull/95. -GOIMPORTSREVISER_VERSION ?= 32c80678d5d73a50b6966f06b346de58b1d018f1 +GO_ADD_LICENSE_VERSION ?= v1.1.1 +GOIMPORTSREVISER_VERSION ?= v3.3.1 GO_VULN_CHECK_VERSION ?= latest -HELM_VERSION ?= v3.6.3 -KIND_VERSION ?= v0.14.0 -KUBECTL_VERSION ?= v1.24.3 -SKAFFOLD_VERSION ?= v1.39.1 -YQ_VERSION ?= v4.30.4 +HELM_VERSION ?= v3.11.2 +KIND_VERSION ?= v0.18.0 +KUBECTL_VERSION ?= v1.24.11 +SKAFFOLD_VERSION ?= v2.2.0 +YQ_VERSION ?= v4.31.2 export TOOLS_BIN_DIR := $(TOOLS_BIN_DIR) export PATH := $(abspath $(TOOLS_BIN_DIR)):$(PATH) @@ -131,6 +132,9 @@ $(GOMEGACHECK): go.mod CGO_ENABLED=1 go build -o $(GOMEGACHECK) -buildmode=plugin github.com/gardener/gardener/hack/tools/gomegacheck/plugin endif +$(GO_ADD_LICENSE): + GOBIN=$(abspath $(TOOLS_BIN_DIR)) go install github.com/google/addlicense@$(GO_ADD_LICENSE_VERSION) + $(GO_APIDIFF): $(call tool_version_file,$(GO_APIDIFF),$(GO_APIDIFF_VERSION)) GOBIN=$(abspath $(TOOLS_BIN_DIR)) go install github.com/joelanford/go-apidiff@$(GO_APIDIFF_VERSION) diff --git a/vendor/github.com/gardener/gardener/hack/update-codegen.sh b/vendor/github.com/gardener/gardener/hack/update-codegen.sh index 7aa7ddca8..28a1dd8ee 100755 --- a/vendor/github.com/gardener/gardener/hack/update-codegen.sh +++ b/vendor/github.com/gardener/gardener/hack/update-codegen.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/hack/update-protobuf.sh b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh index 13244e404..356ac74e8 100755 --- a/vendor/github.com/gardener/gardener/hack/update-protobuf.sh +++ b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/api/core/accessor.go b/vendor/github.com/gardener/gardener/pkg/api/core/accessor.go index ec4b6a25b..0f677d07f 100644 --- a/vendor/github.com/gardener/gardener/pkg/api/core/accessor.go +++ b/vendor/github.com/gardener/gardener/pkg/api/core/accessor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/api/extensions/accessor.go b/vendor/github.com/gardener/gardener/pkg/api/extensions/accessor.go index 1b31a7b6e..27d82e8c4 100644 --- a/vendor/github.com/gardener/gardener/pkg/api/extensions/accessor.go +++ b/vendor/github.com/gardener/gardener/pkg/api/extensions/accessor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/doc.go index fffc4aab3..0fd839052 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/doc.go @@ -1,5 +1,5 @@ /* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go index c79804ae0..35263a6e7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go @@ -1,5 +1,5 @@ /* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_adminkubeconfigrequest.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_adminkubeconfigrequest.go index cb82bf372..3ffa508ac 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_adminkubeconfigrequest.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_adminkubeconfigrequest.go @@ -1,5 +1,5 @@ /* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ type AdminKubeconfigRequest struct { type AdminKubeconfigRequestStatus struct { // Kubeconfig contains the kubeconfig with cluster-admin privileges for the shoot cluster. Kubeconfig []byte - // ExpirationTimestamp is the expiration timestamp of of the returned credential. + // ExpirationTimestamp is the expiration timestamp of the returned credential. ExpirationTimestamp metav1.Time } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go index 4c5093bd2..71a213467 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go @@ -1,5 +1,5 @@ /* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/doc.go index c49e80885..fdcd2869d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/doc.go @@ -1,5 +1,5 @@ /* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go index 4f0bba095..4b9e29081 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto index 75adf84d6..be4e0c734 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go index cf9947259..3d51bc136 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go @@ -1,5 +1,5 @@ /* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go index a8432778b..5df13609b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go @@ -1,5 +1,5 @@ /* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go index e5a7ddf8c..0b4cbd3e3 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go index d1d0b99f0..65cdee80b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go index 11b428f28..e90796cbd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go index 7270cbe9b..f4f5f2ff4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/core/doc.go index effda8b53..e0c9ef0da 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/field_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/core/field_constants.go index 922e3d0b5..748c42e7a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/field_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/field_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/core/install/install.go index 4fcd9a9a0..90946dd6d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/register.go b/vendor/github.com/gardener/gardener/pkg/apis/core/register.go index 6204f4be1..401de8b2a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types.go index fb8673dcd..ac7692b80 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go index f9e903541..8790f5add 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go index 715c68d6e..2edf47669 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go index 98278d763..b77e77eb3 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_common.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_common.go index 028ec48e8..7b4e94a71 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_common.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_common.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go index cb1cade71..f2790757f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go index f8b4ea099..cdb203021 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go index 195c53fd4..6192201fb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -75,6 +75,9 @@ type ControllerResource struct { // Delete: "BeforeKubeAPIServer" // Migrate: "BeforeKubeAPIServer" Lifecycle *ControllerResourceLifecycle + // WorkerlessSupported specifies whether this ControllerResource supports Workerless Shoot clusters. + // This field is only relevant when kind is "Extension". + WorkerlessSupported *bool } // DeploymentRef contains information about `ControllerDeployment` references. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go index 595497214..ddaf9c170 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_project.go index 25ec07dcc..d5d23e38d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_quota.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_quota.go index c1767e80d..493e3034a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_quota.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_quota.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go index 1f711918f..a0fca7e05 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go index 8b28db65c..4018bdeeb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -124,10 +124,6 @@ type SeedBackup struct { // SeedDNS contains the external domain and configuration for the DNS provider type SeedDNS struct { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. - IngressDomain *string // Provider configures a DNSProvider Provider *SeedDNSProvider } @@ -138,10 +134,6 @@ type SeedDNSProvider struct { Type string // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference - // Domains contains information about which domains shall be included/excluded for this provider. - Domains *DNSIncludeExclude - // Zones contains information about which hosted zones shall be included/excluded for this provider. - Zones *DNSIncludeExclude } // Ingress configures the Ingress specific settings of the Seed cluster @@ -211,9 +203,16 @@ type SeedSettings struct { // VerticalPodAutoscaler controls certain settings for the vertical pod autoscaler components deployed in the seed. VerticalPodAutoscaler *SeedSettingVerticalPodAutoscaler // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. OwnerChecks *SeedSettingOwnerChecks // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. DependencyWatchdog *SeedSettingDependencyWatchdog + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + TopologyAwareRouting *SeedSettingTopologyAwareRouting } // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the @@ -267,6 +266,10 @@ type SeedSettingVerticalPodAutoscaler struct { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. type SeedSettingOwnerChecks struct { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -276,12 +279,19 @@ type SeedSettingOwnerChecks struct { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. type SeedSettingDependencyWatchdog struct { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. Endpoint *SeedSettingDependencyWatchdogEndpoint // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. Probe *SeedSettingDependencyWatchdogProbe + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + Weeder *SeedSettingDependencyWatchdogWeeder + // Prober controls the prober settings for the dependency-watchdog for the seed. + Prober *SeedSettingDependencyWatchdogProber } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. type SeedSettingDependencyWatchdogEndpoint struct { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -290,13 +300,37 @@ type SeedSettingDependencyWatchdogEndpoint struct { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. type SeedSettingDependencyWatchdogProbe struct { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. Enabled bool } +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogWeeder struct { + // Enabled controls whether the weeder of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + Enabled bool +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogProber struct { + // Enabled controls whether the prober of the dependency-watchdog should be enabled. + // reachable via its external ingress in order to avoid melt-down situations. + Enabled bool +} + +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SeedSettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + Enabled bool +} + // SeedTaint describes a taint on a seed. type SeedTaint struct { // Key is the taint key to be applied to a seed. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go index 24baa88e8..f9b2a0029 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -75,7 +75,7 @@ type ShootSpec struct { // Kubernetes contains the version and configuration settings of the control plane components. Kubernetes Kubernetes // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. - Networking Networking + Networking *Networking // Maintenance contains information about the time window for maintenance operations and which // operations should be performed. Maintenance *Maintenance @@ -90,7 +90,7 @@ type ShootSpec struct { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. - SecretBindingName string + SecretBindingName *string // SeedName is the name of the seed cluster that runs the control plane of the Shoot. // This field is immutable when the SeedChange feature gate is disabled. SeedName *string @@ -187,9 +187,9 @@ type ShootCredentialsRotation struct { // Observability contains information about the observability credential rotation. Observability *ShootObservabilityRotation // ServiceAccountKey contains information about the service account key credential rotation. - ServiceAccountKey *ShootServiceAccountKeyRotation + ServiceAccountKey *ServiceAccountKeyRotation // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. - ETCDEncryptionKey *ShootETCDEncryptionKeyRotation + ETCDEncryptionKey *ETCDEncryptionKeyRotation } // CARotation contains information about the certificate authority credential rotation. @@ -233,8 +233,8 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -type ShootServiceAccountKeyRotation struct { +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +type ServiceAccountKeyRotation struct { // Phase describes the phase of the service account key credential rotation. Phase CredentialsRotationPhase // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. @@ -250,8 +250,8 @@ type ShootServiceAccountKeyRotation struct { LastCompletionTriggeredTime *metav1.Time } -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -type ShootETCDEncryptionKeyRotation struct { +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ETCDEncryptionKeyRotation struct { // Phase describes the phase of the ETCD encryption key credential rotation. Phase CredentialsRotationPhase // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. @@ -312,9 +312,6 @@ type KubernetesDashboard struct { } const ( - // KubernetesDashboardAuthModeBasic uses basic authentication mode for auth. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. - KubernetesDashboardAuthModeBasic = "basic" // KubernetesDashboardAuthModeToken uses token-based mode for auth. KubernetesDashboardAuthModeToken = "token" ) @@ -413,7 +410,7 @@ type HibernationSchedule struct { Start *string // End is a Cron spec at which time a Shoot will be woken up. End *string - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. Location *string } @@ -532,10 +529,6 @@ type KubeAPIServerConfig struct { APIAudiences []string // AuditConfig contains configuration settings for the audit of the kube-apiserver. AuditConfig *AuditConfig - // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. - EnableBasicAuthentication *bool // OIDCConfig contains configuration settings for the OIDC provider. OIDCConfig *OIDCConfig // RuntimeConfig contains information about enabled or disabled APIs. @@ -667,6 +660,8 @@ type AdmissionPlugin struct { Disabled *bool // Config is the configuration of the plugin. Config *runtime.RawExtension + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + KubeconfigSecretName *string } // WatchCacheSizes contains configuration of the API server's watch cache sizes. @@ -868,6 +863,8 @@ type KubeletConfig struct { // "4h" for Kubernetes < v1.26. // "5m" for Kubernetes >= v1.26. StreamingConnectionIdleTimeout *metav1.Duration + // MemorySwap configures swap memory available to container workloads. + MemorySwap *MemorySwapConfiguration } // KubeletConfigEviction contains kubelet eviction thresholds supporting either a resource.Quantity or a percentage based value. @@ -924,10 +921,30 @@ type KubeletConfigReserved struct { PID *resource.Quantity } +// SwapBehavior configures swap memory available to container workloads +type SwapBehavior string + +const ( + // LimitedSwap is a constant for the kubelet's swap behavior limitting the amount of swap usable for Kubernetes workloads. Workloads on the node not managed by Kubernetes can still swap. + // - cgroupsv1 host: Kubernetes workloads can use any combination of memory and swap, up to the pod's memory limit + // - cgroupsv2 host: swap is managed independently from memory. Kubernetes workloads cannot use swap memory. + LimitedSwap SwapBehavior = "LimitedSwap" + // UnlimitedSwap is a constant for the kubelet's swap behavior enabling Kubernetes workloads to use as much swap memory as required, up to the system limit (not limited by pod or container memory limits). + UnlimitedSwap SwapBehavior = "UnlimitedSwap" +) + +// MemorySwapConfiguration contains kubelet swap configuration +// For more information, please see KEP: 2400-node-swap +type MemorySwapConfiguration struct { + // SwapBehavior configures swap memory available to container workloads. May be one of {"LimitedSwap", "UnlimitedSwap"} + // defaults to: LimitedSwap + SwapBehavior *SwapBehavior +} + // Networking defines networking parameters for the shoot cluster. type Networking struct { // Type identifies the type of the networking plugin. This field is immutable. - Type string + Type *string // ProviderConfig is the configuration passed to network resource. ProviderConfig *runtime.RawExtension // Pods is the CIDR of the pod network. This field is immutable. @@ -975,7 +992,7 @@ type MaintenanceAutoUpdate struct { // KubernetesVersion indicates whether the patch Kubernetes version may be automatically updated (default: true). KubernetesVersion bool // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). - MachineImageVersion bool + MachineImageVersion *bool } // MaintenanceTimeWindow contains information about the time window for maintenance operations. @@ -1059,6 +1076,8 @@ type Worker struct { Zones []string // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. MachineControllerManagerSettings *MachineControllerManagerSettings + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + Sysctls map[string]string } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go index 76093028e..c1db8a0c9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_utils.go index 045973353..78607d7d9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go index 976f4da6f..68274c6f9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go index c8ab94303..fd23a9809 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -71,6 +71,10 @@ func SetDefaults_Seed(obj *Seed) { if obj.Spec.Settings.DependencyWatchdog == nil { obj.Spec.Settings.DependencyWatchdog = &SeedSettingDependencyWatchdog{} } + + if obj.Spec.Settings.TopologyAwareRouting == nil { + obj.Spec.Settings.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{Enabled: false} + } } // SetDefaults_SeedNetworks sets default values for SeedNetworks objects. @@ -82,27 +86,13 @@ func SetDefaults_SeedNetworks(obj *SeedNetworks) { // SetDefaults_SeedSettingDependencyWatchdog sets defaults for SeedSettingDependencyWatchdog objects. func SetDefaults_SeedSettingDependencyWatchdog(obj *SeedSettingDependencyWatchdog) { - if obj.Endpoint == nil { - obj.Endpoint = &SeedSettingDependencyWatchdogEndpoint{Enabled: true} - } - if obj.Probe == nil { - obj.Probe = &SeedSettingDependencyWatchdogProbe{Enabled: true} - } } // SetDefaults_Shoot sets default values for Shoot objects. func SetDefaults_Shoot(obj *Shoot) { - // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. - k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") - if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { - obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) - } if obj.Spec.Kubernetes.KubeAPIServer == nil { obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{} } - if obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication = pointer.Bool(false) - } if obj.Spec.Kubernetes.KubeAPIServer.Requests == nil { obj.Spec.Kubernetes.KubeAPIServer.Requests = &KubeAPIServerRequests{} } @@ -134,31 +124,6 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeControllerManager == nil { obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} } - if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) - } - if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} - } - - if obj.Spec.Kubernetes.KubeScheduler == nil { - obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} - } - if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { - defaultProfile := SchedulingProfileBalanced - obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile - } - - if obj.Spec.Kubernetes.KubeProxy == nil { - obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} - } - if obj.Spec.Kubernetes.KubeProxy.Mode == nil { - defaultProxyMode := ProxyModeIPTables - obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode - } - if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { - obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) - } if obj.Spec.Kubernetes.EnableStaticTokenKubeconfig == nil { // Error is ignored here because we cannot do anything meaningful with it - variable will default to "false". @@ -169,22 +134,6 @@ func SetDefaults_Shoot(obj *Shoot) { } } - if obj.Spec.Addons == nil { - obj.Spec.Addons = &Addons{} - } - if obj.Spec.Addons.KubernetesDashboard == nil { - obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} - } - if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { - var defaultAuthMode string - if *obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication { - defaultAuthMode = KubernetesDashboardAuthModeBasic - } else { - defaultAuthMode = KubernetesDashboardAuthModeToken - } - obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode - } - if obj.Spec.Purpose == nil { p := ShootPurposeEvaluation obj.Spec.Purpose = &p @@ -197,45 +146,17 @@ func SetDefaults_Shoot(obj *Shoot) { addTolerations(&obj.Spec.Tolerations, Toleration{Key: SeedTaintProtected}) } - if obj.Spec.Kubernetes.Kubelet == nil { - obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} - } - if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { - obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) - } - if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { - obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + if obj.Spec.Maintenance == nil { + obj.Spec.Maintenance = &Maintenance{} } - - var ( - kubeReservedMemory = resource.MustParse("1Gi") - kubeReservedCPU = resource.MustParse("80m") - kubeReservedPID = resource.MustParse("20k") - ) - - if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID - } else { - if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + if obj.Spec.Maintenance.AutoUpdate == nil { + obj.Spec.Maintenance.AutoUpdate = &MaintenanceAutoUpdate{ + KubernetesVersion: true, } } - if obj.Spec.Maintenance == nil { - obj.Spec.Maintenance = &Maintenance{} + if obj.Spec.Networking == nil { + obj.Spec.Networking = &Networking{} } for i, worker := range obj.Spec.Provider.Workers { @@ -257,26 +178,145 @@ func SetDefaults_Shoot(obj *Shoot) { if worker.CRI == nil { obj.Spec.Provider.Workers[i].CRI = &CRI{Name: CRINameContainerD} } - } - if obj.Spec.Provider.WorkersSettings == nil { - obj.Spec.Provider.WorkersSettings = &WorkersSettings{} - } - if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { - obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} - } + if worker.Kubernetes != nil && worker.Kubernetes.Kubelet != nil { + if worker.Kubernetes.Kubelet.FailSwapOn == nil { + obj.Spec.Provider.Workers[i].Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) + } - if obj.Spec.SystemComponents == nil { - obj.Spec.SystemComponents = &SystemComponents{} - } - if obj.Spec.SystemComponents.CoreDNS == nil { - obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} - } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { - obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} + if nodeSwapFeatureGateEnabled, ok := worker.Kubernetes.Kubelet.FeatureGates["NodeSwap"]; ok && nodeSwapFeatureGateEnabled && !*worker.Kubernetes.Kubelet.FailSwapOn { + if worker.Kubernetes.Kubelet.MemorySwap == nil { + obj.Spec.Provider.Workers[i].Kubernetes.Kubelet.MemorySwap = &MemorySwapConfiguration{} + } + + if worker.Kubernetes.Kubelet.MemorySwap.SwapBehavior == nil { + limitedSwap := LimitedSwap + obj.Spec.Provider.Workers[i].Kubernetes.Kubelet.MemorySwap.SwapBehavior = &limitedSwap + } + } + } } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { - obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + + // these fields are relevant only for shoot with workers + if len(obj.Spec.Provider.Workers) > 0 { + // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. + k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") + if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { + obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) + } + + if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { + obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) + } + k8sLess127, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.27") + if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { + if k8sLess127 { + obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} + } else { + obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 40 * time.Second} + } + } + + if obj.Spec.Kubernetes.KubeScheduler == nil { + obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} + } + if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { + defaultProfile := SchedulingProfileBalanced + obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile + } + + if obj.Spec.Kubernetes.KubeProxy == nil { + obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} + } + if obj.Spec.Kubernetes.KubeProxy.Mode == nil { + defaultProxyMode := ProxyModeIPTables + obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode + } + if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { + obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) + } + + if obj.Spec.Addons == nil { + obj.Spec.Addons = &Addons{} + } + if obj.Spec.Addons.KubernetesDashboard == nil { + obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} + } + if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { + defaultAuthMode := KubernetesDashboardAuthModeToken + obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode + } + + if obj.Spec.Kubernetes.Kubelet == nil { + obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} + } + if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { + obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) + } + k8sGreaterEquals122, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, ">= 1.22") + if nodeSwapFeatureGateEnabled, ok := obj.Spec.Kubernetes.Kubelet.FeatureGates["NodeSwap"]; k8sGreaterEquals122 && ok && nodeSwapFeatureGateEnabled && !*obj.Spec.Kubernetes.Kubelet.FailSwapOn { + if obj.Spec.Kubernetes.Kubelet.MemorySwap == nil { + obj.Spec.Kubernetes.Kubelet.MemorySwap = &MemorySwapConfiguration{} + } + if obj.Spec.Kubernetes.Kubelet.MemorySwap.SwapBehavior == nil { + limitedSwap := LimitedSwap + obj.Spec.Kubernetes.Kubelet.MemorySwap.SwapBehavior = &limitedSwap + } + } + if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) + } + if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) + } + if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { + obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + } + + var ( + kubeReservedMemory = resource.MustParse("1Gi") + kubeReservedCPU = resource.MustParse("80m") + kubeReservedPID = resource.MustParse("20k") + ) + + if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } else { + if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } + } + + if obj.Spec.Maintenance.AutoUpdate.MachineImageVersion == nil { + obj.Spec.Maintenance.AutoUpdate.MachineImageVersion = pointer.Bool(true) + } + + if obj.Spec.Provider.WorkersSettings == nil { + obj.Spec.Provider.WorkersSettings = &WorkersSettings{} + } + if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { + obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} + } + + if obj.Spec.SystemComponents == nil { + obj.Spec.SystemComponents = &SystemComponents{} + } + if obj.Spec.SystemComponents.CoreDNS == nil { + obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { + obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { + obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + } } } @@ -289,13 +329,6 @@ func SetDefaults_Networking(obj *Networking) { // SetDefaults_Maintenance sets default values for Maintenance objects. func SetDefaults_Maintenance(obj *Maintenance) { - if obj.AutoUpdate == nil { - obj.AutoUpdate = &MaintenanceAutoUpdate{ - KubernetesVersion: true, - MachineImageVersion: true, - } - } - if obj.TimeWindow == nil { mt := timewindow.RandomMaintenanceTimeWindow() obj.TimeWindow = &MaintenanceTimeWindow{ diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go index f926ae47e..d7f8ae95f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go index 7b9384edc..ad1cee997 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go index 3777f75d3..6f59020a2 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go index ac2cfd19b..a67cd6d86 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go index 712286f46..4c00680b6 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1315,10 +1315,38 @@ func (m *DeploymentRef) XXX_DiscardUnknown() { var xxx_messageInfo_DeploymentRef proto.InternalMessageInfo +func (m *ETCDEncryptionKeyRotation) Reset() { *m = ETCDEncryptionKeyRotation{} } +func (*ETCDEncryptionKeyRotation) ProtoMessage() {} +func (*ETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{45} +} +func (m *ETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ETCDEncryptionKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ETCDEncryptionKeyRotation.Merge(m, src) +} +func (m *ETCDEncryptionKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ETCDEncryptionKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ETCDEncryptionKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ETCDEncryptionKeyRotation proto.InternalMessageInfo + func (m *ExpirableVersion) Reset() { *m = ExpirableVersion{} } func (*ExpirableVersion) ProtoMessage() {} func (*ExpirableVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{45} + return fileDescriptor_f1caaec5647a9dbf, []int{46} } func (m *ExpirableVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1346,7 +1374,7 @@ var xxx_messageInfo_ExpirableVersion proto.InternalMessageInfo func (m *ExposureClass) Reset() { *m = ExposureClass{} } func (*ExposureClass) ProtoMessage() {} func (*ExposureClass) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{46} + return fileDescriptor_f1caaec5647a9dbf, []int{47} } func (m *ExposureClass) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1374,7 +1402,7 @@ var xxx_messageInfo_ExposureClass proto.InternalMessageInfo func (m *ExposureClassList) Reset() { *m = ExposureClassList{} } func (*ExposureClassList) ProtoMessage() {} func (*ExposureClassList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{47} + return fileDescriptor_f1caaec5647a9dbf, []int{48} } func (m *ExposureClassList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1402,7 +1430,7 @@ var xxx_messageInfo_ExposureClassList proto.InternalMessageInfo func (m *ExposureClassScheduling) Reset() { *m = ExposureClassScheduling{} } func (*ExposureClassScheduling) ProtoMessage() {} func (*ExposureClassScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{48} + return fileDescriptor_f1caaec5647a9dbf, []int{49} } func (m *ExposureClassScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1430,7 +1458,7 @@ var xxx_messageInfo_ExposureClassScheduling proto.InternalMessageInfo func (m *Extension) Reset() { *m = Extension{} } func (*Extension) ProtoMessage() {} func (*Extension) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{49} + return fileDescriptor_f1caaec5647a9dbf, []int{50} } func (m *Extension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1458,7 +1486,7 @@ var xxx_messageInfo_Extension proto.InternalMessageInfo func (m *ExtensionResourceState) Reset() { *m = ExtensionResourceState{} } func (*ExtensionResourceState) ProtoMessage() {} func (*ExtensionResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{50} + return fileDescriptor_f1caaec5647a9dbf, []int{51} } func (m *ExtensionResourceState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1486,7 +1514,7 @@ var xxx_messageInfo_ExtensionResourceState proto.InternalMessageInfo func (m *FailureTolerance) Reset() { *m = FailureTolerance{} } func (*FailureTolerance) ProtoMessage() {} func (*FailureTolerance) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{51} + return fileDescriptor_f1caaec5647a9dbf, []int{52} } func (m *FailureTolerance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1514,7 +1542,7 @@ var xxx_messageInfo_FailureTolerance proto.InternalMessageInfo func (m *Gardener) Reset() { *m = Gardener{} } func (*Gardener) ProtoMessage() {} func (*Gardener) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{52} + return fileDescriptor_f1caaec5647a9dbf, []int{53} } func (m *Gardener) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1542,7 +1570,7 @@ var xxx_messageInfo_Gardener proto.InternalMessageInfo func (m *GardenerResourceData) Reset() { *m = GardenerResourceData{} } func (*GardenerResourceData) ProtoMessage() {} func (*GardenerResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{53} + return fileDescriptor_f1caaec5647a9dbf, []int{54} } func (m *GardenerResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1570,7 +1598,7 @@ var xxx_messageInfo_GardenerResourceData proto.InternalMessageInfo func (m *Hibernation) Reset() { *m = Hibernation{} } func (*Hibernation) ProtoMessage() {} func (*Hibernation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{54} + return fileDescriptor_f1caaec5647a9dbf, []int{55} } func (m *Hibernation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1598,7 +1626,7 @@ var xxx_messageInfo_Hibernation proto.InternalMessageInfo func (m *HibernationSchedule) Reset() { *m = HibernationSchedule{} } func (*HibernationSchedule) ProtoMessage() {} func (*HibernationSchedule) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{55} + return fileDescriptor_f1caaec5647a9dbf, []int{56} } func (m *HibernationSchedule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1626,7 +1654,7 @@ var xxx_messageInfo_HibernationSchedule proto.InternalMessageInfo func (m *HighAvailability) Reset() { *m = HighAvailability{} } func (*HighAvailability) ProtoMessage() {} func (*HighAvailability) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{56} + return fileDescriptor_f1caaec5647a9dbf, []int{57} } func (m *HighAvailability) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1654,7 +1682,7 @@ var xxx_messageInfo_HighAvailability proto.InternalMessageInfo func (m *HorizontalPodAutoscalerConfig) Reset() { *m = HorizontalPodAutoscalerConfig{} } func (*HorizontalPodAutoscalerConfig) ProtoMessage() {} func (*HorizontalPodAutoscalerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{57} + return fileDescriptor_f1caaec5647a9dbf, []int{58} } func (m *HorizontalPodAutoscalerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1682,7 +1710,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerConfig proto.InternalMessageInfo func (m *Ingress) Reset() { *m = Ingress{} } func (*Ingress) ProtoMessage() {} func (*Ingress) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{58} + return fileDescriptor_f1caaec5647a9dbf, []int{59} } func (m *Ingress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1710,7 +1738,7 @@ var xxx_messageInfo_Ingress proto.InternalMessageInfo func (m *IngressController) Reset() { *m = IngressController{} } func (*IngressController) ProtoMessage() {} func (*IngressController) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{59} + return fileDescriptor_f1caaec5647a9dbf, []int{60} } func (m *IngressController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1738,7 +1766,7 @@ var xxx_messageInfo_IngressController proto.InternalMessageInfo func (m *KubeAPIServerConfig) Reset() { *m = KubeAPIServerConfig{} } func (*KubeAPIServerConfig) ProtoMessage() {} func (*KubeAPIServerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{60} + return fileDescriptor_f1caaec5647a9dbf, []int{61} } func (m *KubeAPIServerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1766,7 +1794,7 @@ var xxx_messageInfo_KubeAPIServerConfig proto.InternalMessageInfo func (m *KubeAPIServerLogging) Reset() { *m = KubeAPIServerLogging{} } func (*KubeAPIServerLogging) ProtoMessage() {} func (*KubeAPIServerLogging) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{61} + return fileDescriptor_f1caaec5647a9dbf, []int{62} } func (m *KubeAPIServerLogging) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1794,7 +1822,7 @@ var xxx_messageInfo_KubeAPIServerLogging proto.InternalMessageInfo func (m *KubeAPIServerRequests) Reset() { *m = KubeAPIServerRequests{} } func (*KubeAPIServerRequests) ProtoMessage() {} func (*KubeAPIServerRequests) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{62} + return fileDescriptor_f1caaec5647a9dbf, []int{63} } func (m *KubeAPIServerRequests) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1822,7 +1850,7 @@ var xxx_messageInfo_KubeAPIServerRequests proto.InternalMessageInfo func (m *KubeControllerManagerConfig) Reset() { *m = KubeControllerManagerConfig{} } func (*KubeControllerManagerConfig) ProtoMessage() {} func (*KubeControllerManagerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{63} + return fileDescriptor_f1caaec5647a9dbf, []int{64} } func (m *KubeControllerManagerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1850,7 +1878,7 @@ var xxx_messageInfo_KubeControllerManagerConfig proto.InternalMessageInfo func (m *KubeProxyConfig) Reset() { *m = KubeProxyConfig{} } func (*KubeProxyConfig) ProtoMessage() {} func (*KubeProxyConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{64} + return fileDescriptor_f1caaec5647a9dbf, []int{65} } func (m *KubeProxyConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1878,7 +1906,7 @@ var xxx_messageInfo_KubeProxyConfig proto.InternalMessageInfo func (m *KubeSchedulerConfig) Reset() { *m = KubeSchedulerConfig{} } func (*KubeSchedulerConfig) ProtoMessage() {} func (*KubeSchedulerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{65} + return fileDescriptor_f1caaec5647a9dbf, []int{66} } func (m *KubeSchedulerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1906,7 +1934,7 @@ var xxx_messageInfo_KubeSchedulerConfig proto.InternalMessageInfo func (m *KubeletConfig) Reset() { *m = KubeletConfig{} } func (*KubeletConfig) ProtoMessage() {} func (*KubeletConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{66} + return fileDescriptor_f1caaec5647a9dbf, []int{67} } func (m *KubeletConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1934,7 +1962,7 @@ var xxx_messageInfo_KubeletConfig proto.InternalMessageInfo func (m *KubeletConfigEviction) Reset() { *m = KubeletConfigEviction{} } func (*KubeletConfigEviction) ProtoMessage() {} func (*KubeletConfigEviction) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{67} + return fileDescriptor_f1caaec5647a9dbf, []int{68} } func (m *KubeletConfigEviction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1962,7 +1990,7 @@ var xxx_messageInfo_KubeletConfigEviction proto.InternalMessageInfo func (m *KubeletConfigEvictionMinimumReclaim) Reset() { *m = KubeletConfigEvictionMinimumReclaim{} } func (*KubeletConfigEvictionMinimumReclaim) ProtoMessage() {} func (*KubeletConfigEvictionMinimumReclaim) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{68} + return fileDescriptor_f1caaec5647a9dbf, []int{69} } func (m *KubeletConfigEvictionMinimumReclaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1990,7 +2018,7 @@ var xxx_messageInfo_KubeletConfigEvictionMinimumReclaim proto.InternalMessageInf func (m *KubeletConfigEvictionSoftGracePeriod) Reset() { *m = KubeletConfigEvictionSoftGracePeriod{} } func (*KubeletConfigEvictionSoftGracePeriod) ProtoMessage() {} func (*KubeletConfigEvictionSoftGracePeriod) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{69} + return fileDescriptor_f1caaec5647a9dbf, []int{70} } func (m *KubeletConfigEvictionSoftGracePeriod) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2018,7 +2046,7 @@ var xxx_messageInfo_KubeletConfigEvictionSoftGracePeriod proto.InternalMessageIn func (m *KubeletConfigReserved) Reset() { *m = KubeletConfigReserved{} } func (*KubeletConfigReserved) ProtoMessage() {} func (*KubeletConfigReserved) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{70} + return fileDescriptor_f1caaec5647a9dbf, []int{71} } func (m *KubeletConfigReserved) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2046,7 +2074,7 @@ var xxx_messageInfo_KubeletConfigReserved proto.InternalMessageInfo func (m *Kubernetes) Reset() { *m = Kubernetes{} } func (*Kubernetes) ProtoMessage() {} func (*Kubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{71} + return fileDescriptor_f1caaec5647a9dbf, []int{72} } func (m *Kubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2074,7 +2102,7 @@ var xxx_messageInfo_Kubernetes proto.InternalMessageInfo func (m *KubernetesConfig) Reset() { *m = KubernetesConfig{} } func (*KubernetesConfig) ProtoMessage() {} func (*KubernetesConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{72} + return fileDescriptor_f1caaec5647a9dbf, []int{73} } func (m *KubernetesConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2102,7 +2130,7 @@ var xxx_messageInfo_KubernetesConfig proto.InternalMessageInfo func (m *KubernetesDashboard) Reset() { *m = KubernetesDashboard{} } func (*KubernetesDashboard) ProtoMessage() {} func (*KubernetesDashboard) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{73} + return fileDescriptor_f1caaec5647a9dbf, []int{74} } func (m *KubernetesDashboard) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2130,7 +2158,7 @@ var xxx_messageInfo_KubernetesDashboard proto.InternalMessageInfo func (m *KubernetesSettings) Reset() { *m = KubernetesSettings{} } func (*KubernetesSettings) ProtoMessage() {} func (*KubernetesSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{74} + return fileDescriptor_f1caaec5647a9dbf, []int{75} } func (m *KubernetesSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2158,7 +2186,7 @@ var xxx_messageInfo_KubernetesSettings proto.InternalMessageInfo func (m *LastError) Reset() { *m = LastError{} } func (*LastError) ProtoMessage() {} func (*LastError) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{75} + return fileDescriptor_f1caaec5647a9dbf, []int{76} } func (m *LastError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2186,7 +2214,7 @@ var xxx_messageInfo_LastError proto.InternalMessageInfo func (m *LastMaintenance) Reset() { *m = LastMaintenance{} } func (*LastMaintenance) ProtoMessage() {} func (*LastMaintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{76} + return fileDescriptor_f1caaec5647a9dbf, []int{77} } func (m *LastMaintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2214,7 +2242,7 @@ var xxx_messageInfo_LastMaintenance proto.InternalMessageInfo func (m *LastOperation) Reset() { *m = LastOperation{} } func (*LastOperation) ProtoMessage() {} func (*LastOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{77} + return fileDescriptor_f1caaec5647a9dbf, []int{78} } func (m *LastOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2242,7 +2270,7 @@ var xxx_messageInfo_LastOperation proto.InternalMessageInfo func (m *Machine) Reset() { *m = Machine{} } func (*Machine) ProtoMessage() {} func (*Machine) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{78} + return fileDescriptor_f1caaec5647a9dbf, []int{79} } func (m *Machine) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2270,7 +2298,7 @@ var xxx_messageInfo_Machine proto.InternalMessageInfo func (m *MachineControllerManagerSettings) Reset() { *m = MachineControllerManagerSettings{} } func (*MachineControllerManagerSettings) ProtoMessage() {} func (*MachineControllerManagerSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{79} + return fileDescriptor_f1caaec5647a9dbf, []int{80} } func (m *MachineControllerManagerSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2298,7 +2326,7 @@ var xxx_messageInfo_MachineControllerManagerSettings proto.InternalMessageInfo func (m *MachineImage) Reset() { *m = MachineImage{} } func (*MachineImage) ProtoMessage() {} func (*MachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{80} + return fileDescriptor_f1caaec5647a9dbf, []int{81} } func (m *MachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2326,7 +2354,7 @@ var xxx_messageInfo_MachineImage proto.InternalMessageInfo func (m *MachineImageVersion) Reset() { *m = MachineImageVersion{} } func (*MachineImageVersion) ProtoMessage() {} func (*MachineImageVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{81} + return fileDescriptor_f1caaec5647a9dbf, []int{82} } func (m *MachineImageVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2354,7 +2382,7 @@ var xxx_messageInfo_MachineImageVersion proto.InternalMessageInfo func (m *MachineType) Reset() { *m = MachineType{} } func (*MachineType) ProtoMessage() {} func (*MachineType) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{82} + return fileDescriptor_f1caaec5647a9dbf, []int{83} } func (m *MachineType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2382,7 +2410,7 @@ var xxx_messageInfo_MachineType proto.InternalMessageInfo func (m *MachineTypeStorage) Reset() { *m = MachineTypeStorage{} } func (*MachineTypeStorage) ProtoMessage() {} func (*MachineTypeStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{83} + return fileDescriptor_f1caaec5647a9dbf, []int{84} } func (m *MachineTypeStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2410,7 +2438,7 @@ var xxx_messageInfo_MachineTypeStorage proto.InternalMessageInfo func (m *Maintenance) Reset() { *m = Maintenance{} } func (*Maintenance) ProtoMessage() {} func (*Maintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{84} + return fileDescriptor_f1caaec5647a9dbf, []int{85} } func (m *Maintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2438,7 +2466,7 @@ var xxx_messageInfo_Maintenance proto.InternalMessageInfo func (m *MaintenanceAutoUpdate) Reset() { *m = MaintenanceAutoUpdate{} } func (*MaintenanceAutoUpdate) ProtoMessage() {} func (*MaintenanceAutoUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{85} + return fileDescriptor_f1caaec5647a9dbf, []int{86} } func (m *MaintenanceAutoUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2466,7 +2494,7 @@ var xxx_messageInfo_MaintenanceAutoUpdate proto.InternalMessageInfo func (m *MaintenanceTimeWindow) Reset() { *m = MaintenanceTimeWindow{} } func (*MaintenanceTimeWindow) ProtoMessage() {} func (*MaintenanceTimeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{86} + return fileDescriptor_f1caaec5647a9dbf, []int{87} } func (m *MaintenanceTimeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2491,10 +2519,38 @@ func (m *MaintenanceTimeWindow) XXX_DiscardUnknown() { var xxx_messageInfo_MaintenanceTimeWindow proto.InternalMessageInfo +func (m *MemorySwapConfiguration) Reset() { *m = MemorySwapConfiguration{} } +func (*MemorySwapConfiguration) ProtoMessage() {} +func (*MemorySwapConfiguration) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{88} +} +func (m *MemorySwapConfiguration) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MemorySwapConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *MemorySwapConfiguration) XXX_Merge(src proto.Message) { + xxx_messageInfo_MemorySwapConfiguration.Merge(m, src) +} +func (m *MemorySwapConfiguration) XXX_Size() int { + return m.Size() +} +func (m *MemorySwapConfiguration) XXX_DiscardUnknown() { + xxx_messageInfo_MemorySwapConfiguration.DiscardUnknown(m) +} + +var xxx_messageInfo_MemorySwapConfiguration proto.InternalMessageInfo + func (m *Monitoring) Reset() { *m = Monitoring{} } func (*Monitoring) ProtoMessage() {} func (*Monitoring) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{87} + return fileDescriptor_f1caaec5647a9dbf, []int{89} } func (m *Monitoring) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2522,7 +2578,7 @@ var xxx_messageInfo_Monitoring proto.InternalMessageInfo func (m *NamedResourceReference) Reset() { *m = NamedResourceReference{} } func (*NamedResourceReference) ProtoMessage() {} func (*NamedResourceReference) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{88} + return fileDescriptor_f1caaec5647a9dbf, []int{90} } func (m *NamedResourceReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2550,7 +2606,7 @@ var xxx_messageInfo_NamedResourceReference proto.InternalMessageInfo func (m *Networking) Reset() { *m = Networking{} } func (*Networking) ProtoMessage() {} func (*Networking) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{89} + return fileDescriptor_f1caaec5647a9dbf, []int{91} } func (m *Networking) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2578,7 +2634,7 @@ var xxx_messageInfo_Networking proto.InternalMessageInfo func (m *NginxIngress) Reset() { *m = NginxIngress{} } func (*NginxIngress) ProtoMessage() {} func (*NginxIngress) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{90} + return fileDescriptor_f1caaec5647a9dbf, []int{92} } func (m *NginxIngress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2606,7 +2662,7 @@ var xxx_messageInfo_NginxIngress proto.InternalMessageInfo func (m *NodeLocalDNS) Reset() { *m = NodeLocalDNS{} } func (*NodeLocalDNS) ProtoMessage() {} func (*NodeLocalDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{91} + return fileDescriptor_f1caaec5647a9dbf, []int{93} } func (m *NodeLocalDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2634,7 +2690,7 @@ var xxx_messageInfo_NodeLocalDNS proto.InternalMessageInfo func (m *OIDCConfig) Reset() { *m = OIDCConfig{} } func (*OIDCConfig) ProtoMessage() {} func (*OIDCConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{92} + return fileDescriptor_f1caaec5647a9dbf, []int{94} } func (m *OIDCConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2662,7 +2718,7 @@ var xxx_messageInfo_OIDCConfig proto.InternalMessageInfo func (m *OpenIDConnectClientAuthentication) Reset() { *m = OpenIDConnectClientAuthentication{} } func (*OpenIDConnectClientAuthentication) ProtoMessage() {} func (*OpenIDConnectClientAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{93} + return fileDescriptor_f1caaec5647a9dbf, []int{95} } func (m *OpenIDConnectClientAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2690,7 +2746,7 @@ var xxx_messageInfo_OpenIDConnectClientAuthentication proto.InternalMessageInfo func (m *Project) Reset() { *m = Project{} } func (*Project) ProtoMessage() {} func (*Project) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{94} + return fileDescriptor_f1caaec5647a9dbf, []int{96} } func (m *Project) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2718,7 +2774,7 @@ var xxx_messageInfo_Project proto.InternalMessageInfo func (m *ProjectList) Reset() { *m = ProjectList{} } func (*ProjectList) ProtoMessage() {} func (*ProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{95} + return fileDescriptor_f1caaec5647a9dbf, []int{97} } func (m *ProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2746,7 +2802,7 @@ var xxx_messageInfo_ProjectList proto.InternalMessageInfo func (m *ProjectMember) Reset() { *m = ProjectMember{} } func (*ProjectMember) ProtoMessage() {} func (*ProjectMember) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{96} + return fileDescriptor_f1caaec5647a9dbf, []int{98} } func (m *ProjectMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2774,7 +2830,7 @@ var xxx_messageInfo_ProjectMember proto.InternalMessageInfo func (m *ProjectSpec) Reset() { *m = ProjectSpec{} } func (*ProjectSpec) ProtoMessage() {} func (*ProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{97} + return fileDescriptor_f1caaec5647a9dbf, []int{99} } func (m *ProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2802,7 +2858,7 @@ var xxx_messageInfo_ProjectSpec proto.InternalMessageInfo func (m *ProjectStatus) Reset() { *m = ProjectStatus{} } func (*ProjectStatus) ProtoMessage() {} func (*ProjectStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{98} + return fileDescriptor_f1caaec5647a9dbf, []int{100} } func (m *ProjectStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2830,7 +2886,7 @@ var xxx_messageInfo_ProjectStatus proto.InternalMessageInfo func (m *ProjectTolerations) Reset() { *m = ProjectTolerations{} } func (*ProjectTolerations) ProtoMessage() {} func (*ProjectTolerations) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{99} + return fileDescriptor_f1caaec5647a9dbf, []int{101} } func (m *ProjectTolerations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2858,7 +2914,7 @@ var xxx_messageInfo_ProjectTolerations proto.InternalMessageInfo func (m *Provider) Reset() { *m = Provider{} } func (*Provider) ProtoMessage() {} func (*Provider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{100} + return fileDescriptor_f1caaec5647a9dbf, []int{102} } func (m *Provider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2886,7 +2942,7 @@ var xxx_messageInfo_Provider proto.InternalMessageInfo func (m *Quota) Reset() { *m = Quota{} } func (*Quota) ProtoMessage() {} func (*Quota) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{101} + return fileDescriptor_f1caaec5647a9dbf, []int{103} } func (m *Quota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2914,7 +2970,7 @@ var xxx_messageInfo_Quota proto.InternalMessageInfo func (m *QuotaList) Reset() { *m = QuotaList{} } func (*QuotaList) ProtoMessage() {} func (*QuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{102} + return fileDescriptor_f1caaec5647a9dbf, []int{104} } func (m *QuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2942,7 +2998,7 @@ var xxx_messageInfo_QuotaList proto.InternalMessageInfo func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } func (*QuotaSpec) ProtoMessage() {} func (*QuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{103} + return fileDescriptor_f1caaec5647a9dbf, []int{105} } func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2970,7 +3026,7 @@ var xxx_messageInfo_QuotaSpec proto.InternalMessageInfo func (m *Region) Reset() { *m = Region{} } func (*Region) ProtoMessage() {} func (*Region) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{104} + return fileDescriptor_f1caaec5647a9dbf, []int{106} } func (m *Region) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2998,7 +3054,7 @@ var xxx_messageInfo_Region proto.InternalMessageInfo func (m *ResourceData) Reset() { *m = ResourceData{} } func (*ResourceData) ProtoMessage() {} func (*ResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{105} + return fileDescriptor_f1caaec5647a9dbf, []int{107} } func (m *ResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3026,7 +3082,7 @@ var xxx_messageInfo_ResourceData proto.InternalMessageInfo func (m *ResourceWatchCacheSize) Reset() { *m = ResourceWatchCacheSize{} } func (*ResourceWatchCacheSize) ProtoMessage() {} func (*ResourceWatchCacheSize) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{106} + return fileDescriptor_f1caaec5647a9dbf, []int{108} } func (m *ResourceWatchCacheSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3054,7 +3110,7 @@ var xxx_messageInfo_ResourceWatchCacheSize proto.InternalMessageInfo func (m *SSHAccess) Reset() { *m = SSHAccess{} } func (*SSHAccess) ProtoMessage() {} func (*SSHAccess) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{107} + return fileDescriptor_f1caaec5647a9dbf, []int{109} } func (m *SSHAccess) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3082,7 +3138,7 @@ var xxx_messageInfo_SSHAccess proto.InternalMessageInfo func (m *SecretBinding) Reset() { *m = SecretBinding{} } func (*SecretBinding) ProtoMessage() {} func (*SecretBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{108} + return fileDescriptor_f1caaec5647a9dbf, []int{110} } func (m *SecretBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3110,7 +3166,7 @@ var xxx_messageInfo_SecretBinding proto.InternalMessageInfo func (m *SecretBindingList) Reset() { *m = SecretBindingList{} } func (*SecretBindingList) ProtoMessage() {} func (*SecretBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{109} + return fileDescriptor_f1caaec5647a9dbf, []int{111} } func (m *SecretBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3138,7 +3194,7 @@ var xxx_messageInfo_SecretBindingList proto.InternalMessageInfo func (m *SecretBindingProvider) Reset() { *m = SecretBindingProvider{} } func (*SecretBindingProvider) ProtoMessage() {} func (*SecretBindingProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{110} + return fileDescriptor_f1caaec5647a9dbf, []int{112} } func (m *SecretBindingProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3166,7 +3222,7 @@ var xxx_messageInfo_SecretBindingProvider proto.InternalMessageInfo func (m *Seed) Reset() { *m = Seed{} } func (*Seed) ProtoMessage() {} func (*Seed) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{111} + return fileDescriptor_f1caaec5647a9dbf, []int{113} } func (m *Seed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3194,7 +3250,7 @@ var xxx_messageInfo_Seed proto.InternalMessageInfo func (m *SeedBackup) Reset() { *m = SeedBackup{} } func (*SeedBackup) ProtoMessage() {} func (*SeedBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{112} + return fileDescriptor_f1caaec5647a9dbf, []int{114} } func (m *SeedBackup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3222,7 +3278,7 @@ var xxx_messageInfo_SeedBackup proto.InternalMessageInfo func (m *SeedDNS) Reset() { *m = SeedDNS{} } func (*SeedDNS) ProtoMessage() {} func (*SeedDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{113} + return fileDescriptor_f1caaec5647a9dbf, []int{115} } func (m *SeedDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3250,7 +3306,7 @@ var xxx_messageInfo_SeedDNS proto.InternalMessageInfo func (m *SeedDNSProvider) Reset() { *m = SeedDNSProvider{} } func (*SeedDNSProvider) ProtoMessage() {} func (*SeedDNSProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{114} + return fileDescriptor_f1caaec5647a9dbf, []int{116} } func (m *SeedDNSProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3278,7 +3334,7 @@ var xxx_messageInfo_SeedDNSProvider proto.InternalMessageInfo func (m *SeedList) Reset() { *m = SeedList{} } func (*SeedList) ProtoMessage() {} func (*SeedList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{115} + return fileDescriptor_f1caaec5647a9dbf, []int{117} } func (m *SeedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3306,7 +3362,7 @@ var xxx_messageInfo_SeedList proto.InternalMessageInfo func (m *SeedNetworks) Reset() { *m = SeedNetworks{} } func (*SeedNetworks) ProtoMessage() {} func (*SeedNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{116} + return fileDescriptor_f1caaec5647a9dbf, []int{118} } func (m *SeedNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3334,7 +3390,7 @@ var xxx_messageInfo_SeedNetworks proto.InternalMessageInfo func (m *SeedProvider) Reset() { *m = SeedProvider{} } func (*SeedProvider) ProtoMessage() {} func (*SeedProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{117} + return fileDescriptor_f1caaec5647a9dbf, []int{119} } func (m *SeedProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3362,7 +3418,7 @@ var xxx_messageInfo_SeedProvider proto.InternalMessageInfo func (m *SeedSelector) Reset() { *m = SeedSelector{} } func (*SeedSelector) ProtoMessage() {} func (*SeedSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{118} + return fileDescriptor_f1caaec5647a9dbf, []int{120} } func (m *SeedSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3390,7 +3446,7 @@ var xxx_messageInfo_SeedSelector proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdog) Reset() { *m = SeedSettingDependencyWatchdog{} } func (*SeedSettingDependencyWatchdog) ProtoMessage() {} func (*SeedSettingDependencyWatchdog) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{119} + return fileDescriptor_f1caaec5647a9dbf, []int{121} } func (m *SeedSettingDependencyWatchdog) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3418,7 +3474,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdog proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdogEndpoint) Reset() { *m = SeedSettingDependencyWatchdogEndpoint{} } func (*SeedSettingDependencyWatchdogEndpoint) ProtoMessage() {} func (*SeedSettingDependencyWatchdogEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{120} + return fileDescriptor_f1caaec5647a9dbf, []int{122} } func (m *SeedSettingDependencyWatchdogEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3446,7 +3502,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogEndpoint proto.InternalMessageI func (m *SeedSettingDependencyWatchdogProbe) Reset() { *m = SeedSettingDependencyWatchdogProbe{} } func (*SeedSettingDependencyWatchdogProbe) ProtoMessage() {} func (*SeedSettingDependencyWatchdogProbe) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{121} + return fileDescriptor_f1caaec5647a9dbf, []int{123} } func (m *SeedSettingDependencyWatchdogProbe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3471,10 +3527,66 @@ func (m *SeedSettingDependencyWatchdogProbe) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo +func (m *SeedSettingDependencyWatchdogProber) Reset() { *m = SeedSettingDependencyWatchdogProber{} } +func (*SeedSettingDependencyWatchdogProber) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogProber) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{124} +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogProber) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogProber proto.InternalMessageInfo + +func (m *SeedSettingDependencyWatchdogWeeder) Reset() { *m = SeedSettingDependencyWatchdogWeeder{} } +func (*SeedSettingDependencyWatchdogWeeder) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogWeeder) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{125} +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogWeeder proto.InternalMessageInfo + func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{122} + return fileDescriptor_f1caaec5647a9dbf, []int{126} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3502,7 +3614,7 @@ var xxx_messageInfo_SeedSettingExcessCapacityReservation proto.InternalMessageIn func (m *SeedSettingLoadBalancerServices) Reset() { *m = SeedSettingLoadBalancerServices{} } func (*SeedSettingLoadBalancerServices) ProtoMessage() {} func (*SeedSettingLoadBalancerServices) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{123} + return fileDescriptor_f1caaec5647a9dbf, []int{127} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3530,7 +3642,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingLoadBalancerServicesZones) Reset() { *m = SeedSettingLoadBalancerServicesZones{} } func (*SeedSettingLoadBalancerServicesZones) ProtoMessage() {} func (*SeedSettingLoadBalancerServicesZones) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{124} + return fileDescriptor_f1caaec5647a9dbf, []int{128} } func (m *SeedSettingLoadBalancerServicesZones) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3558,7 +3670,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServicesZones proto.InternalMessageIn func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{125} + return fileDescriptor_f1caaec5647a9dbf, []int{129} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3586,7 +3698,7 @@ var xxx_messageInfo_SeedSettingOwnerChecks proto.InternalMessageInfo func (m *SeedSettingScheduling) Reset() { *m = SeedSettingScheduling{} } func (*SeedSettingScheduling) ProtoMessage() {} func (*SeedSettingScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{126} + return fileDescriptor_f1caaec5647a9dbf, []int{130} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3611,10 +3723,38 @@ func (m *SeedSettingScheduling) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo +func (m *SeedSettingTopologyAwareRouting) Reset() { *m = SeedSettingTopologyAwareRouting{} } +func (*SeedSettingTopologyAwareRouting) ProtoMessage() {} +func (*SeedSettingTopologyAwareRouting) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{131} +} +func (m *SeedSettingTopologyAwareRouting) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingTopologyAwareRouting) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingTopologyAwareRouting) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingTopologyAwareRouting.Merge(m, src) +} +func (m *SeedSettingTopologyAwareRouting) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingTopologyAwareRouting) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingTopologyAwareRouting.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingTopologyAwareRouting proto.InternalMessageInfo + func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{127} + return fileDescriptor_f1caaec5647a9dbf, []int{132} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3642,7 +3782,7 @@ var xxx_messageInfo_SeedSettingVerticalPodAutoscaler proto.InternalMessageInfo func (m *SeedSettings) Reset() { *m = SeedSettings{} } func (*SeedSettings) ProtoMessage() {} func (*SeedSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{128} + return fileDescriptor_f1caaec5647a9dbf, []int{133} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3670,7 +3810,7 @@ var xxx_messageInfo_SeedSettings proto.InternalMessageInfo func (m *SeedSpec) Reset() { *m = SeedSpec{} } func (*SeedSpec) ProtoMessage() {} func (*SeedSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{129} + return fileDescriptor_f1caaec5647a9dbf, []int{134} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3698,7 +3838,7 @@ var xxx_messageInfo_SeedSpec proto.InternalMessageInfo func (m *SeedStatus) Reset() { *m = SeedStatus{} } func (*SeedStatus) ProtoMessage() {} func (*SeedStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{130} + return fileDescriptor_f1caaec5647a9dbf, []int{135} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3726,7 +3866,7 @@ var xxx_messageInfo_SeedStatus proto.InternalMessageInfo func (m *SeedTaint) Reset() { *m = SeedTaint{} } func (*SeedTaint) ProtoMessage() {} func (*SeedTaint) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{131} + return fileDescriptor_f1caaec5647a9dbf, []int{136} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3754,7 +3894,7 @@ var xxx_messageInfo_SeedTaint proto.InternalMessageInfo func (m *SeedVolume) Reset() { *m = SeedVolume{} } func (*SeedVolume) ProtoMessage() {} func (*SeedVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{132} + return fileDescriptor_f1caaec5647a9dbf, []int{137} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3782,7 +3922,7 @@ var xxx_messageInfo_SeedVolume proto.InternalMessageInfo func (m *SeedVolumeProvider) Reset() { *m = SeedVolumeProvider{} } func (*SeedVolumeProvider) ProtoMessage() {} func (*SeedVolumeProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{133} + return fileDescriptor_f1caaec5647a9dbf, []int{138} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3810,7 +3950,7 @@ var xxx_messageInfo_SeedVolumeProvider proto.InternalMessageInfo func (m *ServiceAccountConfig) Reset() { *m = ServiceAccountConfig{} } func (*ServiceAccountConfig) ProtoMessage() {} func (*ServiceAccountConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{134} + return fileDescriptor_f1caaec5647a9dbf, []int{139} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3835,10 +3975,38 @@ func (m *ServiceAccountConfig) XXX_DiscardUnknown() { var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo +func (m *ServiceAccountKeyRotation) Reset() { *m = ServiceAccountKeyRotation{} } +func (*ServiceAccountKeyRotation) ProtoMessage() {} +func (*ServiceAccountKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{140} +} +func (m *ServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceAccountKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ServiceAccountKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceAccountKeyRotation.Merge(m, src) +} +func (m *ServiceAccountKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ServiceAccountKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceAccountKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ServiceAccountKeyRotation proto.InternalMessageInfo + func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{135} + return fileDescriptor_f1caaec5647a9dbf, []int{141} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3866,7 +4034,7 @@ var xxx_messageInfo_Shoot proto.InternalMessageInfo func (m *ShootAdvertisedAddress) Reset() { *m = ShootAdvertisedAddress{} } func (*ShootAdvertisedAddress) ProtoMessage() {} func (*ShootAdvertisedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{136} + return fileDescriptor_f1caaec5647a9dbf, []int{142} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3894,7 +4062,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{137} + return fileDescriptor_f1caaec5647a9dbf, []int{143} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3922,7 +4090,7 @@ var xxx_messageInfo_ShootCredentials proto.InternalMessageInfo func (m *ShootCredentialsRotation) Reset() { *m = ShootCredentialsRotation{} } func (*ShootCredentialsRotation) ProtoMessage() {} func (*ShootCredentialsRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{138} + return fileDescriptor_f1caaec5647a9dbf, []int{144} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3947,38 +4115,10 @@ func (m *ShootCredentialsRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo -func (m *ShootETCDEncryptionKeyRotation) Reset() { *m = ShootETCDEncryptionKeyRotation{} } -func (*ShootETCDEncryptionKeyRotation) ProtoMessage() {} -func (*ShootETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{139} -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.Merge(m, src) -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootETCDEncryptionKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootETCDEncryptionKeyRotation proto.InternalMessageInfo - func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{140} + return fileDescriptor_f1caaec5647a9dbf, []int{145} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4006,7 +4146,7 @@ var xxx_messageInfo_ShootKubeconfigRotation proto.InternalMessageInfo func (m *ShootList) Reset() { *m = ShootList{} } func (*ShootList) ProtoMessage() {} func (*ShootList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{141} + return fileDescriptor_f1caaec5647a9dbf, []int{146} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4034,7 +4174,7 @@ var xxx_messageInfo_ShootList proto.InternalMessageInfo func (m *ShootMachineImage) Reset() { *m = ShootMachineImage{} } func (*ShootMachineImage) ProtoMessage() {} func (*ShootMachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{142} + return fileDescriptor_f1caaec5647a9dbf, []int{147} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4062,7 +4202,7 @@ var xxx_messageInfo_ShootMachineImage proto.InternalMessageInfo func (m *ShootNetworks) Reset() { *m = ShootNetworks{} } func (*ShootNetworks) ProtoMessage() {} func (*ShootNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{143} + return fileDescriptor_f1caaec5647a9dbf, []int{148} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4090,7 +4230,7 @@ var xxx_messageInfo_ShootNetworks proto.InternalMessageInfo func (m *ShootObservabilityRotation) Reset() { *m = ShootObservabilityRotation{} } func (*ShootObservabilityRotation) ProtoMessage() {} func (*ShootObservabilityRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{144} + return fileDescriptor_f1caaec5647a9dbf, []int{149} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4118,7 +4258,7 @@ var xxx_messageInfo_ShootObservabilityRotation proto.InternalMessageInfo func (m *ShootSSHKeypairRotation) Reset() { *m = ShootSSHKeypairRotation{} } func (*ShootSSHKeypairRotation) ProtoMessage() {} func (*ShootSSHKeypairRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{145} + return fileDescriptor_f1caaec5647a9dbf, []int{150} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4143,38 +4283,10 @@ func (m *ShootSSHKeypairRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo -func (m *ShootServiceAccountKeyRotation) Reset() { *m = ShootServiceAccountKeyRotation{} } -func (*ShootServiceAccountKeyRotation) ProtoMessage() {} -func (*ShootServiceAccountKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{146} -} -func (m *ShootServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootServiceAccountKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *ShootServiceAccountKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootServiceAccountKeyRotation.Merge(m, src) -} -func (m *ShootServiceAccountKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootServiceAccountKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootServiceAccountKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootServiceAccountKeyRotation proto.InternalMessageInfo - func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{147} + return fileDescriptor_f1caaec5647a9dbf, []int{151} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4202,7 +4314,7 @@ var xxx_messageInfo_ShootSpec proto.InternalMessageInfo func (m *ShootState) Reset() { *m = ShootState{} } func (*ShootState) ProtoMessage() {} func (*ShootState) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{148} + return fileDescriptor_f1caaec5647a9dbf, []int{152} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4230,7 +4342,7 @@ var xxx_messageInfo_ShootState proto.InternalMessageInfo func (m *ShootStateList) Reset() { *m = ShootStateList{} } func (*ShootStateList) ProtoMessage() {} func (*ShootStateList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{149} + return fileDescriptor_f1caaec5647a9dbf, []int{153} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4258,7 +4370,7 @@ var xxx_messageInfo_ShootStateList proto.InternalMessageInfo func (m *ShootStateSpec) Reset() { *m = ShootStateSpec{} } func (*ShootStateSpec) ProtoMessage() {} func (*ShootStateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{150} + return fileDescriptor_f1caaec5647a9dbf, []int{154} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4286,7 +4398,7 @@ var xxx_messageInfo_ShootStateSpec proto.InternalMessageInfo func (m *ShootStatus) Reset() { *m = ShootStatus{} } func (*ShootStatus) ProtoMessage() {} func (*ShootStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{151} + return fileDescriptor_f1caaec5647a9dbf, []int{155} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4314,7 +4426,7 @@ var xxx_messageInfo_ShootStatus proto.InternalMessageInfo func (m *SystemComponents) Reset() { *m = SystemComponents{} } func (*SystemComponents) ProtoMessage() {} func (*SystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{152} + return fileDescriptor_f1caaec5647a9dbf, []int{156} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4342,7 +4454,7 @@ var xxx_messageInfo_SystemComponents proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{153} + return fileDescriptor_f1caaec5647a9dbf, []int{157} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4370,7 +4482,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *VerticalPodAutoscaler) Reset() { *m = VerticalPodAutoscaler{} } func (*VerticalPodAutoscaler) ProtoMessage() {} func (*VerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{154} + return fileDescriptor_f1caaec5647a9dbf, []int{158} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4398,7 +4510,7 @@ var xxx_messageInfo_VerticalPodAutoscaler proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{155} + return fileDescriptor_f1caaec5647a9dbf, []int{159} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4426,7 +4538,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeType) Reset() { *m = VolumeType{} } func (*VolumeType) ProtoMessage() {} func (*VolumeType) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{156} + return fileDescriptor_f1caaec5647a9dbf, []int{160} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4454,7 +4566,7 @@ var xxx_messageInfo_VolumeType proto.InternalMessageInfo func (m *WatchCacheSizes) Reset() { *m = WatchCacheSizes{} } func (*WatchCacheSizes) ProtoMessage() {} func (*WatchCacheSizes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{157} + return fileDescriptor_f1caaec5647a9dbf, []int{161} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4482,7 +4594,7 @@ var xxx_messageInfo_WatchCacheSizes proto.InternalMessageInfo func (m *Worker) Reset() { *m = Worker{} } func (*Worker) ProtoMessage() {} func (*Worker) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{158} + return fileDescriptor_f1caaec5647a9dbf, []int{162} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4510,7 +4622,7 @@ var xxx_messageInfo_Worker proto.InternalMessageInfo func (m *WorkerKubernetes) Reset() { *m = WorkerKubernetes{} } func (*WorkerKubernetes) ProtoMessage() {} func (*WorkerKubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{159} + return fileDescriptor_f1caaec5647a9dbf, []int{163} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4538,7 +4650,7 @@ var xxx_messageInfo_WorkerKubernetes proto.InternalMessageInfo func (m *WorkerSystemComponents) Reset() { *m = WorkerSystemComponents{} } func (*WorkerSystemComponents) ProtoMessage() {} func (*WorkerSystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{160} + return fileDescriptor_f1caaec5647a9dbf, []int{164} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4566,7 +4678,7 @@ var xxx_messageInfo_WorkerSystemComponents proto.InternalMessageInfo func (m *WorkersSettings) Reset() { *m = WorkersSettings{} } func (*WorkersSettings) ProtoMessage() {} func (*WorkersSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{161} + return fileDescriptor_f1caaec5647a9dbf, []int{165} } func (m *WorkersSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4637,6 +4749,7 @@ func init() { proto.RegisterType((*DNSProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.DNSProvider") proto.RegisterType((*DataVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.DataVolume") proto.RegisterType((*DeploymentRef)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.DeploymentRef") + proto.RegisterType((*ETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ETCDEncryptionKeyRotation") proto.RegisterType((*ExpirableVersion)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ExpirableVersion") proto.RegisterType((*ExposureClass)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ExposureClass") proto.RegisterType((*ExposureClassList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ExposureClassList") @@ -4682,6 +4795,7 @@ func init() { proto.RegisterType((*Maintenance)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Maintenance") proto.RegisterType((*MaintenanceAutoUpdate)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.MaintenanceAutoUpdate") proto.RegisterType((*MaintenanceTimeWindow)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.MaintenanceTimeWindow") + proto.RegisterType((*MemorySwapConfiguration)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.MemorySwapConfiguration") proto.RegisterType((*Monitoring)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Monitoring") proto.RegisterType((*NamedResourceReference)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.NamedResourceReference") proto.RegisterType((*Networking)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Networking") @@ -4722,6 +4836,8 @@ func init() { proto.RegisterType((*SeedSettingDependencyWatchdog)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdog") proto.RegisterType((*SeedSettingDependencyWatchdogEndpoint)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogEndpoint") proto.RegisterType((*SeedSettingDependencyWatchdogProbe)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogProbe") + proto.RegisterType((*SeedSettingDependencyWatchdogProber)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogProber") + proto.RegisterType((*SeedSettingDependencyWatchdogWeeder)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogWeeder") proto.RegisterType((*SeedSettingExcessCapacityReservation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingExcessCapacityReservation") proto.RegisterType((*SeedSettingLoadBalancerServices)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingLoadBalancerServices") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingLoadBalancerServices.AnnotationsEntry") @@ -4729,6 +4845,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingLoadBalancerServicesZones.AnnotationsEntry") proto.RegisterType((*SeedSettingOwnerChecks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingOwnerChecks") proto.RegisterType((*SeedSettingScheduling)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingScheduling") + proto.RegisterType((*SeedSettingTopologyAwareRouting)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingTopologyAwareRouting") proto.RegisterType((*SeedSettingVerticalPodAutoscaler)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingVerticalPodAutoscaler") proto.RegisterType((*SeedSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettings") proto.RegisterType((*SeedSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSpec") @@ -4737,18 +4854,17 @@ func init() { proto.RegisterType((*SeedVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedVolume") proto.RegisterType((*SeedVolumeProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedVolumeProvider") proto.RegisterType((*ServiceAccountConfig)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ServiceAccountConfig") + proto.RegisterType((*ServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ServiceAccountKeyRotation") proto.RegisterType((*Shoot)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Shoot") proto.RegisterType((*ShootAdvertisedAddress)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootAdvertisedAddress") proto.RegisterType((*ShootCredentials)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootCredentials") proto.RegisterType((*ShootCredentialsRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootCredentialsRotation") - proto.RegisterType((*ShootETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootETCDEncryptionKeyRotation") proto.RegisterType((*ShootKubeconfigRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootKubeconfigRotation") proto.RegisterType((*ShootList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootList") proto.RegisterType((*ShootMachineImage)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootMachineImage") proto.RegisterType((*ShootNetworks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootNetworks") proto.RegisterType((*ShootObservabilityRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootObservabilityRotation") proto.RegisterType((*ShootSSHKeypairRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootSSHKeypairRotation") - proto.RegisterType((*ShootServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootServiceAccountKeyRotation") proto.RegisterType((*ShootSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootSpec") proto.RegisterType((*ShootState)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootState") proto.RegisterType((*ShootStateList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootStateList") @@ -4763,6 +4879,7 @@ func init() { proto.RegisterType((*Worker)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker.AnnotationsEntry") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker.LabelsEntry") + proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker.SysctlsEntry") proto.RegisterType((*WorkerKubernetes)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.WorkerKubernetes") proto.RegisterType((*WorkerSystemComponents)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.WorkerSystemComponents") proto.RegisterType((*WorkersSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.WorkersSettings") @@ -4773,724 +4890,730 @@ func init() { } var fileDescriptor_f1caaec5647a9dbf = []byte{ - // 11463 bytes of a gzipped FileDescriptorProto + // 11563 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0xc9, - 0x75, 0x98, 0x7a, 0xf8, 0xfd, 0xf8, 0xb1, 0xbb, 0xb5, 0x1f, 0xc7, 0xdb, 0xdd, 0xdb, 0x59, 0xf5, - 0x9d, 0xe4, 0xbb, 0x48, 0xe6, 0xfa, 0x3e, 0x64, 0xdf, 0x9d, 0xef, 0x8b, 0x33, 0xc3, 0xdd, 0x1d, - 0x2f, 0xc9, 0xe5, 0xd5, 0xec, 0xde, 0x49, 0x27, 0xc3, 0x72, 0xb3, 0xbb, 0x38, 0xec, 0x63, 0x4f, - 0xf7, 0x5c, 0x77, 0x0f, 0x97, 0xdc, 0x93, 0x65, 0x5b, 0x91, 0xad, 0xf8, 0x04, 0x3b, 0x09, 0x8c, - 0xc0, 0xc2, 0xd9, 0xb0, 0x25, 0xc3, 0x09, 0x14, 0x20, 0x8e, 0x0c, 0x01, 0x56, 0x3e, 0xa1, 0x1f, - 0xca, 0x0f, 0x0b, 0x72, 0xa0, 0x18, 0x86, 0x13, 0x28, 0x46, 0x42, 0x45, 0x8c, 0x63, 0x3b, 0x41, - 0x8c, 0x24, 0x08, 0xf2, 0x23, 0x8b, 0x24, 0x08, 0xea, 0xa3, 0xab, 0xab, 0xbf, 0x86, 0x64, 0xf7, - 0x2e, 0xa5, 0x83, 0xfd, 0x8b, 0x9c, 0x7a, 0x55, 0xef, 0x55, 0xd7, 0xc7, 0xab, 0xf7, 0x5e, 0xbd, - 0x7a, 0x0f, 0x9a, 0x5d, 0x3b, 0xdc, 0x1c, 0xac, 0x2f, 0x98, 0x5e, 0xef, 0x4a, 0xd7, 0xf0, 0x2d, - 0xe2, 0x12, 0x3f, 0xfe, 0xa7, 0xbf, 0xd5, 0xbd, 0x62, 0xf4, 0xed, 0xe0, 0x8a, 0xe9, 0xf9, 0xe4, - 0xca, 0xf6, 0x93, 0x86, 0xd3, 0xdf, 0x34, 0x9e, 0xbc, 0xd2, 0xa5, 0x40, 0x23, 0x24, 0xd6, 0x42, - 0xdf, 0xf7, 0x42, 0x0f, 0x3d, 0x1d, 0x23, 0x59, 0x88, 0xda, 0xc6, 0xff, 0xf4, 0xb7, 0xba, 0x0b, - 0x14, 0xc9, 0x02, 0x45, 0xb2, 0x10, 0x21, 0x39, 0xdf, 0x38, 0x12, 0xe5, 0x75, 0x12, 0x66, 0x09, - 0x9f, 0xff, 0x41, 0x15, 0x87, 0xd7, 0xf5, 0xae, 0xb0, 0xe2, 0xf5, 0xc1, 0x06, 0xfb, 0xc5, 0x7e, - 0xb0, 0xff, 0x44, 0xf5, 0x27, 0xb6, 0x9e, 0x0d, 0x16, 0x6c, 0x8f, 0x22, 0xbe, 0x62, 0x0c, 0x42, - 0x2f, 0x30, 0x0d, 0xc7, 0x76, 0xbb, 0x57, 0xb6, 0xb3, 0x98, 0x75, 0xa5, 0xaa, 0xe8, 0xc2, 0xd0, - 0x3a, 0xfe, 0xba, 0x61, 0xe6, 0xd5, 0x79, 0x26, 0xae, 0xd3, 0x33, 0xcc, 0x4d, 0xdb, 0x25, 0xfe, - 0x6e, 0xf4, 0x71, 0x57, 0x7c, 0x12, 0x78, 0x03, 0xdf, 0x24, 0x47, 0x6a, 0x15, 0x5c, 0xe9, 0x91, - 0xd0, 0xc8, 0xa3, 0x75, 0xa5, 0xa8, 0x95, 0x3f, 0x70, 0x43, 0xbb, 0x97, 0x25, 0xf3, 0xc3, 0x07, - 0x35, 0x08, 0xcc, 0x4d, 0xd2, 0x33, 0x32, 0xed, 0x9e, 0x2e, 0x6a, 0x37, 0x08, 0x6d, 0xe7, 0x8a, - 0xed, 0x86, 0x41, 0xe8, 0xa7, 0x1b, 0xe9, 0x4f, 0xc1, 0xd8, 0xa2, 0x65, 0x79, 0x2e, 0x7a, 0x02, - 0x26, 0x88, 0x6b, 0xac, 0x3b, 0xc4, 0x9a, 0xd7, 0x2e, 0x6b, 0x8f, 0x4f, 0x36, 0x4e, 0x7c, 0x63, - 0xaf, 0xfe, 0xbe, 0xfd, 0xbd, 0xfa, 0xc4, 0x12, 0x2f, 0xc6, 0x11, 0x5c, 0xff, 0x95, 0x1a, 0x8c, - 0xb3, 0x46, 0x01, 0xfa, 0x65, 0x0d, 0x4e, 0x6f, 0x0d, 0xd6, 0x89, 0xef, 0x92, 0x90, 0x04, 0x2d, - 0x23, 0xd8, 0x5c, 0xf7, 0x0c, 0x9f, 0xa3, 0x98, 0x7e, 0xea, 0xfa, 0x42, 0x89, 0x25, 0xb8, 0x70, - 0x23, 0x8b, 0xaf, 0xf1, 0xd0, 0xfe, 0x5e, 0xfd, 0x74, 0x0e, 0x00, 0xe7, 0x51, 0x47, 0x77, 0x60, - 0xc6, 0xed, 0xda, 0xee, 0x4e, 0xdb, 0xed, 0xfa, 0x24, 0x08, 0xe6, 0x6b, 0xac, 0x37, 0x8b, 0xa5, - 0x7a, 0xb3, 0xaa, 0x20, 0x6a, 0x9c, 0xdc, 0xdf, 0xab, 0xcf, 0xa8, 0x25, 0x38, 0x41, 0x48, 0xff, - 0x1d, 0x0d, 0x4e, 0x2c, 0x5a, 0x3d, 0x3b, 0x08, 0x6c, 0xcf, 0x5d, 0x73, 0x06, 0x5d, 0xdb, 0x45, - 0x97, 0x61, 0xd4, 0x35, 0x7a, 0x84, 0x0d, 0xc9, 0x54, 0x63, 0x46, 0x8c, 0xea, 0xe8, 0xaa, 0xd1, - 0x23, 0x98, 0x41, 0xd0, 0xab, 0x30, 0x6e, 0x7a, 0xee, 0x86, 0xdd, 0x15, 0x1d, 0xfd, 0xc1, 0x05, - 0x3e, 0x93, 0x0b, 0xea, 0x4c, 0xb2, 0xfe, 0x89, 0x15, 0xb0, 0x80, 0x8d, 0x3b, 0x4b, 0x3b, 0x21, - 0x71, 0x29, 0x99, 0x06, 0xec, 0xef, 0xd5, 0xc7, 0x9b, 0x0c, 0x01, 0x16, 0x88, 0xd0, 0xe3, 0x30, - 0x69, 0xd9, 0x01, 0x9f, 0xce, 0x11, 0x36, 0x9d, 0x33, 0xfb, 0x7b, 0xf5, 0xc9, 0x96, 0x28, 0xc3, - 0x12, 0xaa, 0x5f, 0x85, 0xc9, 0x45, 0x87, 0xf8, 0xa1, 0xed, 0x76, 0xd1, 0xf3, 0x30, 0x47, 0x7a, - 0x86, 0xed, 0x60, 0x62, 0x12, 0x7b, 0x9b, 0xf8, 0xc1, 0xbc, 0x76, 0x79, 0xe4, 0xf1, 0xa9, 0x06, - 0xda, 0xdf, 0xab, 0xcf, 0x2d, 0x25, 0x20, 0x38, 0x55, 0x53, 0xff, 0xb4, 0x06, 0xd3, 0x8b, 0x03, - 0xcb, 0x0e, 0x79, 0x4f, 0x50, 0x00, 0xd3, 0x06, 0xfd, 0xb9, 0xe6, 0x39, 0xb6, 0xb9, 0x2b, 0x16, - 0xc4, 0x2b, 0xa5, 0xa6, 0x60, 0x31, 0xc6, 0xd3, 0x38, 0xb1, 0xbf, 0x57, 0x9f, 0x56, 0x0a, 0xb0, - 0x4a, 0x45, 0xdf, 0x04, 0x15, 0x86, 0x3e, 0x06, 0x33, 0x7c, 0x3c, 0x56, 0x8c, 0x3e, 0x26, 0x1b, - 0xa2, 0x13, 0x8f, 0x2a, 0xc3, 0x1b, 0x51, 0x5a, 0xb8, 0xb9, 0xfe, 0x26, 0x31, 0x43, 0x4c, 0x36, - 0x88, 0x4f, 0x5c, 0x93, 0xf0, 0x99, 0x6e, 0x2a, 0x8d, 0x71, 0x02, 0x95, 0xfe, 0x1d, 0x0d, 0x4e, - 0x2e, 0x6e, 0x1b, 0xb6, 0x63, 0xac, 0xdb, 0x8e, 0x1d, 0xee, 0xbe, 0xe1, 0xb9, 0xe4, 0x10, 0x53, - 0x7d, 0x1b, 0x1e, 0x1a, 0xb8, 0x06, 0x6f, 0xe7, 0x90, 0x15, 0x3e, 0xb9, 0xb7, 0x76, 0xfb, 0x84, - 0x2e, 0x52, 0x3a, 0xd4, 0x17, 0xf6, 0xf7, 0xea, 0x0f, 0xdd, 0xce, 0xaf, 0x82, 0x8b, 0xda, 0x22, - 0x0c, 0xe7, 0x14, 0xd0, 0x6b, 0x9e, 0x33, 0xe8, 0x09, 0xac, 0x23, 0x0c, 0xeb, 0xf9, 0xfd, 0xbd, - 0xfa, 0xb9, 0xdb, 0xb9, 0x35, 0x70, 0x41, 0x4b, 0xfd, 0x9b, 0x35, 0x98, 0x69, 0x18, 0xe6, 0xd6, - 0xa0, 0xdf, 0x18, 0x98, 0x5b, 0x24, 0x44, 0x3f, 0x09, 0x93, 0x94, 0xc7, 0x59, 0x46, 0x68, 0x88, - 0x91, 0xfc, 0xa1, 0xc2, 0x85, 0xca, 0x66, 0x91, 0xd6, 0x8e, 0xc7, 0x76, 0x85, 0x84, 0x46, 0x03, - 0x89, 0x31, 0x81, 0xb8, 0x0c, 0x4b, 0xac, 0xa8, 0x0b, 0xa3, 0x41, 0x9f, 0x98, 0x62, 0x1b, 0x2c, - 0x95, 0x5a, 0x2c, 0x6a, 0x97, 0x3b, 0x7d, 0x62, 0xc6, 0xd3, 0x40, 0x7f, 0x61, 0x46, 0x00, 0x79, - 0x30, 0x1e, 0x84, 0x46, 0x38, 0x08, 0xd8, 0xe6, 0x98, 0x7e, 0xea, 0x5a, 0x75, 0x52, 0x0c, 0x5d, - 0x63, 0x4e, 0x10, 0x1b, 0xe7, 0xbf, 0xb1, 0x20, 0xa3, 0x7f, 0x5b, 0x83, 0x93, 0x6a, 0xf5, 0x65, - 0x3b, 0x08, 0xd1, 0x8f, 0x67, 0x06, 0x74, 0xe1, 0x70, 0x03, 0x4a, 0x5b, 0xb3, 0xe1, 0x3c, 0x29, - 0xc8, 0x4d, 0x46, 0x25, 0xca, 0x60, 0x6e, 0xc0, 0x98, 0x1d, 0x92, 0x1e, 0x5f, 0x58, 0x65, 0xb9, - 0x9f, 0xda, 0xe7, 0xc6, 0xac, 0xa0, 0x36, 0xd6, 0xa6, 0x78, 0x31, 0x47, 0xaf, 0xff, 0x24, 0x9c, - 0x51, 0x6b, 0xad, 0xf9, 0xde, 0xb6, 0x6d, 0x11, 0x9f, 0x6e, 0x86, 0x70, 0xb7, 0x9f, 0xd9, 0x0c, - 0x74, 0x71, 0x61, 0x06, 0x41, 0x1f, 0x84, 0x71, 0x9f, 0x74, 0x6d, 0xcf, 0x65, 0x13, 0x3e, 0x15, - 0x0f, 0x1e, 0x66, 0xa5, 0x58, 0x40, 0xf5, 0xff, 0x52, 0x4b, 0x0e, 0x1e, 0x9d, 0x48, 0x74, 0x07, - 0x26, 0xfb, 0x82, 0x94, 0x18, 0xbc, 0x76, 0xe5, 0x2f, 0x8c, 0xfa, 0x1e, 0x8f, 0x6b, 0x54, 0x82, - 0x25, 0x31, 0x64, 0xc3, 0x5c, 0xf4, 0x7f, 0xb3, 0x02, 0xd7, 0x66, 0x3c, 0x75, 0x2d, 0x81, 0x08, - 0xa7, 0x10, 0xa3, 0x5b, 0x30, 0x15, 0x10, 0xd3, 0x27, 0x94, 0x2f, 0x89, 0x95, 0x9a, 0xcb, 0xbc, - 0x3a, 0x51, 0x25, 0xc1, 0xbc, 0x4e, 0x89, 0xee, 0x4f, 0x49, 0x00, 0x8e, 0x11, 0xa1, 0x8b, 0x30, - 0x1a, 0x10, 0x62, 0xcd, 0x8f, 0xb2, 0x41, 0x9f, 0x64, 0x5b, 0x83, 0x10, 0x0b, 0xb3, 0x52, 0xfd, - 0x37, 0x47, 0x01, 0x65, 0x17, 0xb6, 0xfa, 0xd5, 0xbc, 0x44, 0x0c, 0x7a, 0x95, 0xaf, 0x16, 0x7b, - 0x24, 0x85, 0x18, 0xbd, 0x0d, 0xb3, 0x8e, 0x11, 0x84, 0x37, 0xfb, 0x54, 0x50, 0x89, 0x56, 0xc7, - 0xf4, 0x53, 0x8d, 0x52, 0xd3, 0xbb, 0xac, 0x62, 0x6a, 0x9c, 0xda, 0xdf, 0xab, 0xcf, 0x26, 0x8a, - 0x70, 0x92, 0x16, 0xda, 0x82, 0x29, 0x5a, 0xb0, 0xe4, 0xfb, 0x9e, 0x2f, 0x86, 0xfc, 0xa5, 0xd2, - 0x84, 0x19, 0x96, 0xc6, 0x2c, 0x9d, 0x09, 0xf9, 0x13, 0xc7, 0xf8, 0xd1, 0x8f, 0x01, 0xf2, 0xd6, - 0x03, 0xe2, 0x6f, 0x13, 0xeb, 0x1a, 0x97, 0xcb, 0xe8, 0xe7, 0xd2, 0x79, 0x19, 0x69, 0x9c, 0x17, - 0x73, 0x88, 0x6e, 0x66, 0x6a, 0xe0, 0x9c, 0x56, 0x68, 0x0b, 0x90, 0x94, 0xed, 0xe4, 0xb4, 0xcf, - 0x8f, 0x1d, 0x7e, 0xd1, 0x9c, 0xa3, 0xc4, 0xae, 0x65, 0x50, 0xe0, 0x1c, 0xb4, 0xfa, 0xef, 0xd5, - 0x60, 0x9a, 0x2f, 0x92, 0x25, 0x37, 0xf4, 0x77, 0x8f, 0xe1, 0x68, 0xd8, 0x48, 0x1c, 0x0d, 0xad, - 0x0a, 0x5b, 0x9d, 0xf5, 0xb8, 0xf0, 0x64, 0x70, 0x53, 0x27, 0xc3, 0xd5, 0xca, 0x94, 0x86, 0x1f, - 0x0c, 0xff, 0x46, 0x83, 0x13, 0x4a, 0xed, 0x63, 0x38, 0x17, 0x48, 0xf2, 0x5c, 0x78, 0xa5, 0xea, - 0x07, 0x16, 0x1c, 0x0b, 0x66, 0xe2, 0xbb, 0x18, 0xcb, 0x7e, 0x0a, 0x60, 0x9d, 0xf1, 0x94, 0xd5, - 0x58, 0x48, 0x92, 0xb3, 0xde, 0x90, 0x10, 0xac, 0xd4, 0x92, 0xcc, 0xaa, 0x96, 0xcb, 0xac, 0xfe, - 0x6c, 0x04, 0x4e, 0x65, 0xc6, 0x3a, 0xcb, 0x40, 0xb4, 0xef, 0x15, 0x03, 0xa9, 0x7d, 0x4f, 0x18, - 0xc8, 0x48, 0x29, 0x06, 0xf2, 0x38, 0x4c, 0xd2, 0x31, 0x65, 0x73, 0xc3, 0x8f, 0x06, 0xa6, 0x32, - 0x74, 0x44, 0x19, 0x96, 0x50, 0xe4, 0x03, 0xea, 0xd9, 0x5d, 0xde, 0xac, 0x13, 0x1a, 0x7e, 0x78, - 0xcb, 0xee, 0x11, 0xc1, 0x6a, 0xfe, 0xda, 0xe1, 0x56, 0x2a, 0x6d, 0xc1, 0x39, 0xce, 0x4a, 0x06, - 0x13, 0xce, 0xc1, 0xae, 0xff, 0xe1, 0x28, 0x40, 0x73, 0x11, 0x7b, 0x21, 0xef, 0xec, 0xcb, 0x30, - 0xd6, 0xdf, 0x34, 0x82, 0x68, 0x15, 0x3d, 0x11, 0x2d, 0xc1, 0x35, 0x5a, 0x78, 0x6f, 0xaf, 0x3e, - 0xdf, 0xf4, 0x89, 0x45, 0xdc, 0xd0, 0x36, 0x9c, 0x20, 0x6a, 0xc4, 0x60, 0x98, 0xb7, 0xa3, 0xdf, - 0x40, 0x87, 0xb1, 0xe9, 0xf5, 0xfa, 0x0e, 0xa1, 0x50, 0xf6, 0x0d, 0xb5, 0x72, 0xdf, 0xb0, 0x9c, - 0xc1, 0x84, 0x73, 0xb0, 0x47, 0x34, 0xdb, 0xae, 0x1d, 0xda, 0x86, 0xa4, 0x39, 0x52, 0x9e, 0x66, - 0x12, 0x13, 0xce, 0xc1, 0x8e, 0xde, 0xd1, 0xe0, 0x7c, 0xb2, 0xf8, 0xaa, 0xed, 0xda, 0xc1, 0x26, - 0xb1, 0x18, 0xf1, 0xd1, 0x23, 0x13, 0xbf, 0xb4, 0xbf, 0x57, 0x3f, 0xbf, 0x5c, 0x88, 0x11, 0x0f, - 0xa1, 0x86, 0x7e, 0x51, 0x83, 0x0b, 0xa9, 0x71, 0xf1, 0xed, 0x6e, 0x97, 0xf8, 0xa2, 0x37, 0x47, - 0x5f, 0x42, 0xf5, 0xfd, 0xbd, 0xfa, 0x85, 0xe5, 0x62, 0x94, 0x78, 0x18, 0x3d, 0xfd, 0x5f, 0x68, - 0x30, 0xd2, 0xc4, 0x6d, 0xf4, 0xa1, 0x84, 0xde, 0xf6, 0x90, 0xaa, 0xb7, 0xdd, 0xdb, 0xab, 0x4f, - 0x34, 0x71, 0x5b, 0x51, 0xe1, 0x7e, 0x49, 0x83, 0x53, 0xa6, 0xe7, 0x86, 0x06, 0xed, 0x17, 0xe6, - 0x42, 0x4e, 0xc4, 0x4c, 0xcb, 0xa9, 0x2c, 0xcd, 0x14, 0xb6, 0xc6, 0xc3, 0xa2, 0x07, 0xa7, 0xd2, - 0x90, 0x00, 0x67, 0x49, 0xeb, 0xff, 0x56, 0x83, 0x99, 0xa6, 0xe3, 0x0d, 0xac, 0x35, 0xdf, 0xdb, - 0xb0, 0x1d, 0xf2, 0x1e, 0x51, 0xd4, 0xd4, 0x2e, 0x17, 0x1d, 0xc7, 0x4c, 0x6f, 0x52, 0x2b, 0xbe, - 0x57, 0xf4, 0x26, 0xb5, 0xcf, 0x05, 0x07, 0xe4, 0xaf, 0x4e, 0x24, 0x3f, 0x8d, 0x1d, 0x91, 0x8f, - 0xc3, 0xa4, 0x69, 0x34, 0x06, 0xae, 0xe5, 0x48, 0xc5, 0x89, 0x76, 0xb3, 0xb9, 0xc8, 0xcb, 0xb0, - 0x84, 0xa2, 0xb7, 0x01, 0x62, 0xd3, 0x97, 0x98, 0x88, 0x6b, 0x15, 0xed, 0x6d, 0x1d, 0x12, 0x86, - 0xb6, 0xdb, 0x0d, 0xe2, 0xd9, 0x8f, 0x61, 0x58, 0x21, 0x87, 0x3e, 0x05, 0xb3, 0x62, 0x98, 0xdb, - 0x3d, 0xa3, 0x2b, 0xcc, 0x0c, 0x65, 0xc7, 0x6a, 0x45, 0xc1, 0xd4, 0x38, 0x2b, 0x28, 0xcf, 0xaa, - 0xa5, 0x01, 0x4e, 0x92, 0x43, 0x77, 0x61, 0xa6, 0xa7, 0xda, 0x4e, 0x46, 0x2b, 0x88, 0x32, 0x8a, - 0x21, 0xa5, 0x71, 0x46, 0x50, 0x9f, 0x49, 0x98, 0x5d, 0x12, 0xb4, 0x72, 0xf4, 0xbf, 0xb1, 0x07, - 0xa5, 0xff, 0x6d, 0xc0, 0x04, 0x57, 0x81, 0x83, 0xf9, 0x71, 0xf6, 0x85, 0x3f, 0x5a, 0xea, 0x0b, - 0xb9, 0x3a, 0x1d, 0x1b, 0x74, 0xf9, 0xef, 0x00, 0x47, 0xc8, 0xd1, 0x1d, 0x98, 0xa1, 0x87, 0x7b, - 0x87, 0x38, 0xc4, 0x0c, 0x3d, 0x7f, 0x7e, 0xa2, 0x82, 0xbd, 0xb4, 0xa3, 0x20, 0xe2, 0x56, 0x34, - 0xb5, 0x04, 0x27, 0x08, 0x49, 0x1b, 0xc1, 0x64, 0xa1, 0x8d, 0x60, 0x1b, 0xa6, 0xb7, 0x15, 0x73, - 0xd6, 0x14, 0x1b, 0x86, 0x97, 0x4b, 0xf5, 0x2c, 0x36, 0x6e, 0x35, 0x4e, 0x0b, 0x4a, 0xd3, 0xaa, - 0x21, 0x4c, 0x25, 0xa4, 0xef, 0x4d, 0xc2, 0xa9, 0xa6, 0x33, 0x08, 0x42, 0xe2, 0x2f, 0x8a, 0x3b, - 0x09, 0xe2, 0xa3, 0x4f, 0x6b, 0x70, 0x8e, 0xfd, 0xdb, 0xf2, 0xee, 0xb8, 0x2d, 0xe2, 0x18, 0xbb, - 0x8b, 0x1b, 0xb4, 0x86, 0x65, 0x1d, 0x8d, 0x11, 0xb5, 0x06, 0x42, 0x9e, 0x64, 0x86, 0xb9, 0x4e, - 0x2e, 0x46, 0x5c, 0x40, 0x09, 0x7d, 0x4e, 0x83, 0x87, 0x73, 0x40, 0x2d, 0xe2, 0x90, 0x30, 0x12, - 0x61, 0x8e, 0xda, 0x8f, 0x47, 0xf6, 0xf7, 0xea, 0x0f, 0x77, 0x8a, 0x90, 0xe2, 0x62, 0x7a, 0xf4, - 0x38, 0x3c, 0x9f, 0x03, 0xbd, 0x6a, 0xd8, 0xce, 0xc0, 0x8f, 0xa4, 0x9b, 0xa3, 0x76, 0x87, 0x09, - 0x19, 0x9d, 0x42, 0xac, 0x78, 0x08, 0x45, 0xf4, 0xd3, 0x70, 0x56, 0x42, 0x6f, 0xbb, 0x2e, 0x21, - 0x56, 0x42, 0xd6, 0x39, 0x6a, 0x57, 0x1e, 0xde, 0xdf, 0xab, 0x9f, 0xed, 0xe4, 0x21, 0xc4, 0xf9, - 0x74, 0x50, 0x17, 0x1e, 0x89, 0x01, 0xa1, 0xed, 0xd8, 0x77, 0xb9, 0x38, 0xb6, 0xe9, 0x93, 0x60, - 0xd3, 0x73, 0x2c, 0xc6, 0x2f, 0xb4, 0xc6, 0xfb, 0xf7, 0xf7, 0xea, 0x8f, 0x74, 0x86, 0x55, 0xc4, - 0xc3, 0xf1, 0x20, 0x0b, 0x66, 0x02, 0xd3, 0x70, 0xdb, 0x6e, 0x48, 0xfc, 0x6d, 0xc3, 0x99, 0x1f, - 0x2f, 0xf5, 0x81, 0x7c, 0x8f, 0x2a, 0x78, 0x70, 0x02, 0x2b, 0x7a, 0x16, 0x26, 0xc9, 0x4e, 0xdf, - 0x70, 0x2d, 0xc2, 0x19, 0xc3, 0x54, 0xe3, 0x22, 0x3d, 0x92, 0x96, 0x44, 0xd9, 0xbd, 0xbd, 0xfa, - 0x4c, 0xf4, 0xff, 0x8a, 0x67, 0x11, 0x2c, 0x6b, 0xa3, 0x4f, 0xc2, 0x99, 0x9e, 0xb1, 0xb3, 0xea, - 0x59, 0x84, 0xf1, 0xb9, 0x20, 0x92, 0x78, 0x27, 0x4b, 0xf5, 0x73, 0x7e, 0x7f, 0xaf, 0x7e, 0x66, - 0x25, 0x07, 0x1f, 0xce, 0xa5, 0x42, 0xa7, 0xa1, 0x67, 0xec, 0x5c, 0xf3, 0x0d, 0x93, 0x6c, 0x0c, - 0x9c, 0x5b, 0xc4, 0xef, 0xd9, 0x2e, 0x57, 0x2a, 0x88, 0xe9, 0xb9, 0x16, 0xe5, 0x25, 0xda, 0xe3, - 0x63, 0x7c, 0x1a, 0x56, 0x86, 0x55, 0xc4, 0xc3, 0xf1, 0xa0, 0x67, 0x60, 0xc6, 0xee, 0xba, 0x9e, - 0x4f, 0x6e, 0x19, 0xb6, 0x1b, 0x06, 0xf3, 0xc0, 0x4c, 0xee, 0x6c, 0x58, 0xdb, 0x4a, 0x39, 0x4e, - 0xd4, 0xd2, 0xf7, 0x46, 0x60, 0xaa, 0xe9, 0xb9, 0x96, 0xcd, 0xf4, 0x99, 0x27, 0x13, 0xc6, 0xd2, - 0x47, 0x54, 0x46, 0x78, 0x6f, 0xaf, 0x3e, 0x2b, 0x2b, 0x2a, 0x9c, 0xf1, 0x39, 0x69, 0xa9, 0xe0, - 0xba, 0xf1, 0xfb, 0x93, 0x16, 0x86, 0x7b, 0x7b, 0xf5, 0x13, 0xb2, 0x59, 0xd2, 0xe8, 0x80, 0xb6, - 0xb9, 0x22, 0x72, 0xcb, 0x37, 0xdc, 0xc0, 0xae, 0xa0, 0x88, 0x48, 0x15, 0x73, 0x39, 0x83, 0x0d, - 0xe7, 0x50, 0x40, 0x6f, 0xc2, 0x1c, 0x2d, 0xbd, 0xdd, 0xb7, 0x8c, 0x90, 0x94, 0xd4, 0x3f, 0xce, - 0x09, 0x9a, 0x73, 0xcb, 0x09, 0x4c, 0x38, 0x85, 0x99, 0x1b, 0x97, 0x8d, 0xc0, 0x73, 0xd9, 0x76, - 0x4b, 0x18, 0x97, 0x69, 0x29, 0x16, 0x50, 0xf4, 0x04, 0x4c, 0xf4, 0x48, 0x10, 0x18, 0x5d, 0xc2, - 0xf6, 0xcf, 0x54, 0x7c, 0x4c, 0xae, 0xf0, 0x62, 0x1c, 0xc1, 0xd1, 0x87, 0x61, 0xcc, 0xf4, 0x2c, - 0x12, 0xcc, 0x4f, 0xb0, 0x19, 0xa6, 0x6a, 0xd8, 0x58, 0x93, 0x16, 0xdc, 0xdb, 0xab, 0x4f, 0x31, - 0x85, 0x9c, 0xfe, 0xc2, 0xbc, 0x92, 0xfe, 0x1b, 0x54, 0x74, 0x4d, 0x09, 0xeb, 0x45, 0x37, 0x44, - 0x7c, 0x5a, 0x99, 0x7a, 0x71, 0x7c, 0xe6, 0x65, 0xfd, 0xf3, 0x54, 0x71, 0xf0, 0xdc, 0xd0, 0xf7, - 0x9c, 0x35, 0xc7, 0x70, 0x09, 0xfa, 0xac, 0x06, 0x27, 0x37, 0xed, 0xee, 0xa6, 0x7a, 0xb1, 0x25, - 0x0e, 0xb6, 0x72, 0x32, 0xfe, 0xf5, 0x14, 0xb2, 0xc6, 0x99, 0xfd, 0xbd, 0xfa, 0xc9, 0x74, 0x29, - 0xce, 0x10, 0xd5, 0x7f, 0xa1, 0x06, 0x67, 0x44, 0xd7, 0x1c, 0x7a, 0xd4, 0xf4, 0x1d, 0x6f, 0xb7, - 0x47, 0xdc, 0xe3, 0xb8, 0x84, 0x8a, 0x64, 0x92, 0x5a, 0xa1, 0x4c, 0xd2, 0xcb, 0x4c, 0xd1, 0x48, - 0x99, 0x29, 0x92, 0x2b, 0xf9, 0x80, 0x69, 0xfa, 0x73, 0x0d, 0xe6, 0xf3, 0xc6, 0xe2, 0x18, 0x74, - 0x21, 0x37, 0xa9, 0x0b, 0xb5, 0x4b, 0xab, 0xb7, 0xe9, 0xbe, 0x17, 0xe8, 0x44, 0x7f, 0x5e, 0x83, - 0x73, 0x71, 0xf5, 0xb6, 0x1b, 0x84, 0x86, 0xe3, 0x70, 0x8b, 0xcf, 0x83, 0x9f, 0xf8, 0xb7, 0x12, - 0x4a, 0xed, 0xcd, 0x8a, 0xdf, 0xaa, 0x76, 0xbe, 0xd0, 0xda, 0xbc, 0x9b, 0xb2, 0x36, 0xbf, 0x7a, - 0x3f, 0x89, 0x0e, 0x37, 0x3c, 0xff, 0x57, 0x0d, 0xce, 0xe7, 0x37, 0x3c, 0x86, 0x75, 0xd5, 0x4f, - 0xae, 0xab, 0x1b, 0xf7, 0xf1, 0xb3, 0x0b, 0x56, 0xd6, 0x57, 0x6a, 0x45, 0x9f, 0xcb, 0xf4, 0xee, - 0x0d, 0x38, 0x41, 0x95, 0xa1, 0x20, 0x14, 0x06, 0xd2, 0xa3, 0x39, 0x0b, 0x44, 0x16, 0xa3, 0x13, - 0x38, 0x89, 0x03, 0xa7, 0x91, 0xa2, 0x55, 0x98, 0xa0, 0x0a, 0x10, 0xc5, 0x5f, 0x3b, 0x3c, 0x7e, - 0x79, 0x24, 0x75, 0x78, 0x5b, 0x1c, 0x21, 0x41, 0x3f, 0x0e, 0xb3, 0x96, 0xdc, 0x54, 0x07, 0xdc, - 0x12, 0xa6, 0xb1, 0x32, 0x5b, 0x76, 0x4b, 0x6d, 0x8d, 0x93, 0xc8, 0xf4, 0xff, 0xab, 0xc1, 0xc5, - 0x61, 0x8b, 0x0b, 0xf9, 0x00, 0x66, 0x24, 0x63, 0x70, 0x67, 0x91, 0xb2, 0xd6, 0x6e, 0x29, 0xaa, - 0xc4, 0x9b, 0x54, 0x16, 0x05, 0x58, 0xa1, 0x92, 0x73, 0x13, 0x59, 0x7b, 0x40, 0x37, 0x91, 0xfa, - 0x5f, 0x68, 0x2a, 0x3b, 0x52, 0x27, 0xf7, 0x3d, 0xc7, 0x8e, 0xd4, 0xce, 0x17, 0x5a, 0xdb, 0xfe, - 0xa8, 0x06, 0x97, 0xf3, 0x9b, 0x28, 0x27, 0xf0, 0x2b, 0x30, 0xde, 0xe7, 0x3e, 0x3d, 0x23, 0xec, - 0x84, 0x7c, 0x9c, 0x32, 0x17, 0xee, 0x70, 0x73, 0x6f, 0xaf, 0x7e, 0x3e, 0x8f, 0xdb, 0x0b, 0x57, - 0x1d, 0xd1, 0x0e, 0xd9, 0x29, 0x73, 0x03, 0x17, 0x02, 0x9f, 0x3e, 0x24, 0x7f, 0x31, 0xd6, 0x89, - 0x73, 0x68, 0x03, 0xc3, 0xa7, 0x35, 0x98, 0x4b, 0xac, 0xe9, 0x60, 0x7e, 0x8c, 0xad, 0xd2, 0x72, - 0x97, 0x41, 0x89, 0xdd, 0x12, 0x1f, 0xe0, 0x89, 0xe2, 0x00, 0xa7, 0x28, 0xa6, 0x58, 0xad, 0x3a, - 0xac, 0xef, 0x3d, 0x56, 0xab, 0xf6, 0xbe, 0x80, 0xd5, 0xfe, 0x7a, 0xad, 0xe8, 0x73, 0x19, 0xab, - 0xdd, 0x81, 0xa9, 0xc8, 0xc3, 0x32, 0x62, 0x19, 0xd7, 0x2a, 0x77, 0x8a, 0xe3, 0x8b, 0x1d, 0x1f, - 0xa2, 0x92, 0x00, 0xc7, 0xc4, 0xd0, 0xcf, 0x69, 0x00, 0xf1, 0xd4, 0x88, 0x8d, 0x75, 0xfb, 0x3e, - 0x0e, 0x88, 0x22, 0xdf, 0xcc, 0xd1, 0x7d, 0xad, 0xac, 0x0b, 0x85, 0xb0, 0xfe, 0xe5, 0x11, 0x40, - 0xd9, 0xce, 0x53, 0xc1, 0x73, 0xcb, 0x76, 0xad, 0xb4, 0x6e, 0x70, 0xc3, 0x76, 0x2d, 0xcc, 0x20, - 0x87, 0x10, 0x4d, 0x5f, 0x84, 0x13, 0x5d, 0xc7, 0x5b, 0x37, 0x1c, 0x67, 0x57, 0xb8, 0x6d, 0x0a, - 0xf7, 0xbf, 0xd3, 0xf4, 0x78, 0xba, 0x96, 0x04, 0xe1, 0x74, 0x5d, 0xd4, 0x87, 0x93, 0x3e, 0xd5, - 0x6a, 0x4d, 0xdb, 0x61, 0x5a, 0x94, 0x37, 0x08, 0x4b, 0x9a, 0x4d, 0x98, 0xa0, 0x8f, 0x53, 0xb8, - 0x70, 0x06, 0x3b, 0xfa, 0x00, 0x4c, 0xf4, 0x7d, 0xbb, 0x67, 0xf8, 0xbb, 0x4c, 0x4f, 0x9b, 0x6c, - 0x4c, 0xd3, 0x73, 0x6e, 0x8d, 0x17, 0xe1, 0x08, 0x86, 0x7e, 0x0a, 0xa6, 0x1c, 0x7b, 0x83, 0x98, - 0xbb, 0xa6, 0x43, 0x84, 0x9d, 0x63, 0xed, 0x3e, 0x2d, 0x9a, 0xe5, 0x08, 0xaf, 0xb8, 0x67, 0x8d, - 0x7e, 0xe2, 0x98, 0xa2, 0xfe, 0x4e, 0x0d, 0x2e, 0x0c, 0x69, 0x89, 0x30, 0x5d, 0xd3, 0xe2, 0xcb, - 0xc4, 0xfc, 0x3d, 0xc3, 0x97, 0xa1, 0x28, 0xbc, 0xb7, 0x57, 0x7f, 0x74, 0x08, 0x82, 0x0e, 0x5d, - 0x40, 0xa4, 0xbb, 0x8b, 0x63, 0x34, 0xa8, 0x0d, 0xe3, 0x56, 0x6c, 0xd2, 0x9b, 0x6a, 0x3c, 0x49, - 0xf9, 0x2c, 0x37, 0xba, 0x1d, 0x16, 0x9b, 0x40, 0x80, 0x96, 0x61, 0x82, 0x5f, 0xa9, 0x12, 0xc1, - 0xb3, 0x9f, 0x62, 0xfa, 0x2d, 0x2f, 0x3a, 0x2c, 0xb2, 0x08, 0x85, 0xfe, 0xbf, 0x35, 0x98, 0x68, - 0x7a, 0x3e, 0x69, 0xad, 0x76, 0xd0, 0x5d, 0x98, 0x56, 0x5c, 0xb6, 0x05, 0xfb, 0x2a, 0xbb, 0x9d, - 0x19, 0xca, 0xc5, 0x18, 0x5d, 0xe4, 0xec, 0x29, 0x0b, 0xb0, 0x4a, 0x0c, 0xf9, 0x74, 0xd0, 0xef, - 0xf8, 0x76, 0x48, 0x29, 0x57, 0xba, 0x89, 0xe2, 0x94, 0x71, 0x84, 0x8c, 0x2f, 0x04, 0xf9, 0x13, - 0xc7, 0x64, 0xf4, 0x35, 0xba, 0x73, 0xd3, 0xfd, 0x44, 0xcf, 0xc3, 0x68, 0xcf, 0xb3, 0xa2, 0x99, - 0xff, 0x60, 0xb4, 0x2f, 0x57, 0x3c, 0x8b, 0x8e, 0xee, 0xb9, 0x6c, 0x0b, 0x66, 0x28, 0x63, 0x6d, - 0xf4, 0x55, 0x38, 0x99, 0xa6, 0x8f, 0x9e, 0x87, 0x39, 0xd3, 0xeb, 0xf5, 0x3c, 0xb7, 0x33, 0xd8, - 0xd8, 0xb0, 0x77, 0x48, 0xc2, 0x0f, 0xb7, 0x99, 0x80, 0xe0, 0x54, 0x4d, 0xfd, 0xd7, 0x34, 0x18, - 0xa1, 0x33, 0xa3, 0xc3, 0xb8, 0xe5, 0xf5, 0x0c, 0xdb, 0x15, 0xbd, 0x62, 0x5e, 0xc2, 0x2d, 0x56, - 0x82, 0x05, 0x04, 0xbd, 0x05, 0x53, 0x91, 0xc4, 0x53, 0xcd, 0x1d, 0xa4, 0xb5, 0xda, 0x91, 0xbe, - 0x73, 0x92, 0x07, 0x47, 0x25, 0x01, 0x8e, 0xa9, 0xe8, 0x06, 0x9c, 0x6a, 0xad, 0x76, 0xda, 0xae, - 0xe9, 0x0c, 0x2c, 0xb2, 0xb4, 0xc3, 0xfe, 0x50, 0x26, 0x60, 0xf3, 0x12, 0xf1, 0xa1, 0x8c, 0x09, - 0x88, 0x4a, 0x38, 0x82, 0xd1, 0x6a, 0x84, 0xb7, 0x10, 0xce, 0xb2, 0xac, 0x9a, 0x40, 0x82, 0x23, - 0x98, 0xfe, 0xc7, 0x35, 0x98, 0x56, 0x3a, 0x84, 0x7a, 0x30, 0xc1, 0xbf, 0x37, 0xf2, 0x59, 0xbb, - 0x5a, 0xf6, 0x1b, 0x93, 0xdd, 0xe6, 0xe4, 0xf9, 0x90, 0x06, 0x38, 0xa2, 0xa1, 0x72, 0xb4, 0xda, - 0x10, 0x8e, 0xb6, 0x00, 0xc0, 0x5d, 0xf2, 0x98, 0xc3, 0x05, 0xdf, 0x96, 0xec, 0xd0, 0xe8, 0xc8, - 0x52, 0xac, 0xd4, 0x40, 0x17, 0x05, 0xef, 0x57, 0xbc, 0xf6, 0x14, 0xbe, 0xdf, 0x85, 0xb1, 0xbb, - 0x9e, 0x4b, 0x02, 0x71, 0x17, 0x75, 0xbf, 0xbe, 0x70, 0x8a, 0x1e, 0xee, 0x6f, 0x50, 0xc4, 0x98, - 0xe3, 0xd7, 0xbf, 0xa8, 0x01, 0xb4, 0x8c, 0xd0, 0xe0, 0x17, 0x27, 0x87, 0xf0, 0x78, 0xbe, 0x98, - 0x38, 0xb3, 0x26, 0x33, 0x2e, 0xa0, 0xa3, 0x81, 0x7d, 0x37, 0xfa, 0x7e, 0x29, 0x10, 0x73, 0xec, - 0x1d, 0xfb, 0x2e, 0xc1, 0x0c, 0x8e, 0x3e, 0x04, 0x53, 0xc4, 0x35, 0xfd, 0xdd, 0x7e, 0x28, 0x1c, - 0x17, 0x27, 0xf9, 0x26, 0x5d, 0x8a, 0x0a, 0x71, 0x0c, 0xd7, 0x9f, 0x84, 0xa4, 0x5a, 0x73, 0x70, - 0x2f, 0xf5, 0x7b, 0x1a, 0x9c, 0x5c, 0xda, 0xe9, 0xdb, 0x3e, 0xf3, 0x82, 0x26, 0x3e, 0x55, 0x11, - 0xd0, 0x13, 0x30, 0xb1, 0xcd, 0xff, 0x15, 0x2d, 0xa5, 0x1e, 0x26, 0x6a, 0xe0, 0x08, 0x8e, 0x36, - 0x60, 0x8e, 0xb0, 0xe6, 0x4c, 0x0c, 0x30, 0xc2, 0x32, 0xae, 0x24, 0xdc, 0xcb, 0x3e, 0x81, 0x05, - 0xa7, 0xb0, 0xa2, 0x0e, 0xcc, 0x99, 0x8e, 0x11, 0x04, 0xf6, 0x86, 0x6d, 0xc6, 0xce, 0x3e, 0x53, - 0x8d, 0x0f, 0x31, 0xce, 0x90, 0x80, 0xdc, 0xdb, 0xab, 0x9f, 0x15, 0xfd, 0x4c, 0x02, 0x70, 0x0a, - 0x85, 0xfe, 0x6e, 0x0d, 0x66, 0x97, 0x76, 0xfa, 0x5e, 0x30, 0xf0, 0x09, 0xab, 0x7a, 0x0c, 0xda, - 0xcd, 0x13, 0x30, 0xb1, 0x69, 0xb8, 0x96, 0x43, 0x7c, 0xb1, 0x32, 0xe4, 0xd8, 0x5e, 0xe7, 0xc5, - 0x38, 0x82, 0xa3, 0x4f, 0x02, 0x04, 0xe6, 0x26, 0xb1, 0x06, 0xec, 0x88, 0xe1, 0x0a, 0xee, 0x72, - 0xa9, 0x05, 0x9e, 0xf8, 0xc8, 0x8e, 0xc4, 0x29, 0xf6, 0x9d, 0xfc, 0x8d, 0x15, 0x7a, 0xfa, 0x1f, - 0x6b, 0x70, 0x2a, 0xd1, 0xee, 0x18, 0x64, 0xf6, 0x6e, 0x52, 0x66, 0x6f, 0x54, 0xff, 0xd8, 0x02, - 0x51, 0xfd, 0x9d, 0x1a, 0x3c, 0x54, 0x30, 0x28, 0x99, 0x4b, 0x61, 0xed, 0xb8, 0x2e, 0x85, 0xb7, - 0x61, 0x3a, 0xf4, 0x1c, 0xe1, 0x96, 0x16, 0x8d, 0x41, 0xb9, 0x2b, 0xdf, 0x5b, 0x12, 0x4f, 0x7c, - 0xe5, 0x1b, 0x97, 0x05, 0x58, 0x25, 0xa4, 0x7f, 0x5d, 0x83, 0x29, 0x69, 0x1f, 0x38, 0x84, 0xfb, - 0xfa, 0x31, 0x3a, 0x82, 0x1f, 0xfe, 0x39, 0xcf, 0xbf, 0xac, 0xc1, 0x39, 0x89, 0x3b, 0x12, 0xe6, - 0x3a, 0x21, 0xe5, 0x1d, 0x07, 0xeb, 0x17, 0x17, 0x05, 0x9f, 0x54, 0x78, 0xb5, 0xc2, 0xc9, 0xe9, - 0xc1, 0x36, 0xf0, 0xfb, 0x5e, 0x10, 0xb1, 0x6b, 0x7e, 0xb0, 0xf1, 0x22, 0x1c, 0xc1, 0xd0, 0x2a, - 0x8c, 0x05, 0x94, 0x9e, 0x50, 0x1c, 0x8e, 0x38, 0x1a, 0xec, 0xc4, 0x61, 0xfd, 0xc5, 0x1c, 0x0d, - 0x7a, 0x5b, 0xd5, 0x17, 0xb9, 0xf2, 0xfe, 0x63, 0x47, 0x5b, 0x0c, 0xec, 0x95, 0xe2, 0x02, 0xfd, - 0x12, 0x2b, 0x1a, 0x91, 0x1c, 0x5f, 0xf9, 0x3c, 0x95, 0x51, 0x5f, 0x86, 0x93, 0xe2, 0x5e, 0x99, - 0x2f, 0x1b, 0xd7, 0x24, 0xe8, 0xd9, 0xc4, 0xca, 0x78, 0x2c, 0x75, 0x57, 0x77, 0x26, 0x5d, 0x3f, - 0x5e, 0x31, 0x7a, 0x00, 0x93, 0xd7, 0x44, 0x27, 0xd1, 0x79, 0xa8, 0xd9, 0xd1, 0x5c, 0x80, 0xc0, - 0x51, 0x6b, 0xb7, 0x70, 0xcd, 0xb6, 0xe4, 0x79, 0x55, 0x2b, 0x3c, 0x55, 0x95, 0xa3, 0x69, 0x64, - 0xf8, 0xd1, 0xa4, 0xff, 0xa7, 0x1a, 0x9c, 0x89, 0xa8, 0x46, 0xdf, 0xd8, 0x12, 0x17, 0x1d, 0x07, - 0x9c, 0xdd, 0x07, 0xeb, 0x9b, 0x37, 0x61, 0x94, 0xf1, 0xc0, 0x52, 0x17, 0x20, 0x12, 0x21, 0xed, - 0x0e, 0x66, 0x88, 0xd0, 0x4f, 0xc1, 0xb8, 0x63, 0xac, 0x13, 0x27, 0xf2, 0xe9, 0x29, 0xa7, 0x9e, - 0xe7, 0x7d, 0x2f, 0xb7, 0x1c, 0x05, 0xdc, 0x67, 0x59, 0x5a, 0xc5, 0x79, 0x21, 0x16, 0x44, 0xcf, - 0x3f, 0x07, 0xd3, 0x4a, 0x35, 0x74, 0x12, 0x46, 0xb6, 0x08, 0xbf, 0x02, 0x9b, 0xc2, 0xf4, 0x5f, - 0x74, 0x06, 0xc6, 0xb6, 0x0d, 0x67, 0x20, 0xc6, 0x04, 0xf3, 0x1f, 0xcf, 0xd7, 0x9e, 0xd5, 0xf4, - 0x2f, 0x6b, 0x30, 0x7d, 0xdd, 0x5e, 0x27, 0x3e, 0xbf, 0x1d, 0x66, 0xd2, 0x6a, 0xe2, 0x41, 0xe5, - 0x74, 0xde, 0x63, 0x4a, 0xb4, 0x0b, 0x53, 0xe2, 0xb4, 0x91, 0x5e, 0x84, 0xd7, 0x4b, 0xde, 0xb5, - 0x49, 0xda, 0x82, 0x8b, 0xab, 0x0f, 0x41, 0x22, 0x12, 0x38, 0xa6, 0xa6, 0xbf, 0x0d, 0xa7, 0x73, - 0x1a, 0xa1, 0x3a, 0xdb, 0xc0, 0x7e, 0x28, 0x16, 0x46, 0xb4, 0x23, 0xfd, 0x10, 0xf3, 0x72, 0xf4, - 0x30, 0x8c, 0x10, 0x37, 0x72, 0xc9, 0x9e, 0xd8, 0xdf, 0xab, 0x8f, 0x2c, 0xb9, 0x16, 0xa6, 0x65, - 0x94, 0x51, 0x39, 0x5e, 0x42, 0x32, 0x61, 0x8c, 0x6a, 0x59, 0x94, 0x61, 0x09, 0xd5, 0xbf, 0xa0, - 0x41, 0xe6, 0x22, 0x10, 0x7d, 0x4e, 0x83, 0x93, 0x1b, 0xa9, 0xfd, 0x53, 0xe9, 0x02, 0x32, 0xbd, - 0x19, 0x1b, 0xf3, 0x62, 0x44, 0x32, 0xdb, 0x1a, 0x67, 0x08, 0xeb, 0xff, 0x74, 0x14, 0x1e, 0xb9, - 0xee, 0xf9, 0xf6, 0x5d, 0xcf, 0x0d, 0x0d, 0x67, 0xcd, 0xb3, 0x62, 0x4f, 0x20, 0xc1, 0x97, 0x7f, - 0x4e, 0x83, 0x87, 0xcc, 0xfe, 0x80, 0xbb, 0xbb, 0x46, 0x0e, 0x1a, 0x6b, 0xc4, 0xb7, 0xbd, 0xb2, - 0x0e, 0x41, 0xec, 0xfd, 0x5f, 0x73, 0xed, 0x76, 0x1e, 0x4a, 0x5c, 0x44, 0x8b, 0xf9, 0x25, 0x59, - 0xde, 0x1d, 0x97, 0x75, 0xae, 0x13, 0xb2, 0xe1, 0xbc, 0x1b, 0xcf, 0x42, 0x49, 0xbf, 0xa4, 0x56, - 0x2e, 0x46, 0x5c, 0x40, 0x09, 0xfd, 0x34, 0x9c, 0xb5, 0x79, 0xe7, 0x30, 0x31, 0x2c, 0xdb, 0x25, - 0x41, 0xc0, 0xbc, 0x73, 0xaa, 0x38, 0xde, 0xb4, 0xf3, 0x10, 0xe2, 0x7c, 0x3a, 0xe8, 0x27, 0x00, - 0x82, 0x5d, 0xd7, 0x14, 0xe3, 0x3f, 0x56, 0x8a, 0x2a, 0x17, 0x05, 0x25, 0x16, 0xac, 0x60, 0xa4, - 0x4a, 0x48, 0x28, 0x57, 0xe5, 0x38, 0x73, 0xe2, 0x61, 0x4a, 0x48, 0xbc, 0x86, 0x62, 0xb8, 0xfe, - 0xdb, 0x1a, 0x4c, 0x88, 0x67, 0xc1, 0xe8, 0x83, 0x29, 0x5d, 0x5c, 0x72, 0x9f, 0x94, 0x3e, 0x7e, - 0x97, 0x5d, 0xa7, 0x08, 0x4b, 0x8c, 0x90, 0x26, 0xca, 0xa9, 0x72, 0x82, 0x72, 0x6c, 0xd7, 0x49, - 0x5c, 0xab, 0x44, 0xb6, 0x1e, 0x85, 0x1a, 0xdd, 0x8f, 0xa7, 0x32, 0xad, 0x0e, 0x21, 0x33, 0x1c, - 0xa3, 0xbf, 0xc2, 0xd7, 0xe6, 0x80, 0xbd, 0x01, 0x5f, 0x5c, 0x6b, 0x77, 0x88, 0xbf, 0x2d, 0x77, - 0x21, 0xe5, 0x1a, 0xb1, 0x73, 0xaa, 0xe8, 0x45, 0x15, 0xae, 0x71, 0x23, 0x85, 0x2c, 0xe6, 0x1a, - 0x69, 0x08, 0xce, 0x10, 0x46, 0xef, 0x68, 0x70, 0xd2, 0x48, 0xbe, 0x01, 0x8f, 0x18, 0x7b, 0xb9, - 0x67, 0x4b, 0xa9, 0x07, 0xe5, 0x71, 0x67, 0x52, 0x80, 0x00, 0x67, 0xe8, 0xa2, 0x67, 0x60, 0xc6, - 0xe8, 0xdb, 0x8b, 0x03, 0xcb, 0xa6, 0xc2, 0x4e, 0xf4, 0x1c, 0x98, 0x49, 0xe0, 0x8b, 0x6b, 0x6d, - 0x59, 0x8e, 0x13, 0xb5, 0xe4, 0xdb, 0x6d, 0x31, 0x94, 0xa3, 0x55, 0xdf, 0x6e, 0x8b, 0x51, 0x8c, - 0xdf, 0x6e, 0x8b, 0xc1, 0x53, 0xa9, 0xa0, 0x8f, 0xc3, 0xc3, 0xfc, 0x4c, 0x6c, 0x18, 0x81, 0x6d, - 0x2e, 0x0e, 0xc2, 0x4d, 0xe2, 0x86, 0x91, 0x96, 0xcb, 0x6d, 0xc3, 0xcc, 0x4b, 0x71, 0xa9, 0xa8, - 0x12, 0x2e, 0x6e, 0x8f, 0x3c, 0x00, 0xcf, 0xb6, 0x4c, 0xf1, 0x41, 0xdc, 0x80, 0x5c, 0x4e, 0xa5, - 0xb8, 0xd9, 0x6e, 0x35, 0xc5, 0xf7, 0x30, 0x5e, 0x11, 0xff, 0xc6, 0x0a, 0x09, 0xf4, 0x79, 0x0d, - 0x66, 0xc5, 0x42, 0x17, 0x44, 0x27, 0xd8, 0x12, 0xf8, 0x78, 0xe9, 0x05, 0x99, 0x5a, 0xf5, 0x0b, - 0x58, 0xc5, 0xce, 0xa5, 0x1a, 0xe9, 0x3c, 0x9d, 0x80, 0xe1, 0x64, 0x47, 0xd0, 0xaf, 0x68, 0x70, - 0x26, 0x20, 0xfe, 0xb6, 0x6d, 0x92, 0x45, 0xd3, 0xf4, 0x06, 0x6e, 0x34, 0xcf, 0x93, 0x15, 0x9e, - 0xd1, 0x76, 0x72, 0x10, 0x72, 0x97, 0xbd, 0x3c, 0x08, 0xce, 0xed, 0x00, 0xfa, 0xeb, 0x1a, 0x9c, - 0xb8, 0x63, 0x84, 0xe6, 0x66, 0xd3, 0x30, 0x37, 0x99, 0xf9, 0x87, 0x7b, 0xe9, 0x95, 0xdd, 0x39, - 0xaf, 0x27, 0x71, 0xf1, 0x4b, 0x90, 0x54, 0x21, 0x4e, 0x53, 0x44, 0x21, 0x4c, 0xfa, 0xe4, 0xad, - 0x01, 0x09, 0x98, 0x2f, 0x9f, 0x76, 0x74, 0x7d, 0x23, 0x6f, 0xd2, 0xb0, 0xc0, 0xc8, 0xe5, 0xa1, - 0xe8, 0x17, 0x96, 0x94, 0x50, 0x17, 0x1e, 0xe1, 0xcb, 0x77, 0xd1, 0xf5, 0xdc, 0xdd, 0x9e, 0x37, - 0x08, 0x52, 0x5b, 0x60, 0x9a, 0x6d, 0x01, 0xe6, 0xae, 0xb8, 0x34, 0xac, 0x22, 0x1e, 0x8e, 0x07, - 0x7d, 0x14, 0x26, 0xc9, 0x36, 0x71, 0xc3, 0x5b, 0xb7, 0x96, 0xe7, 0x67, 0x4a, 0x9d, 0x91, 0xec, - 0x13, 0x96, 0x04, 0x0e, 0x2c, 0xb1, 0xa1, 0x3e, 0x4c, 0x38, 0x5e, 0xb7, 0x6b, 0xbb, 0xdd, 0xf9, - 0xd9, 0x0a, 0x4b, 0x29, 0x31, 0x6e, 0xcb, 0x1c, 0x21, 0x17, 0x9e, 0xc5, 0x0f, 0x1c, 0x91, 0x41, - 0x7d, 0xb8, 0x6c, 0x91, 0x0d, 0x63, 0xe0, 0x84, 0xab, 0x5e, 0x48, 0xa5, 0x81, 0xdd, 0x58, 0xbb, - 0x8f, 0xdc, 0x3c, 0xe7, 0xd8, 0x6b, 0xb8, 0xc7, 0xf6, 0xf7, 0xea, 0x97, 0x5b, 0x07, 0xd4, 0xc5, - 0x07, 0x62, 0x43, 0xbb, 0xf0, 0xa8, 0xa8, 0x73, 0xdb, 0xf5, 0x89, 0x61, 0x6e, 0xd2, 0xa1, 0xce, - 0x12, 0x3d, 0xc1, 0x88, 0xfe, 0xc0, 0xfe, 0x5e, 0xfd, 0xd1, 0xd6, 0xc1, 0xd5, 0xf1, 0x61, 0x70, - 0x9e, 0x7f, 0x05, 0x50, 0x76, 0xcf, 0x1f, 0xa4, 0xa2, 0x4c, 0xaa, 0x2a, 0xca, 0x2f, 0x69, 0x70, - 0x26, 0x6f, 0x74, 0xa9, 0x64, 0xb3, 0x4d, 0xfc, 0x75, 0x2f, 0x88, 0x1c, 0xfe, 0xc6, 0xb8, 0x64, - 0xf3, 0x5a, 0x54, 0x88, 0x63, 0x38, 0x6a, 0xc3, 0xe9, 0xcd, 0x30, 0xec, 0x2f, 0x9a, 0x26, 0x09, - 0x02, 0x59, 0x83, 0x51, 0x1b, 0xe3, 0x81, 0x5a, 0xae, 0xdf, 0xba, 0xb5, 0x96, 0x02, 0xe3, 0xbc, - 0x36, 0xfa, 0x57, 0x35, 0x38, 0x9b, 0xbb, 0x4d, 0x10, 0x86, 0x73, 0xcc, 0xab, 0xd7, 0x5d, 0x19, - 0x84, 0x46, 0x68, 0xbb, 0xdd, 0xb6, 0xbb, 0xe1, 0xd8, 0xdd, 0xcd, 0x50, 0x74, 0x8f, 0x09, 0xa8, - 0x2b, 0xb9, 0x35, 0x70, 0x41, 0x4b, 0xda, 0xf1, 0x9e, 0xb1, 0x93, 0x41, 0xa8, 0x74, 0x7c, 0x25, - 0x0b, 0xc6, 0x79, 0x6d, 0xf4, 0x5f, 0x1b, 0x83, 0x0b, 0xb4, 0xe3, 0xb1, 0xa8, 0xb4, 0x62, 0xb8, - 0x46, 0xf7, 0xfb, 0x54, 0x24, 0xf9, 0xb2, 0x06, 0x0f, 0x6d, 0xe6, 0x2b, 0x32, 0x42, 0x5a, 0xc3, - 0xe5, 0x54, 0xce, 0x61, 0xca, 0x11, 0x67, 0x55, 0x43, 0xab, 0xe0, 0xa2, 0x5e, 0xa1, 0x57, 0xe0, - 0xa4, 0xeb, 0x59, 0xa4, 0xd9, 0x6e, 0xe1, 0x15, 0x23, 0xd8, 0xea, 0x44, 0x77, 0x04, 0x63, 0xfc, - 0x62, 0x79, 0x35, 0x05, 0xc3, 0x99, 0xda, 0x68, 0x1b, 0x50, 0xdf, 0xb3, 0x96, 0xb6, 0x6d, 0x33, - 0x72, 0x3f, 0x2e, 0x7f, 0x99, 0xcd, 0x1e, 0x5c, 0xae, 0x65, 0xb0, 0xe1, 0x1c, 0x0a, 0x4c, 0x15, - 0xa3, 0x9d, 0x59, 0xf1, 0x5c, 0x3b, 0xf4, 0x7c, 0xe6, 0x37, 0x5e, 0x49, 0x23, 0x61, 0x2b, 0x7d, - 0x35, 0x17, 0x23, 0x2e, 0xa0, 0xa4, 0xff, 0x0f, 0x0d, 0x4e, 0xd0, 0x75, 0xb1, 0xe6, 0x7b, 0x3b, - 0xbb, 0xdf, 0x97, 0x4b, 0xf2, 0x09, 0x71, 0x65, 0xca, 0x8d, 0x08, 0x67, 0x95, 0xeb, 0xd2, 0x29, - 0xd6, 0xe9, 0xf8, 0x86, 0x54, 0x35, 0xa4, 0x8c, 0x14, 0x1b, 0x52, 0xf4, 0xcf, 0xd7, 0xb8, 0x76, - 0x10, 0xd9, 0x31, 0xbe, 0x3f, 0xb7, 0xe2, 0x8f, 0xc0, 0x2c, 0x2d, 0x5b, 0x31, 0x76, 0xd6, 0x5a, - 0xaf, 0x79, 0x4e, 0xe4, 0xbc, 0xcf, 0x7c, 0xf1, 0x6e, 0xa8, 0x00, 0x9c, 0xac, 0x87, 0x9e, 0x87, - 0x89, 0x3e, 0x7f, 0x28, 0x28, 0x0c, 0x2b, 0x97, 0xf9, 0xb5, 0x22, 0x2b, 0xba, 0xb7, 0x57, 0x3f, - 0x15, 0x9b, 0xee, 0x45, 0x21, 0x8e, 0x1a, 0xe8, 0xef, 0x9e, 0x01, 0x86, 0xdc, 0x21, 0xe1, 0xf7, - 0xe5, 0xa0, 0x3c, 0x09, 0xd3, 0x66, 0x7f, 0xd0, 0xbc, 0xda, 0x79, 0x75, 0xe0, 0x85, 0x86, 0xb8, - 0x36, 0x65, 0xda, 0x42, 0x73, 0xed, 0x76, 0x54, 0x8c, 0xd5, 0x3a, 0x94, 0x41, 0x98, 0xfd, 0x81, - 0x60, 0xba, 0x6b, 0xaa, 0x3f, 0x1a, 0x63, 0x10, 0xcd, 0xb5, 0xdb, 0x09, 0x18, 0xce, 0xd4, 0x46, - 0x3f, 0xa3, 0xc1, 0x0c, 0x11, 0x9b, 0xf7, 0xba, 0xe1, 0x5b, 0x82, 0x37, 0x94, 0x97, 0xf5, 0xe4, - 0xe8, 0x46, 0x2c, 0x81, 0xeb, 0x59, 0x4b, 0x0a, 0x0d, 0x9c, 0xa0, 0xc8, 0x54, 0x1e, 0xf1, 0x9b, - 0x4e, 0xb4, 0x67, 0xa5, 0xb9, 0xc5, 0x98, 0x50, 0x79, 0x8a, 0x2a, 0xe1, 0xe2, 0xf6, 0xe8, 0x1f, - 0x68, 0x70, 0x4e, 0x42, 0x6d, 0xd7, 0xee, 0x0d, 0x7a, 0x98, 0x98, 0x8e, 0x61, 0xf7, 0x84, 0xfe, - 0xf3, 0xd1, 0xfb, 0xf7, 0xa5, 0x49, 0xfc, 0x9c, 0x65, 0xe5, 0xc3, 0x70, 0x41, 0x9f, 0xd0, 0x17, - 0x34, 0xb8, 0x1c, 0x81, 0xd6, 0x7c, 0x12, 0x04, 0x03, 0x9f, 0xc4, 0xcf, 0x47, 0xc4, 0x98, 0x4c, - 0x94, 0xe2, 0xa0, 0x4c, 0xf6, 0x5b, 0x3a, 0x00, 0x37, 0x3e, 0x90, 0x7a, 0x62, 0xc5, 0x74, 0xbc, - 0x8d, 0x50, 0x28, 0x4c, 0x0f, 0x6c, 0xc5, 0x50, 0x1a, 0x38, 0x41, 0x11, 0xfd, 0x8e, 0x06, 0x0f, - 0xa9, 0x05, 0xea, 0x82, 0xe1, 0x9a, 0xd2, 0xc7, 0xee, 0x5f, 0x6f, 0x52, 0x04, 0xb8, 0x6d, 0xb2, - 0x00, 0x88, 0x8b, 0xba, 0x45, 0xd9, 0x77, 0x8f, 0x2d, 0x4e, 0xae, 0x4d, 0x8d, 0x71, 0xf6, 0xcd, - 0xd7, 0x6b, 0x80, 0x23, 0x18, 0x7a, 0x06, 0x66, 0xfa, 0x9e, 0xb5, 0x66, 0x5b, 0xc1, 0xb2, 0xdd, - 0xb3, 0x43, 0xa6, 0xee, 0x8c, 0xf0, 0xf1, 0x58, 0xf3, 0xac, 0xb5, 0x76, 0x8b, 0x97, 0xe3, 0x44, - 0x2d, 0xf6, 0x16, 0xd2, 0xee, 0x19, 0x5d, 0xb2, 0x36, 0x70, 0x9c, 0x35, 0xdf, 0x63, 0xf6, 0xab, - 0x16, 0x31, 0x2c, 0xc7, 0x76, 0x49, 0x49, 0xf5, 0x86, 0x6d, 0xb9, 0x76, 0x11, 0x52, 0x5c, 0x4c, - 0x0f, 0x2d, 0x00, 0x6c, 0x18, 0xb6, 0xd3, 0xb9, 0x63, 0xf4, 0x6f, 0xba, 0x4c, 0x07, 0x9a, 0xe4, - 0x46, 0x82, 0xab, 0xb2, 0x14, 0x2b, 0x35, 0xd8, 0x82, 0xa2, 0xcc, 0x10, 0x13, 0x1e, 0x8d, 0x83, - 0xe9, 0x2a, 0xf7, 0x65, 0x41, 0x45, 0x18, 0xf9, 0x00, 0xde, 0x50, 0x68, 0xe0, 0x04, 0x45, 0xf4, - 0xf3, 0x1a, 0xcc, 0x05, 0xbb, 0x41, 0x48, 0x7a, 0xb2, 0x13, 0x27, 0xee, 0x7b, 0x27, 0x98, 0x71, - 0xaf, 0x93, 0xa0, 0x82, 0x53, 0x54, 0x91, 0x01, 0x17, 0xd8, 0xc0, 0x5e, 0x6b, 0x5e, 0xb7, 0xbb, - 0x9b, 0xf2, 0x91, 0xe3, 0x1a, 0xf1, 0x4d, 0xe2, 0x86, 0xf3, 0x27, 0xd9, 0xd2, 0x61, 0xe1, 0x1e, - 0xda, 0xc5, 0xd5, 0xf0, 0x30, 0x1c, 0xe8, 0x27, 0xe0, 0xbc, 0x00, 0x2f, 0x7b, 0x77, 0x32, 0x14, - 0x4e, 0x31, 0x0a, 0xec, 0xe5, 0x69, 0xbb, 0xb0, 0x16, 0x1e, 0x82, 0x81, 0xea, 0x17, 0x01, 0xf1, - 0x99, 0x71, 0x9e, 0xc8, 0xf5, 0x13, 0xcc, 0x23, 0xb6, 0x0e, 0x98, 0x7e, 0xd1, 0xc9, 0x82, 0x71, - 0x5e, 0x1b, 0xf4, 0xa2, 0x7c, 0x8f, 0xb0, 0x4b, 0x0b, 0x5e, 0x5d, 0xeb, 0xcc, 0x9f, 0x66, 0xfd, - 0x3b, 0xad, 0x3c, 0x33, 0x88, 0x40, 0x38, 0x5d, 0x97, 0x4a, 0x19, 0x51, 0x51, 0x63, 0xe0, 0x07, - 0xe1, 0xfc, 0x19, 0xd6, 0x98, 0x49, 0x19, 0x58, 0x05, 0xe0, 0x64, 0x3d, 0xf4, 0x3c, 0xcc, 0x05, - 0xc4, 0x34, 0xbd, 0x5e, 0x5f, 0xa8, 0xad, 0xf3, 0x67, 0x59, 0xef, 0xf9, 0x0c, 0x26, 0x20, 0x38, - 0x55, 0x13, 0xed, 0xc2, 0x69, 0x19, 0x9c, 0x62, 0xd9, 0xeb, 0xae, 0x18, 0x3b, 0x4c, 0x6c, 0x3f, - 0x77, 0xf0, 0x26, 0x5c, 0x88, 0x2e, 0x5c, 0x17, 0x5e, 0x1d, 0x18, 0x6e, 0x68, 0x87, 0xbb, 0x7c, - 0xb8, 0x9a, 0x59, 0x74, 0x38, 0x8f, 0x06, 0x5a, 0x86, 0x33, 0xa9, 0xe2, 0xab, 0xb6, 0x43, 0x82, - 0xf9, 0x87, 0xd8, 0x67, 0x33, 0x33, 0x54, 0x33, 0x07, 0x8e, 0x73, 0x5b, 0xa1, 0x9b, 0x70, 0xb6, - 0xef, 0x7b, 0x21, 0x31, 0xc3, 0x1b, 0x54, 0x4e, 0x71, 0xc4, 0x07, 0x06, 0xf3, 0xf3, 0x6c, 0x2c, - 0xd8, 0xc5, 0xc4, 0x5a, 0x5e, 0x05, 0x9c, 0xdf, 0x0e, 0xbd, 0xab, 0xc1, 0xa5, 0x20, 0xf4, 0x89, - 0xd1, 0xb3, 0xdd, 0x6e, 0xd3, 0x73, 0x5d, 0xc2, 0x38, 0x65, 0xdb, 0x8a, 0xbd, 0x6c, 0x1f, 0x2e, - 0xc5, 0xaa, 0xf4, 0xfd, 0xbd, 0xfa, 0xa5, 0xce, 0x50, 0xcc, 0xf8, 0x00, 0xca, 0xfa, 0x5e, 0x8d, - 0xeb, 0xe0, 0x19, 0xf6, 0x4f, 0x17, 0x61, 0x8f, 0xf4, 0x3c, 0x7f, 0x77, 0x31, 0x8a, 0x0f, 0x29, - 0xee, 0x01, 0xd8, 0x22, 0x5c, 0x49, 0x82, 0x70, 0xba, 0x2e, 0x15, 0xd1, 0xd8, 0x66, 0xb9, 0xda, - 0x89, 0xdb, 0xd7, 0x62, 0x11, 0xad, 0x9d, 0x82, 0xe1, 0x4c, 0x6d, 0xd4, 0x84, 0x53, 0xa2, 0xac, - 0x4d, 0x15, 0x9d, 0xe0, 0xaa, 0x4f, 0x22, 0xe9, 0x97, 0x6a, 0x0c, 0xa7, 0xda, 0x69, 0x20, 0xce, - 0xd6, 0xa7, 0x5f, 0x41, 0x7f, 0xa8, 0xbd, 0x18, 0x8d, 0xbf, 0x62, 0x35, 0x09, 0xc2, 0xe9, 0xba, - 0x91, 0x26, 0x9a, 0xe8, 0xc2, 0x58, 0xfc, 0x15, 0xab, 0x29, 0x18, 0xce, 0xd4, 0xd6, 0xff, 0xdd, - 0x28, 0x3c, 0x7a, 0x08, 0xa9, 0x09, 0xf5, 0xf2, 0x87, 0xfb, 0xe8, 0x7b, 0xe7, 0x70, 0xd3, 0xd3, - 0x2f, 0x98, 0x9e, 0xa3, 0xd3, 0x3b, 0xec, 0x74, 0x06, 0x45, 0xd3, 0x79, 0x74, 0x92, 0x87, 0x9f, - 0xfe, 0x5e, 0xfe, 0xf4, 0x97, 0x1c, 0xd5, 0x03, 0x97, 0x4b, 0xbf, 0x60, 0xb9, 0x94, 0x1c, 0xd5, - 0x43, 0x2c, 0xaf, 0x7f, 0x3f, 0x0a, 0x8f, 0x1d, 0x46, 0x7c, 0x2b, 0xb9, 0xbe, 0x72, 0xb8, 0xce, - 0x03, 0x5d, 0x5f, 0x45, 0x6f, 0x09, 0x1e, 0xe0, 0xfa, 0xca, 0x21, 0xf9, 0xa0, 0xd7, 0x57, 0xd1, - 0xa8, 0x3e, 0xa8, 0xf5, 0x55, 0x34, 0xaa, 0x87, 0x58, 0x5f, 0xff, 0x33, 0x7d, 0x3e, 0x48, 0x91, - 0xad, 0x0d, 0x23, 0x66, 0x7f, 0x50, 0x92, 0x49, 0x31, 0xbf, 0x91, 0xe6, 0xda, 0x6d, 0x4c, 0x71, - 0x20, 0x0c, 0xe3, 0x7c, 0xfd, 0x94, 0x64, 0x41, 0xcc, 0xbb, 0x9d, 0x2f, 0x49, 0x2c, 0x30, 0xd1, - 0xa1, 0x22, 0xfd, 0x4d, 0xd2, 0x23, 0xbe, 0xe1, 0x74, 0x42, 0xcf, 0x37, 0xba, 0x65, 0xb9, 0x0d, - 0x1b, 0xaa, 0xa5, 0x14, 0x2e, 0x9c, 0xc1, 0x4e, 0x07, 0xa4, 0x6f, 0x5b, 0x25, 0xf9, 0x0b, 0x1b, - 0x90, 0xb5, 0x76, 0x0b, 0x53, 0x1c, 0xfa, 0x6f, 0x4f, 0x81, 0x12, 0x7c, 0x09, 0x7d, 0x1c, 0x1e, - 0x36, 0x1c, 0xc7, 0xbb, 0xb3, 0xe6, 0xdb, 0xdb, 0xb6, 0x43, 0xba, 0xc4, 0x92, 0xf2, 0x4c, 0x20, - 0xdc, 0x8b, 0x98, 0xda, 0xb2, 0x58, 0x54, 0x09, 0x17, 0xb7, 0xa7, 0x4a, 0xd4, 0x29, 0x33, 0x1d, - 0xeb, 0xa6, 0x92, 0xfb, 0x41, 0x26, 0x72, 0x0e, 0xdf, 0x50, 0x99, 0x62, 0x9c, 0xa5, 0x8b, 0x7e, - 0x56, 0xe3, 0x26, 0x32, 0x79, 0x27, 0x20, 0x26, 0xed, 0xfa, 0xfd, 0xba, 0x39, 0x8d, 0x8d, 0x6d, - 0xf1, 0xb5, 0x43, 0x92, 0x22, 0xfa, 0xa2, 0x06, 0x67, 0xb7, 0xf2, 0xcc, 0xfb, 0x62, 0x6e, 0xd7, - 0x4a, 0xf7, 0xa5, 0xe0, 0xc2, 0x80, 0x0b, 0x95, 0xb9, 0x15, 0x70, 0x7e, 0x4f, 0xe4, 0x38, 0x49, - 0x7b, 0xa7, 0xe0, 0x03, 0xe5, 0xc7, 0x29, 0x65, 0x39, 0x8d, 0xc7, 0x49, 0x02, 0x70, 0x92, 0x22, - 0x7a, 0x0b, 0xa6, 0xb6, 0x22, 0x33, 0xb3, 0xb0, 0x2a, 0xb5, 0x4a, 0x93, 0x57, 0x8c, 0xd5, 0xfc, - 0xf6, 0x49, 0x16, 0xe2, 0x98, 0x0a, 0xb2, 0x61, 0x62, 0x8b, 0x73, 0x23, 0x61, 0x0d, 0x6a, 0x54, - 0x57, 0x54, 0xb9, 0x49, 0x42, 0x14, 0xe1, 0x08, 0xbf, 0xea, 0x64, 0x39, 0x79, 0x80, 0xff, 0xff, - 0xaf, 0x6a, 0x70, 0x76, 0x9b, 0xf8, 0xa1, 0x6d, 0xa6, 0xef, 0x57, 0xa6, 0x2a, 0x68, 0xd3, 0xaf, - 0xe5, 0x61, 0xe4, 0x4b, 0x25, 0x17, 0x84, 0xf3, 0xfb, 0x40, 0x75, 0x6b, 0x6e, 0x25, 0xef, 0x84, - 0x46, 0x68, 0x9b, 0xb7, 0xbc, 0x2d, 0xe2, 0xd2, 0xaf, 0x15, 0x59, 0x07, 0x80, 0xf1, 0x0f, 0xa6, - 0x5b, 0x2f, 0x15, 0x57, 0xc3, 0xc3, 0x70, 0xe8, 0x7f, 0xa6, 0x41, 0xc6, 0xd2, 0x8b, 0xfe, 0xb6, - 0x06, 0x33, 0x1b, 0xc4, 0x08, 0x07, 0x3e, 0xb9, 0x66, 0x84, 0xf2, 0xb9, 0xe7, 0xeb, 0xf7, 0xc5, - 0xc2, 0xbc, 0x70, 0x55, 0xc1, 0xcc, 0xfd, 0x1f, 0x64, 0xf8, 0x36, 0x15, 0x84, 0x13, 0x5d, 0x38, - 0xff, 0x32, 0x9c, 0xca, 0x34, 0x3c, 0xd2, 0x25, 0xea, 0xd7, 0x34, 0xc8, 0xcb, 0x44, 0x81, 0x3e, - 0x01, 0x63, 0x86, 0x65, 0xc9, 0x70, 0xd5, 0xcf, 0x97, 0xf4, 0xf5, 0xb1, 0xd4, 0x77, 0xb5, 0xec, - 0x27, 0xe6, 0x78, 0xd1, 0x55, 0x40, 0x46, 0xe2, 0x2a, 0x7f, 0x25, 0x7e, 0x73, 0xc6, 0x6e, 0xa8, - 0x16, 0x33, 0x50, 0x9c, 0xd3, 0x42, 0xff, 0x05, 0x0d, 0x50, 0x36, 0xe6, 0x1f, 0x0a, 0x60, 0x52, - 0xac, 0xe6, 0x68, 0x9e, 0x96, 0xca, 0xbe, 0x3b, 0x48, 0x3c, 0xa3, 0x89, 0x5f, 0x3a, 0x88, 0x82, - 0x00, 0x4b, 0x42, 0xfa, 0xff, 0xd1, 0x20, 0x8e, 0x6c, 0x8b, 0x3e, 0x02, 0xd3, 0x16, 0x09, 0x4c, - 0xdf, 0xee, 0x87, 0xf1, 0xa3, 0x1b, 0xe9, 0xb8, 0xdf, 0x8a, 0x41, 0x58, 0xad, 0x87, 0x74, 0x18, - 0x0f, 0x8d, 0x60, 0xab, 0xdd, 0x12, 0xea, 0x25, 0x13, 0x06, 0x6e, 0xb1, 0x12, 0x2c, 0x20, 0x71, - 0xec, 0x9e, 0x91, 0x43, 0xc4, 0xee, 0x41, 0x1b, 0xf7, 0x21, 0x50, 0x11, 0x3a, 0x38, 0x48, 0x91, - 0xfe, 0x77, 0x6b, 0x70, 0x82, 0x56, 0x59, 0x31, 0x6c, 0x37, 0x24, 0x2e, 0x73, 0x2f, 0x2f, 0x39, - 0x08, 0x5d, 0x98, 0x0d, 0x13, 0xc1, 0x54, 0x8f, 0xfe, 0x00, 0x49, 0xba, 0x0f, 0x25, 0x43, 0xa8, - 0x26, 0xf1, 0xa2, 0xe7, 0x22, 0xff, 0x7e, 0xae, 0x88, 0x3f, 0x1a, 0xad, 0x55, 0xe6, 0xb4, 0x7f, - 0x4f, 0x04, 0x83, 0x92, 0xf1, 0x90, 0x13, 0xae, 0xfc, 0x3f, 0x02, 0xb3, 0xc2, 0xc9, 0x96, 0x07, - 0x61, 0x12, 0x8a, 0x38, 0x3b, 0x67, 0xae, 0xaa, 0x00, 0x9c, 0xac, 0xa7, 0xff, 0x61, 0x0d, 0x92, - 0x51, 0x97, 0xcb, 0x8e, 0x52, 0x36, 0x02, 0x55, 0xed, 0x81, 0x45, 0xa0, 0xfa, 0x30, 0xcb, 0x50, - 0xc0, 0x33, 0xd0, 0xf0, 0xbb, 0x6b, 0x35, 0xad, 0x00, 0x4f, 0x1f, 0x23, 0x6b, 0xc4, 0xc3, 0x3a, - 0x7a, 0xe4, 0x61, 0xfd, 0x88, 0x70, 0xd3, 0x1f, 0x4b, 0xc4, 0x01, 0x8b, 0x1e, 0x24, 0x9c, 0x4a, - 0x34, 0x54, 0x5e, 0x23, 0x7c, 0x53, 0x83, 0x09, 0x11, 0xe7, 0xf2, 0x10, 0xaf, 0x5d, 0xba, 0x30, - 0xc6, 0x94, 0x9f, 0x4a, 0x72, 0x61, 0x67, 0xd3, 0xf3, 0xc2, 0x44, 0xbc, 0x4f, 0xe6, 0x5d, 0xce, - 0xfe, 0xc5, 0x1c, 0x3f, 0x73, 0x59, 0xf4, 0xcd, 0x4d, 0x3b, 0x24, 0x66, 0x18, 0x45, 0x10, 0x8c, - 0x5c, 0x16, 0x95, 0x72, 0x9c, 0xa8, 0xa5, 0xff, 0xea, 0x28, 0x5c, 0x16, 0x88, 0x33, 0xa2, 0x92, - 0x64, 0x71, 0xbb, 0x70, 0x5a, 0x4c, 0x6e, 0xcb, 0x37, 0x6c, 0xe9, 0x14, 0x50, 0x4e, 0x0b, 0x16, - 0x0e, 0x23, 0x19, 0x74, 0x38, 0x8f, 0x06, 0x8f, 0x85, 0xc7, 0x8a, 0xaf, 0x13, 0xc3, 0x09, 0x37, - 0x23, 0xda, 0xb5, 0x2a, 0xb1, 0xf0, 0xb2, 0xf8, 0x70, 0x2e, 0x15, 0xe6, 0x94, 0x20, 0x00, 0x4d, - 0x9f, 0x18, 0xaa, 0x47, 0x44, 0x05, 0xff, 0xf0, 0x95, 0x5c, 0x8c, 0xb8, 0x80, 0x12, 0x33, 0x27, - 0x1a, 0x3b, 0xcc, 0x3a, 0x81, 0x49, 0xe8, 0xdb, 0x2c, 0x6e, 0xab, 0xb4, 0x69, 0xaf, 0x24, 0x41, - 0x38, 0x5d, 0x17, 0x3d, 0x0f, 0x73, 0xcc, 0xc9, 0x23, 0x8e, 0x37, 0x33, 0x16, 0x3f, 0x8a, 0x5e, - 0x4d, 0x40, 0x70, 0xaa, 0xa6, 0xfe, 0x25, 0x0d, 0x66, 0xd4, 0x65, 0x77, 0x88, 0xb7, 0x2f, 0xdb, - 0xca, 0x71, 0x58, 0xe5, 0x59, 0x86, 0x4a, 0xf6, 0x30, 0x27, 0xe2, 0xdf, 0x1c, 0x81, 0xd3, 0x39, - 0x6d, 0xd8, 0x8d, 0x3d, 0x49, 0x1d, 0xad, 0x95, 0x6e, 0xec, 0x33, 0xe7, 0xb4, 0xbc, 0xb1, 0x4f, - 0x43, 0x70, 0x86, 0x30, 0x7a, 0x1d, 0x46, 0x4c, 0xdf, 0x16, 0x03, 0xf3, 0x6c, 0x39, 0x1d, 0x11, - 0xb7, 0x1b, 0xd3, 0x82, 0xe4, 0x48, 0x13, 0xb7, 0x31, 0xc5, 0x48, 0x8f, 0x08, 0x75, 0x5f, 0x47, - 0xe7, 0x35, 0x3b, 0x22, 0xd4, 0xed, 0x1f, 0xe0, 0x64, 0x3d, 0xf4, 0x51, 0x98, 0x17, 0x72, 0x7b, - 0xf4, 0xe8, 0xd5, 0x73, 0x83, 0x90, 0x6e, 0xc1, 0x50, 0xb0, 0xd4, 0x8b, 0xfb, 0x7b, 0xf5, 0xf9, - 0x1b, 0x05, 0x75, 0x70, 0x61, 0x6b, 0xfd, 0xbf, 0x8d, 0xc0, 0xb4, 0x12, 0x0f, 0x18, 0xad, 0x54, - 0x31, 0x7b, 0xc4, 0x5f, 0x1c, 0x99, 0x3e, 0x56, 0x60, 0xa4, 0xdb, 0x1f, 0x94, 0xb4, 0x7b, 0x48, - 0x74, 0xd7, 0x28, 0xba, 0x6e, 0x7f, 0x80, 0x5e, 0x93, 0x96, 0x94, 0x72, 0xb6, 0x0e, 0xf9, 0x36, - 0x21, 0x65, 0x4d, 0x89, 0x76, 0xcc, 0x68, 0xe1, 0x8e, 0x71, 0x61, 0x22, 0x10, 0x66, 0x96, 0xb1, - 0x0a, 0x71, 0x20, 0x94, 0xa1, 0x16, 0x76, 0x15, 0xae, 0x9e, 0x45, 0x66, 0x97, 0x88, 0x08, 0x15, - 0xfb, 0x06, 0xec, 0xd5, 0x23, 0xd3, 0x3c, 0x27, 0xb9, 0xd8, 0x77, 0x9b, 0x95, 0x60, 0x01, 0xc9, - 0x1c, 0x26, 0x13, 0x87, 0x3a, 0x4c, 0x3e, 0x5b, 0x03, 0x94, 0xed, 0x06, 0x7a, 0x14, 0xc6, 0xd8, - 0xcb, 0x69, 0xc1, 0x35, 0xa4, 0x94, 0xce, 0x5e, 0xce, 0x62, 0x0e, 0x43, 0x1d, 0xf1, 0xa2, 0xbd, - 0xdc, 0x7c, 0x32, 0xa7, 0x17, 0x41, 0x4f, 0x79, 0xfe, 0x1e, 0x1d, 0xcf, 0x23, 0x85, 0xc7, 0xf3, - 0x6d, 0x98, 0xe8, 0xd9, 0x2e, 0xbb, 0x70, 0x2b, 0x67, 0x7e, 0xe2, 0xb7, 0xf2, 0x1c, 0x05, 0x8e, - 0x70, 0xe9, 0xdf, 0xa9, 0xd1, 0xb5, 0x1f, 0x0b, 0xa7, 0x77, 0x01, 0x8c, 0x41, 0xe8, 0x71, 0x29, - 0x47, 0x6c, 0x81, 0x1f, 0x2b, 0x39, 0xcd, 0x12, 0xeb, 0xa2, 0xc4, 0xc8, 0x6f, 0xcb, 0xe3, 0xdf, - 0x58, 0xa1, 0x46, 0x69, 0x87, 0x76, 0x8f, 0xbc, 0x6e, 0xbb, 0x96, 0x77, 0x47, 0x8c, 0x6f, 0x65, - 0xda, 0xb7, 0x24, 0x46, 0x4e, 0x3b, 0xfe, 0x8d, 0x15, 0x6a, 0x94, 0xbb, 0x30, 0x45, 0xd7, 0x65, - 0x61, 0xda, 0x45, 0xe7, 0x3c, 0xc7, 0x89, 0x4e, 0xd0, 0x49, 0xce, 0x5d, 0x9a, 0x05, 0x75, 0x70, - 0x61, 0x6b, 0xfd, 0xcb, 0x1a, 0x9c, 0xcd, 0x1d, 0x0b, 0x74, 0x0d, 0x4e, 0xc5, 0x9e, 0x52, 0x2a, - 0xc7, 0x9f, 0x8c, 0x13, 0x04, 0xdc, 0x48, 0x57, 0xc0, 0xd9, 0x36, 0x68, 0x45, 0x8a, 0x3d, 0xea, - 0x89, 0x22, 0xdc, 0xac, 0x2e, 0x08, 0x54, 0x79, 0x87, 0x0e, 0xce, 0x6b, 0xa7, 0x7f, 0x3c, 0xd1, - 0xe1, 0x78, 0xc0, 0xe8, 0xfe, 0x58, 0x27, 0x5d, 0xf9, 0xca, 0x49, 0xee, 0x8f, 0x06, 0x2d, 0xc4, - 0x1c, 0x86, 0x1e, 0x51, 0x1f, 0x0f, 0x4a, 0xf6, 0x15, 0x3d, 0x20, 0xd4, 0x07, 0x00, 0xc2, 0x9f, - 0xd1, 0x76, 0xbb, 0xa8, 0x0b, 0x93, 0x86, 0x48, 0x4e, 0x28, 0x16, 0xdb, 0x8b, 0xe5, 0xd4, 0x6a, - 0x81, 0x84, 0xbb, 0xae, 0x47, 0xbf, 0xb0, 0x44, 0xae, 0xff, 0x7d, 0x0d, 0xce, 0xe5, 0x3f, 0x10, - 0x3e, 0x84, 0xa8, 0xd0, 0x83, 0x69, 0x3f, 0x6e, 0x26, 0x56, 0xe6, 0x0f, 0xab, 0x21, 0xf8, 0x94, - 0xb0, 0x35, 0x54, 0x8c, 0x6a, 0xfa, 0x5e, 0x10, 0xcd, 0x4e, 0x3a, 0x2a, 0x9f, 0xd4, 0x61, 0x94, - 0x9e, 0x60, 0x15, 0xbf, 0xfe, 0xb5, 0x1a, 0xc0, 0x2a, 0x09, 0xef, 0x78, 0xfe, 0x16, 0x1d, 0xa3, - 0xef, 0xab, 0x87, 0xea, 0x17, 0x61, 0xb4, 0xef, 0x59, 0x81, 0x60, 0x54, 0xec, 0x05, 0x39, 0x73, - 0xf3, 0x61, 0xa5, 0xa8, 0x0e, 0x63, 0xec, 0x5e, 0x41, 0x1c, 0x22, 0x4c, 0xf6, 0xa7, 0x92, 0x5b, - 0x80, 0x79, 0x39, 0xcf, 0x41, 0xc3, 0x1e, 0x86, 0x04, 0x42, 0x9b, 0x11, 0x39, 0x68, 0x78, 0x19, - 0x96, 0x50, 0xf4, 0x3c, 0x80, 0xdd, 0xbf, 0x6a, 0xf4, 0x6c, 0x87, 0xca, 0x91, 0xe3, 0x32, 0xcb, - 0x21, 0xb4, 0xd7, 0xa2, 0xd2, 0x7b, 0x7b, 0xf5, 0x49, 0xf1, 0x6b, 0x17, 0x2b, 0xb5, 0xf5, 0xcf, - 0x8c, 0x42, 0x22, 0x89, 0x67, 0x6c, 0xba, 0x19, 0x7d, 0x40, 0xa6, 0x9b, 0x8f, 0xc2, 0xbc, 0xe3, - 0x19, 0x56, 0xc3, 0x70, 0xe8, 0x96, 0xf1, 0x3b, 0x7c, 0x2e, 0x0d, 0xb7, 0x2b, 0x43, 0xfb, 0x30, - 0xf6, 0xb1, 0x5c, 0x50, 0x07, 0x17, 0xb6, 0x46, 0x03, 0x25, 0x77, 0x28, 0x95, 0xc5, 0x56, 0x2a, - 0x27, 0x39, 0x5d, 0x50, 0x5f, 0x14, 0x49, 0x69, 0x20, 0x95, 0x5f, 0xf4, 0xe7, 0x35, 0x38, 0x4b, - 0x76, 0x42, 0xe2, 0xbb, 0x86, 0x73, 0xcb, 0x37, 0x36, 0x36, 0x6c, 0x33, 0xe1, 0x84, 0xb9, 0xb6, - 0xbf, 0x57, 0x3f, 0xbb, 0x94, 0x57, 0xe1, 0xde, 0x5e, 0xfd, 0xe9, 0x6c, 0x16, 0xdf, 0xe8, 0xfd, - 0x50, 0x6e, 0x13, 0xb6, 0x94, 0xf3, 0xc9, 0x9d, 0x7f, 0x0e, 0xa6, 0x8f, 0xf0, 0x1a, 0x22, 0xf1, - 0x60, 0xfb, 0x9f, 0xd5, 0x60, 0x86, 0xae, 0xbe, 0x65, 0xcf, 0x34, 0x9c, 0xd6, 0x6a, 0xe7, 0x08, - 0x29, 0x70, 0xd1, 0x32, 0x9c, 0xd9, 0xf0, 0x7c, 0x93, 0xdc, 0x6a, 0xae, 0xdd, 0xf2, 0xc4, 0xb5, - 0x46, 0x6b, 0xb5, 0x23, 0x78, 0x2a, 0x53, 0xcf, 0xae, 0xe6, 0xc0, 0x71, 0x6e, 0x2b, 0x74, 0x13, - 0xce, 0xc6, 0xe5, 0xb7, 0xfb, 0xdc, 0x61, 0x83, 0xa2, 0x1b, 0x89, 0x1d, 0x4e, 0xae, 0xe6, 0x55, - 0xc0, 0xf9, 0xed, 0x90, 0x01, 0x17, 0x44, 0x44, 0x88, 0xab, 0x9e, 0x7f, 0xc7, 0xf0, 0xad, 0x24, - 0xda, 0xd1, 0xd8, 0xe0, 0xdb, 0x2a, 0xae, 0x86, 0x87, 0xe1, 0xd0, 0x7f, 0x7d, 0x1c, 0x94, 0xb7, - 0x6f, 0x47, 0x48, 0x5c, 0xf2, 0x5b, 0x1a, 0x9c, 0x31, 0x1d, 0x9b, 0xb8, 0x61, 0xea, 0x81, 0x13, - 0x67, 0x4a, 0xaf, 0x95, 0x7b, 0x95, 0xd7, 0x27, 0x6e, 0xbb, 0x25, 0x1c, 0x5c, 0x9a, 0x39, 0xd8, - 0x85, 0x13, 0x50, 0x0e, 0x04, 0xe7, 0xf6, 0x86, 0x7d, 0x10, 0x2b, 0x6f, 0xb7, 0xd4, 0x97, 0xec, - 0x4d, 0x51, 0x86, 0x25, 0x14, 0x3d, 0x09, 0xd3, 0x5d, 0xdf, 0x1b, 0xf4, 0x83, 0x26, 0x73, 0xae, - 0xe5, 0xbc, 0x8d, 0x09, 0x72, 0xd7, 0xe2, 0x62, 0xac, 0xd6, 0xa1, 0x62, 0x29, 0xff, 0xb9, 0xe6, - 0x93, 0x0d, 0x7b, 0x47, 0xf0, 0x3a, 0x26, 0x96, 0x5e, 0x53, 0xca, 0x71, 0xa2, 0x16, 0xfa, 0x10, - 0x4c, 0xd9, 0x41, 0x30, 0x20, 0xfe, 0x6d, 0xbc, 0x2c, 0x82, 0x95, 0xb3, 0x7b, 0x92, 0x76, 0x54, - 0x88, 0x63, 0x38, 0xfa, 0x65, 0x0d, 0xe6, 0x7c, 0xf2, 0xd6, 0xc0, 0xf6, 0x89, 0xc5, 0x88, 0x06, - 0xe2, 0x05, 0x62, 0xa7, 0xe2, 0xb3, 0xc7, 0x05, 0x9c, 0xc0, 0xca, 0xf9, 0x84, 0xb4, 0x89, 0x25, - 0x81, 0x38, 0xd5, 0x05, 0x3a, 0x56, 0x81, 0xdd, 0x75, 0x6d, 0xb7, 0xbb, 0xe8, 0x74, 0x83, 0xf9, - 0x49, 0xc6, 0xfb, 0xb8, 0xd0, 0x1b, 0x17, 0x63, 0xb5, 0x0e, 0xd5, 0x08, 0x07, 0x01, 0xdd, 0xf9, - 0x3d, 0xc2, 0x07, 0x78, 0x2a, 0x36, 0x1a, 0xde, 0x56, 0x01, 0x38, 0x59, 0x0f, 0x3d, 0x0f, 0x73, - 0x51, 0x81, 0x18, 0x66, 0xe0, 0x51, 0xa6, 0x68, 0x3f, 0x6f, 0x27, 0x20, 0x38, 0x55, 0xf3, 0xfc, - 0x22, 0x9c, 0xce, 0xf9, 0xcc, 0x23, 0xb1, 0x97, 0x2f, 0xd5, 0xe0, 0xfd, 0x07, 0x2e, 0x4b, 0xf4, - 0xeb, 0x1a, 0x4c, 0x93, 0x9d, 0xd0, 0x37, 0xa4, 0x0f, 0x3e, 0x9d, 0xa3, 0xee, 0x83, 0xd9, 0x04, - 0x0b, 0x4b, 0x31, 0x25, 0x3e, 0x6f, 0x52, 0xda, 0x50, 0x20, 0x58, 0xed, 0x10, 0xd5, 0xb2, 0x78, - 0x14, 0x32, 0xd5, 0xb8, 0x2e, 0x32, 0x41, 0x0a, 0xc8, 0xf9, 0x97, 0xe0, 0x64, 0x1a, 0xf3, 0x51, - 0x39, 0xf1, 0xc4, 0x9a, 0xef, 0x51, 0x41, 0xe8, 0x18, 0x42, 0x4f, 0xad, 0x27, 0x02, 0xeb, 0x96, - 0x7b, 0xd6, 0x2c, 0x7a, 0x5b, 0x18, 0xd8, 0xfb, 0xcd, 0x54, 0x60, 0xef, 0x46, 0x25, 0x2a, 0xc3, - 0x23, 0x79, 0x7f, 0x4b, 0x83, 0x69, 0x51, 0xf3, 0x18, 0x62, 0x53, 0x19, 0xc9, 0xd8, 0x54, 0x2f, - 0x54, 0xf9, 0xb0, 0x82, 0xa8, 0x54, 0xef, 0x6a, 0x30, 0x2b, 0x6a, 0xac, 0x90, 0xde, 0x3a, 0xf1, - 0xd1, 0x55, 0x98, 0x08, 0x06, 0x6c, 0x2e, 0xc5, 0x17, 0x5d, 0x50, 0xa5, 0x6b, 0x7f, 0xdd, 0x30, - 0x59, 0x46, 0x53, 0x5e, 0x45, 0x09, 0x97, 0xcd, 0x0b, 0x70, 0xd4, 0x98, 0xca, 0xca, 0xbe, 0xe7, - 0x64, 0x02, 0xda, 0x60, 0xcf, 0x21, 0x98, 0x41, 0xa8, 0x88, 0x4a, 0xff, 0x46, 0x76, 0x27, 0x26, - 0xa2, 0x52, 0x70, 0x80, 0x79, 0xb9, 0xfe, 0xd9, 0x51, 0x39, 0xda, 0x2c, 0x9c, 0xed, 0x75, 0x98, - 0x32, 0x7d, 0x62, 0x84, 0xc4, 0x6a, 0xec, 0x1e, 0xa6, 0x73, 0x8c, 0x63, 0x37, 0xa3, 0x16, 0x38, - 0x6e, 0x4c, 0x79, 0xa3, 0x7a, 0xa5, 0x51, 0x8b, 0xcf, 0x91, 0xc2, 0xeb, 0x8c, 0x17, 0x60, 0xcc, - 0xbb, 0xe3, 0x4a, 0x17, 0x89, 0xa1, 0x84, 0xd9, 0xa7, 0xdc, 0xa4, 0xb5, 0x31, 0x6f, 0xa4, 0x06, - 0x74, 0x1a, 0x1d, 0x12, 0xd0, 0xa9, 0x07, 0x13, 0x3d, 0x36, 0x0d, 0xd5, 0x62, 0x27, 0x27, 0x66, - 0x54, 0xcd, 0xb2, 0xc1, 0x50, 0xe3, 0x88, 0x06, 0x3d, 0xe5, 0x28, 0x23, 0x0e, 0xfa, 0x86, 0x49, - 0xd4, 0x53, 0x6e, 0x35, 0x2a, 0xc4, 0x31, 0x1c, 0xdd, 0x4d, 0xc6, 0x0a, 0x9b, 0xa8, 0x60, 0x77, - 0x12, 0xfd, 0x53, 0xc2, 0x83, 0xf1, 0xc1, 0x2f, 0x8c, 0x17, 0xf6, 0xb9, 0x51, 0xb9, 0x4c, 0x45, - 0x38, 0xf4, 0xfc, 0x74, 0x9c, 0x5a, 0xa9, 0x74, 0x9c, 0x4f, 0x47, 0x19, 0x2e, 0x6b, 0x89, 0x94, - 0x30, 0x32, 0xc3, 0xe5, 0x8c, 0x20, 0x9d, 0xc8, 0x6a, 0x39, 0x80, 0xd3, 0x41, 0x68, 0x38, 0xa4, - 0x63, 0x0b, 0xcd, 0x3c, 0x08, 0x8d, 0x5e, 0xbf, 0x44, 0x66, 0x17, 0xee, 0xad, 0x9e, 0x45, 0x85, - 0xf3, 0xf0, 0xa3, 0xcf, 0x68, 0x30, 0xcf, 0xca, 0x17, 0x07, 0xa1, 0xc7, 0x43, 0xd4, 0xc6, 0xc4, - 0x8f, 0x7e, 0x73, 0xca, 0x74, 0xa1, 0x4e, 0x01, 0x3e, 0x5c, 0x48, 0x09, 0xbd, 0x0d, 0x67, 0x1d, - 0x23, 0x08, 0x17, 0xcd, 0xd0, 0xde, 0xb6, 0xc3, 0xdd, 0xb8, 0x0b, 0x47, 0xcf, 0x2b, 0xc9, 0x44, - 0xee, 0xe5, 0x3c, 0x64, 0x38, 0x9f, 0x86, 0xfe, 0xbf, 0x34, 0x40, 0xd9, 0x25, 0x84, 0x7a, 0x30, - 0x69, 0x45, 0xee, 0xe3, 0xda, 0xfd, 0x89, 0x64, 0x27, 0xb9, 0xb3, 0x74, 0x3b, 0x97, 0x24, 0x50, - 0x1f, 0xa6, 0xee, 0x6c, 0xda, 0x21, 0x71, 0xec, 0x20, 0xbc, 0x5f, 0x91, 0xf3, 0x64, 0x10, 0xa9, - 0xd7, 0x23, 0xcc, 0x38, 0x26, 0xa2, 0xff, 0xd2, 0x28, 0x4c, 0x1e, 0x21, 0xe7, 0xfb, 0x00, 0x90, - 0xa9, 0xa4, 0x9c, 0xa9, 0x62, 0x8f, 0x60, 0x3e, 0x0f, 0xcd, 0x0c, 0x32, 0x9c, 0x43, 0x00, 0xbd, - 0x0d, 0x67, 0x6c, 0x77, 0xc3, 0x37, 0x82, 0xd0, 0x1f, 0x30, 0x1b, 0x6f, 0x95, 0xc4, 0x2d, 0x4c, - 0x95, 0x68, 0xe7, 0xa0, 0xc3, 0xb9, 0x44, 0xd0, 0x06, 0x4c, 0xdc, 0xf1, 0xfc, 0x2d, 0xca, 0x40, - 0x47, 0x2b, 0xa4, 0xf1, 0x7b, 0x9d, 0xe1, 0x88, 0x39, 0x27, 0xff, 0x1d, 0xe0, 0x08, 0x39, 0x0f, - 0x9f, 0xc1, 0xff, 0x8f, 0xae, 0x3c, 0xc5, 0xd2, 0x6f, 0x55, 0x20, 0x18, 0x67, 0x85, 0xe4, 0xe1, - 0x33, 0x92, 0x85, 0x38, 0x4d, 0x51, 0xff, 0x7d, 0x0d, 0xc6, 0xf8, 0x1b, 0xcd, 0x07, 0x2f, 0xca, - 0xfd, 0x64, 0x42, 0x94, 0x2b, 0x97, 0x79, 0x82, 0xf5, 0xb5, 0x30, 0x25, 0xc2, 0x37, 0x35, 0x98, - 0x62, 0x35, 0x8e, 0x41, 0xb4, 0xfa, 0x44, 0x52, 0xb4, 0x7a, 0xbe, 0xfc, 0xe7, 0x14, 0x08, 0x56, - 0xbf, 0x3f, 0x22, 0x3e, 0x86, 0x49, 0x2e, 0x6d, 0x38, 0x2d, 0xbc, 0x2f, 0x97, 0xed, 0x0d, 0x42, - 0x97, 0x79, 0xcb, 0xd8, 0x0d, 0x44, 0x7c, 0x05, 0xfe, 0xfe, 0x26, 0x0b, 0xc6, 0x79, 0x6d, 0xd0, - 0x3f, 0xd7, 0xa8, 0x8c, 0x10, 0xfa, 0xb6, 0x59, 0x2d, 0xcf, 0x80, 0xec, 0xdc, 0xc2, 0x0a, 0xc7, - 0xc6, 0xb5, 0x94, 0xdb, 0xb1, 0xb0, 0xc0, 0x4a, 0xef, 0xed, 0xd5, 0xeb, 0x39, 0x36, 0xa4, 0x38, - 0x76, 0x79, 0x10, 0x7e, 0xfa, 0x3b, 0x43, 0xab, 0x30, 0xeb, 0x6d, 0xd4, 0x65, 0x74, 0x1d, 0xc6, - 0x02, 0xd3, 0xeb, 0x93, 0xa3, 0x64, 0x4f, 0x91, 0x23, 0xdc, 0xa1, 0x2d, 0x31, 0x47, 0x70, 0xfe, - 0x4d, 0x98, 0x51, 0x7b, 0x9e, 0xa3, 0x05, 0xb5, 0x54, 0x2d, 0xe8, 0xc8, 0xd7, 0x34, 0xaa, 0xd6, - 0xf4, 0xf5, 0x1a, 0x8c, 0xf3, 0x54, 0x9e, 0x87, 0xb0, 0x51, 0xbf, 0x19, 0x05, 0x88, 0xae, 0x92, - 0xa8, 0x58, 0x8d, 0xd5, 0xf7, 0x86, 0xe7, 0x2a, 0x83, 0xa0, 0xc6, 0x88, 0x46, 0x9e, 0x8c, 0xe1, - 0x38, 0x52, 0x21, 0xbd, 0x03, 0xff, 0xb4, 0x07, 0x1d, 0xb5, 0xf1, 0x5b, 0x1a, 0xcc, 0x24, 0xa2, - 0x62, 0xf6, 0x60, 0xc4, 0x97, 0xd9, 0x7f, 0xca, 0x1a, 0xf1, 0x23, 0xef, 0x9d, 0x0b, 0x43, 0x2a, - 0x61, 0x4a, 0x47, 0x06, 0xd0, 0xac, 0xdd, 0xa7, 0x00, 0x9a, 0xfa, 0xaf, 0x68, 0x70, 0x2e, 0xfa, - 0xa0, 0x64, 0xa8, 0x23, 0xf4, 0x38, 0x4c, 0x1a, 0x7d, 0x9b, 0x19, 0x98, 0x54, 0x1b, 0xdd, 0xe2, - 0x5a, 0x9b, 0x95, 0x61, 0x09, 0x45, 0x1f, 0x86, 0xc9, 0x68, 0xe9, 0x09, 0xf9, 0x53, 0xf2, 0x2d, - 0x79, 0x2d, 0x21, 0x6b, 0xa0, 0x0f, 0x28, 0x41, 0xbc, 0xc7, 0x62, 0x71, 0x41, 0x12, 0xe6, 0x97, - 0x98, 0xfa, 0x0f, 0xc3, 0x54, 0xa7, 0x73, 0x9d, 0x87, 0x80, 0x39, 0x82, 0xad, 0x55, 0x7f, 0x67, - 0x04, 0x66, 0xb9, 0xc1, 0xa1, 0x61, 0xbb, 0x96, 0xed, 0x76, 0x8f, 0xe1, 0x60, 0xb9, 0x05, 0x53, - 0xdc, 0xb6, 0x71, 0x40, 0xa6, 0xa6, 0x4e, 0x54, 0x29, 0x1d, 0x4d, 0x56, 0x02, 0x70, 0x8c, 0x08, - 0xdd, 0x80, 0xf1, 0xb7, 0x28, 0x87, 0x8b, 0x36, 0xc6, 0xa1, 0x18, 0x8d, 0x5c, 0xf4, 0x8c, 0x39, - 0x06, 0x58, 0xa0, 0x40, 0x21, 0x73, 0x2f, 0x63, 0x72, 0x57, 0xa5, 0xd0, 0x05, 0x89, 0xa1, 0x95, - 0x51, 0xfc, 0x67, 0x84, 0x9b, 0x1a, 0xfb, 0x85, 0x25, 0x25, 0x16, 0x0e, 0x3b, 0xd1, 0xe2, 0xbd, - 0x12, 0x0e, 0x3b, 0xd1, 0xe9, 0x82, 0xf3, 0xf1, 0x39, 0x38, 0x9b, 0x3b, 0x1a, 0x07, 0xcb, 0xb5, - 0xfa, 0x57, 0x6a, 0x30, 0xda, 0x21, 0xc4, 0x3a, 0x86, 0xb5, 0xf9, 0x89, 0x84, 0xd0, 0xf3, 0x62, - 0xf9, 0x80, 0xdc, 0x45, 0xc6, 0xab, 0x6e, 0xca, 0x78, 0xf5, 0x72, 0x79, 0x12, 0xc3, 0x2d, 0x57, - 0xbf, 0x51, 0x03, 0xa0, 0xd5, 0x1a, 0x86, 0xb9, 0xc5, 0xb9, 0x8e, 0x5c, 0xd1, 0x5a, 0x92, 0xeb, - 0x64, 0x57, 0xe2, 0x71, 0xde, 0x6a, 0xea, 0x30, 0xce, 0x53, 0x65, 0x8b, 0x9b, 0x00, 0xe0, 0x79, - 0x44, 0x69, 0x09, 0x16, 0x90, 0x24, 0xc7, 0x18, 0xbd, 0x4f, 0x1c, 0x43, 0xff, 0x8a, 0x06, 0x2c, - 0xe9, 0x5b, 0x6b, 0x95, 0x3d, 0xea, 0xb6, 0xf9, 0x15, 0x5d, 0x4b, 0x0d, 0x26, 0xca, 0x0c, 0xe1, - 0x6d, 0x15, 0x80, 0x93, 0xf5, 0x90, 0xab, 0x8c, 0x6b, 0xad, 0x82, 0x3e, 0x20, 0x3a, 0x72, 0x20, - 0x8f, 0xf8, 0x6e, 0x0d, 0x4e, 0xa4, 0xea, 0x1e, 0x42, 0x33, 0x7c, 0x30, 0x2c, 0x57, 0x49, 0xfe, - 0x31, 0x72, 0x0c, 0xc9, 0x3f, 0x64, 0x1e, 0x8e, 0xd1, 0x07, 0x9c, 0x87, 0xe3, 0x1b, 0x1a, 0x4c, - 0xd2, 0x31, 0x3e, 0x06, 0xf6, 0xfb, 0x13, 0x49, 0xf6, 0xfb, 0x5c, 0xe9, 0xb5, 0x53, 0xc0, 0x75, - 0xff, 0x71, 0x0d, 0x58, 0x3a, 0x00, 0xe1, 0xd3, 0xa0, 0xb8, 0x09, 0x68, 0x05, 0x6e, 0x02, 0x97, - 0x85, 0x97, 0x41, 0xca, 0x8c, 0xab, 0x78, 0x1a, 0x7c, 0x58, 0x71, 0x24, 0x18, 0x49, 0xb2, 0x92, - 0x1c, 0x67, 0x82, 0xb7, 0x61, 0x36, 0xd8, 0xf4, 0xbc, 0x50, 0x3e, 0xf4, 0x1f, 0xad, 0x60, 0xb4, - 0x67, 0x3e, 0xce, 0xd1, 0xb7, 0xf0, 0xdd, 0xd9, 0x51, 0x91, 0xe3, 0x24, 0xad, 0x94, 0x27, 0xc3, - 0xd8, 0x91, 0x3c, 0x19, 0xfe, 0x44, 0xe3, 0x43, 0x77, 0x84, 0x6d, 0x76, 0x8c, 0x6c, 0xf3, 0x83, - 0x29, 0xb6, 0xa9, 0xa4, 0x60, 0x4e, 0xb0, 0xce, 0x7a, 0xbc, 0x69, 0xa4, 0xcd, 0x3d, 0xb1, 0xd8, - 0xff, 0x89, 0xf8, 0x4c, 0x99, 0x22, 0xa2, 0x0f, 0xb3, 0x8e, 0x9a, 0x07, 0x50, 0xac, 0xfa, 0x52, - 0x29, 0x04, 0xe5, 0xab, 0x87, 0x44, 0x31, 0x4e, 0x12, 0xa0, 0xcc, 0x37, 0xfa, 0x3a, 0x3a, 0x98, - 0x81, 0xc8, 0x40, 0xc4, 0xa6, 0x77, 0x4d, 0x05, 0xe0, 0x64, 0x3d, 0xfd, 0x0b, 0x35, 0x78, 0x84, - 0xf7, 0x9d, 0xd9, 0x47, 0x5a, 0xa4, 0x4f, 0x5c, 0x8b, 0xb8, 0xe6, 0x2e, 0x13, 0xce, 0x2d, 0xaf, - 0x8b, 0x3e, 0xa3, 0xc1, 0x24, 0x71, 0xad, 0xbe, 0x67, 0xbb, 0xd1, 0xf5, 0xc6, 0x1b, 0x15, 0xb2, - 0x6c, 0x14, 0x90, 0x59, 0x12, 0x14, 0x44, 0xf4, 0x4e, 0xf1, 0x0b, 0x4b, 0xca, 0x68, 0x07, 0xc6, - 0xfa, 0xbe, 0xb7, 0x1e, 0x29, 0xa6, 0xaf, 0xdf, 0xff, 0x2e, 0xac, 0x51, 0xf4, 0x7c, 0x7a, 0xd9, - 0xbf, 0x98, 0x13, 0xd4, 0x31, 0x7c, 0xe0, 0x50, 0x5d, 0x3f, 0x8a, 0xd2, 0x70, 0x13, 0xf4, 0x83, - 0xfb, 0x72, 0x14, 0x84, 0xaf, 0xc2, 0x63, 0x0a, 0xc2, 0xa5, 0x1d, 0xaa, 0xc5, 0x34, 0x8d, 0xbe, - 0x61, 0x52, 0xad, 0x9c, 0xbd, 0x88, 0xe6, 0x76, 0xfb, 0x23, 0xa0, 0xfc, 0x85, 0x51, 0xa8, 0x2b, - 0x38, 0x13, 0xde, 0x3f, 0x11, 0x6b, 0xfa, 0x35, 0x0d, 0xa6, 0x0d, 0xd7, 0xf5, 0x42, 0x43, 0xcd, - 0xb1, 0x4a, 0xaa, 0x4e, 0x4e, 0x1e, 0xad, 0x85, 0xc5, 0x98, 0x4e, 0xea, 0x76, 0x58, 0x81, 0x60, - 0xb5, 0x3b, 0x43, 0xfc, 0x80, 0x6a, 0xc7, 0xea, 0x07, 0x84, 0x3e, 0x15, 0xf1, 0x10, 0xae, 0x59, - 0x7d, 0xec, 0x41, 0x0c, 0x10, 0xe3, 0x49, 0xf9, 0x36, 0x8f, 0xf3, 0x2f, 0xc1, 0xc9, 0xf4, 0xf0, - 0x1d, 0xc9, 0x0e, 0xf1, 0xbb, 0x23, 0x89, 0xf5, 0x55, 0x48, 0xfe, 0x10, 0xa6, 0x9e, 0x2f, 0xa6, - 0x96, 0x0c, 0x3f, 0xb6, 0xdf, 0x7c, 0x60, 0x23, 0x72, 0x7f, 0xd7, 0xcd, 0x31, 0xfb, 0x8f, 0x55, - 0x9d, 0xb7, 0x26, 0x9c, 0x53, 0xc6, 0x88, 0x5d, 0xaf, 0x36, 0x37, 0x89, 0xb9, 0x75, 0x24, 0x0b, - 0x47, 0x83, 0xea, 0x9d, 0x12, 0x89, 0x92, 0x83, 0xe9, 0x09, 0x98, 0xd8, 0xb6, 0x03, 0x3b, 0x0a, - 0xd5, 0xa1, 0xe0, 0x78, 0x8d, 0x17, 0xe3, 0x08, 0xae, 0xaf, 0xc0, 0x65, 0x05, 0x47, 0xee, 0xf3, - 0xe0, 0xa3, 0x74, 0xe9, 0x1f, 0x4e, 0x44, 0x47, 0xae, 0x78, 0x3b, 0xf5, 0x55, 0x0d, 0x1e, 0x26, - 0x45, 0x5c, 0x4f, 0x1c, 0x5b, 0x95, 0x77, 0x5d, 0x21, 0x5b, 0x15, 0x71, 0x10, 0x8b, 0xc0, 0xb8, - 0xb8, 0x6b, 0xe8, 0x6e, 0x22, 0x7d, 0x58, 0xad, 0x92, 0xa5, 0x24, 0x67, 0x8e, 0x86, 0x25, 0x0f, - 0x43, 0xbf, 0xa9, 0xc1, 0x19, 0x27, 0x67, 0xdf, 0x08, 0x01, 0xf3, 0xd6, 0x83, 0xd8, 0x93, 0xfc, - 0x7a, 0x2a, 0x0f, 0x82, 0x73, 0xfb, 0x82, 0xfe, 0x5e, 0xe1, 0xdb, 0xf5, 0xb1, 0x0a, 0x19, 0x72, - 0x0f, 0x5a, 0x8c, 0x25, 0x9e, 0xb1, 0x7f, 0x0a, 0xa6, 0xbd, 0x78, 0x83, 0x89, 0x78, 0x03, 0x37, - 0xaa, 0xf6, 0x4e, 0xd9, 0xb3, 0xfc, 0xc2, 0x5f, 0x29, 0xc0, 0x2a, 0x41, 0xf4, 0xae, 0x06, 0xc8, - 0xca, 0x48, 0x12, 0xc2, 0xe9, 0x00, 0xdf, 0x7f, 0x79, 0x89, 0xdf, 0x70, 0x66, 0xcb, 0x71, 0x4e, - 0x2f, 0xf4, 0x7f, 0x35, 0xc1, 0x15, 0x42, 0x76, 0xb5, 0x63, 0xc2, 0xf8, 0x3a, 0xb3, 0xa9, 0x88, - 0x8d, 0x59, 0xde, 0x82, 0xc3, 0x4d, 0x33, 0xdc, 0xe2, 0xc1, 0xff, 0xc7, 0x02, 0x35, 0x5a, 0x00, - 0x58, 0x77, 0x3c, 0x73, 0xab, 0xd9, 0x6e, 0xe1, 0x48, 0x1e, 0x66, 0x9b, 0xa1, 0x21, 0x4b, 0xb1, - 0x52, 0x03, 0x7d, 0x1c, 0x46, 0x2c, 0xa9, 0x86, 0xbf, 0x50, 0xc5, 0x02, 0x11, 0xbf, 0x1b, 0x68, - 0xad, 0x76, 0x30, 0xc5, 0x8a, 0x3c, 0x98, 0x74, 0x85, 0xce, 0x25, 0x36, 0x57, 0xf9, 0x4c, 0x75, - 0x52, 0x79, 0x93, 0x3a, 0x63, 0x54, 0x82, 0x25, 0x11, 0x4a, 0x50, 0x1a, 0x55, 0xc6, 0x2a, 0x12, - 0x94, 0x16, 0x95, 0x61, 0xf6, 0xae, 0x35, 0xd5, 0x3e, 0x32, 0x7e, 0x78, 0xfb, 0xc8, 0x6c, 0xa1, - 0x6d, 0x64, 0x03, 0xc6, 0x43, 0xc3, 0x76, 0xc3, 0xc8, 0x33, 0xf4, 0xa5, 0xd2, 0x1f, 0x70, 0x8b, - 0xa2, 0x89, 0xf5, 0x3b, 0xf6, 0x33, 0xc0, 0x02, 0x3b, 0x5d, 0x8d, 0xdb, 0x2c, 0xa1, 0xa7, 0x08, - 0x98, 0x5a, 0x7e, 0x35, 0xf2, 0xbc, 0xa0, 0x7c, 0x35, 0xf2, 0xff, 0xb1, 0x40, 0x8d, 0xb6, 0xa8, - 0xc6, 0x2f, 0x2e, 0xbd, 0xa7, 0x2a, 0xa7, 0x2a, 0x14, 0x37, 0xde, 0xe2, 0xf5, 0x81, 0xb8, 0xea, - 0x96, 0x04, 0x90, 0x09, 0x13, 0xc2, 0xc4, 0x26, 0x32, 0x44, 0xbc, 0x50, 0x25, 0x4b, 0x4f, 0x94, - 0xee, 0x96, 0x3f, 0x09, 0x8f, 0x30, 0xeb, 0x7f, 0x32, 0xca, 0xad, 0xa3, 0xc2, 0xb9, 0xc8, 0x67, - 0xc9, 0x81, 0xa2, 0xb7, 0xaf, 0x5a, 0x85, 0x19, 0x93, 0x0f, 0x63, 0x13, 0x49, 0x81, 0xa2, 0xb7, - 0xb3, 0x0a, 0x15, 0xd4, 0x85, 0xc9, 0x08, 0x59, 0x25, 0x73, 0x73, 0x94, 0x8f, 0x8d, 0x0f, 0xa8, - 0xcc, 0xce, 0x26, 0x91, 0xa3, 0x66, 0xde, 0x5b, 0x27, 0x25, 0xd2, 0xdf, 0xa1, 0xde, 0x39, 0xe5, - 0xbb, 0x5f, 0x8d, 0x96, 0x72, 0xbf, 0x7a, 0x11, 0x4e, 0x88, 0x8b, 0xee, 0xb6, 0x45, 0xd8, 0xd5, - 0xab, 0x70, 0xd2, 0x66, 0x4e, 0x10, 0xcd, 0x24, 0x08, 0xa7, 0xeb, 0xa2, 0x2f, 0x69, 0xf0, 0x18, - 0x77, 0x10, 0x6f, 0xd2, 0xa3, 0x8c, 0xa5, 0x5a, 0x25, 0x71, 0x6e, 0xd7, 0xd8, 0x35, 0x69, 0xfc, - 0xc8, 0xae, 0x49, 0x8f, 0xef, 0xef, 0xd5, 0x1f, 0x6b, 0x1e, 0x02, 0x37, 0x3e, 0x54, 0x0f, 0xf4, - 0x1b, 0x30, 0x25, 0xb7, 0x30, 0x7a, 0x44, 0x11, 0x7d, 0x63, 0x2e, 0x7b, 0x83, 0xec, 0x72, 0x39, - 0xb8, 0x9e, 0x90, 0x83, 0xb9, 0x2a, 0xff, 0x1a, 0x2d, 0x10, 0x22, 0xb1, 0xfe, 0x9f, 0x35, 0xbe, - 0x66, 0x45, 0x7a, 0x60, 0x03, 0xa6, 0x7b, 0x3c, 0xc8, 0x21, 0x7b, 0x99, 0xa8, 0x95, 0x7f, 0x13, - 0xb9, 0x12, 0xa3, 0xc1, 0x2a, 0x4e, 0xb4, 0x93, 0xcd, 0x61, 0x7d, 0xad, 0x22, 0x7f, 0x39, 0x74, - 0x2a, 0x6b, 0x94, 0x6d, 0x43, 0x65, 0xec, 0xc8, 0xa9, 0x32, 0x95, 0x34, 0x38, 0xe3, 0x58, 0x79, - 0x60, 0x9a, 0x47, 0xfd, 0xeb, 0x35, 0xc8, 0xcd, 0x9f, 0x83, 0x74, 0x18, 0xe7, 0xae, 0xfe, 0x6a, - 0x76, 0x6f, 0xfe, 0x0e, 0x00, 0x0b, 0x08, 0xba, 0xc9, 0x55, 0x2c, 0xd7, 0x62, 0xb1, 0x7a, 0xe2, - 0xa9, 0x57, 0x5f, 0x95, 0x2c, 0xe5, 0x55, 0xc0, 0xf9, 0xed, 0xd0, 0x36, 0xa0, 0x9e, 0xb1, 0x93, - 0xc6, 0x56, 0x21, 0xa5, 0xc2, 0x4a, 0x06, 0x1b, 0xce, 0xa1, 0x40, 0xf7, 0xa2, 0x61, 0x9a, 0xa4, - 0x1f, 0x12, 0x8b, 0x7f, 0x62, 0x64, 0x26, 0x65, 0x7b, 0x71, 0x31, 0x09, 0xc2, 0xe9, 0xba, 0xfa, - 0xef, 0xd6, 0x60, 0x8c, 0x59, 0x60, 0xdf, 0x23, 0x0e, 0x49, 0xac, 0xaf, 0x85, 0x97, 0x73, 0x9b, - 0xa9, 0xcb, 0xb9, 0x57, 0x2a, 0xd0, 0x18, 0x7e, 0x3b, 0xf7, 0x31, 0x38, 0xc7, 0xaa, 0x2d, 0x5a, - 0x4c, 0x1c, 0x0f, 0x88, 0xb5, 0x68, 0x59, 0xec, 0xbd, 0xdc, 0xc1, 0x36, 0x88, 0x47, 0x60, 0x64, - 0xe0, 0x3b, 0xe9, 0x57, 0x9e, 0xb7, 0xf1, 0x32, 0xa6, 0xe5, 0xfa, 0xe7, 0x34, 0x38, 0xc9, 0x70, - 0x37, 0x7d, 0xc2, 0x58, 0xa6, 0xe1, 0x04, 0xe8, 0x0e, 0x4c, 0xfa, 0x42, 0x11, 0x17, 0xb3, 0xb3, - 0x52, 0xfe, 0xdb, 0x14, 0xc4, 0x58, 0x20, 0x15, 0xa9, 0x97, 0xc4, 0x2f, 0x2c, 0x89, 0xe9, 0x7f, - 0x31, 0x0e, 0xf3, 0x45, 0x8d, 0xd0, 0x2f, 0x6b, 0x70, 0xce, 0x8c, 0x39, 0xe8, 0xe2, 0x20, 0xdc, - 0xf4, 0x7c, 0x3b, 0xb4, 0x49, 0x50, 0x49, 0xb6, 0x6e, 0x2e, 0xca, 0x6e, 0xb1, 0x58, 0x1a, 0xcd, - 0x5c, 0x12, 0xb8, 0x80, 0x34, 0xfa, 0x24, 0xc0, 0x56, 0x1c, 0xc0, 0xab, 0x56, 0x21, 0x27, 0x36, - 0xfb, 0x70, 0x25, 0xca, 0x57, 0xd4, 0x2b, 0x26, 0xc9, 0x2b, 0xe5, 0x0a, 0x3d, 0x96, 0x91, 0x3b, - 0xd8, 0xbc, 0x41, 0x76, 0xfb, 0x86, 0xed, 0x57, 0xca, 0xc8, 0xcd, 0xd7, 0x61, 0xe7, 0xba, 0xc0, - 0x95, 0xa4, 0xae, 0x94, 0x2b, 0xf4, 0xd0, 0xdf, 0xd0, 0x60, 0x96, 0x9f, 0xd8, 0xc2, 0x15, 0x49, - 0xb0, 0xa0, 0x9b, 0xe5, 0x7b, 0x70, 0x53, 0x45, 0x27, 0x3b, 0xc1, 0x8c, 0xfb, 0x49, 0x50, 0x92, - 0x30, 0xfa, 0xbc, 0x06, 0xa7, 0x92, 0x99, 0xcc, 0x6e, 0x90, 0x5d, 0xa1, 0x0e, 0x74, 0x2a, 0x0c, - 0x48, 0x1a, 0xa5, 0xec, 0x12, 0x13, 0x86, 0xb2, 0xe0, 0x6c, 0x27, 0x58, 0xd7, 0x48, 0x68, 0x5a, - 0x22, 0x43, 0xbe, 0xed, 0xb9, 0xb4, 0x6b, 0xe3, 0x55, 0xbb, 0xb6, 0x74, 0xab, 0xd9, 0x4a, 0xa0, - 0x4c, 0x76, 0x2d, 0x0b, 0xce, 0x76, 0x42, 0xff, 0xd3, 0x51, 0xb8, 0x34, 0x1c, 0x19, 0x7a, 0x39, - 0xf2, 0x7e, 0xe7, 0x2c, 0xe6, 0x89, 0xb4, 0xf7, 0xfb, 0x7c, 0xce, 0x56, 0x4d, 0x78, 0xc2, 0xfb, - 0x80, 0x1c, 0x23, 0x08, 0x9b, 0x5e, 0xaf, 0xef, 0x90, 0x48, 0xe0, 0x29, 0x13, 0xec, 0x69, 0x5f, - 0x84, 0x5e, 0x4a, 0x62, 0xc2, 0x39, 0xd8, 0x23, 0x9a, 0x3c, 0x67, 0xa9, 0xa4, 0x39, 0x52, 0x9e, - 0x66, 0x12, 0x13, 0xce, 0xc1, 0x8e, 0xde, 0xd1, 0xe0, 0x7c, 0xb2, 0xf8, 0xaa, 0xed, 0xda, 0xc1, - 0xa6, 0x08, 0x02, 0x76, 0x74, 0xe7, 0x7b, 0x16, 0x00, 0x7f, 0xb9, 0x10, 0x23, 0x1e, 0x42, 0x0d, - 0xfd, 0xa2, 0x06, 0x17, 0x52, 0xe3, 0x92, 0x08, 0x49, 0x76, 0x74, 0x3f, 0x7c, 0xf6, 0x46, 0x75, - 0xb9, 0x18, 0x25, 0x1e, 0x46, 0x4f, 0xff, 0xd9, 0x1a, 0x3c, 0x54, 0xc0, 0xdf, 0x0a, 0x26, 0x4b, - 0x7b, 0xa0, 0x93, 0xf5, 0x3d, 0x58, 0x94, 0xcc, 0x81, 0x99, 0x8d, 0xc1, 0x7b, 0xc5, 0x81, 0x99, - 0x75, 0xb6, 0xc0, 0x55, 0xe0, 0xf7, 0x34, 0x38, 0x95, 0x89, 0x21, 0x76, 0x08, 0x71, 0xe4, 0x18, - 0x2f, 0xbd, 0x3f, 0x90, 0xce, 0xcc, 0x3e, 0x9d, 0x9b, 0x95, 0xfd, 0x75, 0x98, 0x4d, 0x38, 0x0a, - 0xc8, 0xc8, 0x09, 0x5a, 0x6e, 0xe4, 0x04, 0x35, 0x30, 0x42, 0x6d, 0x58, 0x60, 0x04, 0xfd, 0x33, - 0x35, 0x38, 0x5f, 0x7c, 0xa6, 0xfd, 0xa5, 0x59, 0xf6, 0x72, 0xeb, 0x67, 0x85, 0x8b, 0xbf, 0x34, - 0x63, 0x20, 0xcf, 0xd9, 0x42, 0x79, 0xe2, 0xaf, 0xce, 0xd9, 0xbf, 0x3a, 0x67, 0xef, 0xc3, 0x39, - 0xfb, 0xd5, 0x13, 0xe2, 0x8c, 0x61, 0x97, 0x0f, 0x9f, 0x80, 0x71, 0x16, 0xf5, 0x24, 0x52, 0x90, - 0x7e, 0xb4, 0x7c, 0x38, 0x95, 0x80, 0x1b, 0x36, 0xf8, 0xff, 0x58, 0xa0, 0x45, 0x2d, 0x38, 0x69, - 0x3a, 0xde, 0xc0, 0x12, 0x79, 0xee, 0x56, 0x63, 0x1b, 0x8a, 0x0c, 0x61, 0xd7, 0x4c, 0xc1, 0x71, - 0xa6, 0x05, 0xea, 0xa8, 0xd7, 0x11, 0xcf, 0x96, 0x75, 0xd4, 0xe3, 0x61, 0xdb, 0xe5, 0x35, 0x84, - 0x0f, 0x40, 0xa2, 0xe3, 0x22, 0x7a, 0xed, 0xf5, 0x52, 0xc9, 0xf0, 0x7c, 0xf2, 0xd4, 0x89, 0x2c, - 0x0e, 0xb2, 0x28, 0xc0, 0x0a, 0x15, 0x14, 0xc0, 0xf4, 0xa6, 0xbd, 0x4e, 0x7c, 0x37, 0x4e, 0x95, - 0x5d, 0xd6, 0x2c, 0x70, 0x3d, 0xc6, 0xc3, 0xcd, 0x6e, 0x4a, 0x01, 0x56, 0xa9, 0xa0, 0x80, 0x2b, - 0xa0, 0xdc, 0x00, 0x5b, 0x29, 0xa1, 0x76, 0x6c, 0xda, 0x8d, 0xbf, 0x34, 0x2e, 0xc3, 0x0a, 0x19, - 0x4a, 0xd4, 0x95, 0x81, 0x8f, 0xc4, 0xbd, 0x5b, 0x39, 0xa2, 0x71, 0xfc, 0xa4, 0x98, 0x68, 0x5c, - 0x86, 0x15, 0x32, 0x74, 0x78, 0x7b, 0x71, 0xb8, 0x2b, 0x71, 0x85, 0xf1, 0x4a, 0xd5, 0xb8, 0x63, - 0xc2, 0xaa, 0x19, 0x17, 0x60, 0x95, 0x0a, 0xf2, 0x00, 0x7a, 0x32, 0x0c, 0x96, 0xb8, 0xcf, 0x28, - 0xf7, 0xa5, 0x71, 0x34, 0x2d, 0xae, 0x54, 0xc7, 0xbf, 0xb1, 0x42, 0x02, 0x6d, 0x29, 0xd7, 0x59, - 0x50, 0xc1, 0xd2, 0x7f, 0xa8, 0xab, 0xac, 0x8f, 0xc4, 0x36, 0xd2, 0x69, 0xb6, 0x6f, 0x2f, 0x28, - 0xf6, 0xd1, 0x7b, 0x7b, 0xf5, 0x19, 0xc6, 0x4c, 0x32, 0xf6, 0xd2, 0xd8, 0x9f, 0x70, 0x66, 0xa8, - 0x3f, 0xe1, 0x35, 0xaa, 0x94, 0x2b, 0x6e, 0xfc, 0x8c, 0x41, 0xcc, 0xb2, 0x26, 0x32, 0x70, 0x5a, - 0x27, 0x5d, 0x01, 0x67, 0xdb, 0x70, 0xa9, 0x8b, 0x58, 0xac, 0xfd, 0x9c, 0x2a, 0x75, 0xf1, 0x32, - 0x2c, 0xa1, 0xe8, 0x0e, 0xcc, 0x04, 0x8a, 0x83, 0xa2, 0xc8, 0xa1, 0x56, 0xe5, 0x06, 0x4a, 0x78, - 0x27, 0xb2, 0x98, 0x30, 0x6a, 0x09, 0x4e, 0x10, 0x42, 0x9f, 0x84, 0xa9, 0xc8, 0x62, 0x1e, 0xcc, - 0x9f, 0xac, 0xf0, 0xf4, 0x2e, 0x3f, 0xfa, 0x59, 0x6c, 0x02, 0x8f, 0x40, 0x01, 0x8e, 0x09, 0xa2, - 0xed, 0xe4, 0xf3, 0xfb, 0x53, 0xf7, 0xe7, 0xc1, 0xb1, 0x74, 0x1f, 0x2a, 0x7a, 0x7a, 0x8f, 0x9a, - 0x70, 0x8a, 0xec, 0xf4, 0xbd, 0x60, 0xe0, 0x13, 0x16, 0x7c, 0x91, 0xcd, 0x10, 0x8a, 0xaf, 0x8b, - 0x96, 0xd2, 0x40, 0x9c, 0xad, 0x8f, 0x3e, 0xab, 0xc1, 0x49, 0x9e, 0x84, 0x8e, 0x9e, 0x6b, 0x9e, - 0x4b, 0xdc, 0x30, 0x60, 0x59, 0xd6, 0xca, 0x3e, 0x8f, 0xeb, 0xa4, 0x90, 0xf1, 0xbc, 0x21, 0xe9, - 0x52, 0x9c, 0x21, 0x4a, 0x57, 0x8f, 0xfa, 0x66, 0x99, 0x65, 0x6b, 0x2b, 0xbb, 0x7a, 0xd4, 0x07, - 0xd1, 0x7c, 0xf5, 0xa8, 0x25, 0x38, 0x41, 0x48, 0xff, 0xd7, 0x1a, 0x80, 0x34, 0x05, 0x93, 0x63, - 0xb0, 0x8f, 0x93, 0x84, 0x7d, 0xbc, 0x59, 0xcd, 0x76, 0x4d, 0x0a, 0x5f, 0xed, 0xfe, 0x91, 0x06, - 0x73, 0x71, 0xb5, 0x63, 0xd0, 0x7c, 0xad, 0xa4, 0xe6, 0xfb, 0x72, 0xc5, 0x0f, 0x2b, 0x50, 0x7f, - 0xff, 0x5f, 0x4d, 0xfd, 0x2c, 0x26, 0x6c, 0xdd, 0x51, 0x6e, 0x68, 0xf9, 0x9d, 0x70, 0xbb, 0xd2, - 0x0d, 0xad, 0xfa, 0x16, 0x32, 0xfe, 0xe2, 0x9c, 0x1b, 0xdb, 0x9f, 0x4e, 0x48, 0x3a, 0x55, 0x1e, - 0xfd, 0x4a, 0xb1, 0x26, 0xa2, 0xcd, 0x87, 0xe0, 0x20, 0xb1, 0xc7, 0x57, 0x39, 0x1f, 0xf7, 0xfa, - 0x5c, 0x2c, 0xf9, 0xd0, 0x54, 0xf9, 0xe4, 0xa1, 0xfc, 0x4e, 0xff, 0xca, 0x1c, 0x4c, 0x2b, 0x57, - 0x27, 0xdf, 0x93, 0x3b, 0xf9, 0x01, 0x4c, 0x9b, 0x32, 0x38, 0x71, 0x34, 0xf2, 0x55, 0x89, 0x4a, - 0x96, 0x1b, 0xc7, 0x3d, 0x0e, 0xb0, 0x4a, 0x87, 0x0a, 0x08, 0x72, 0xa1, 0x8d, 0xdc, 0x0f, 0x57, - 0x80, 0x61, 0x8b, 0xeb, 0x19, 0x80, 0x48, 0xd8, 0x24, 0x96, 0x08, 0x57, 0x27, 0x93, 0x7b, 0xb4, - 0x83, 0xeb, 0x12, 0x86, 0x95, 0x7a, 0xe8, 0x6d, 0x98, 0x75, 0xd4, 0x58, 0xf7, 0x42, 0x14, 0x2e, - 0xf7, 0x8c, 0x23, 0x11, 0x35, 0x9f, 0x5f, 0x05, 0x24, 0x8a, 0x70, 0x92, 0x16, 0xda, 0x82, 0x29, - 0x27, 0x4a, 0x64, 0x21, 0xe4, 0xe1, 0x97, 0x4a, 0x13, 0x66, 0x58, 0xb8, 0xe7, 0x8e, 0xfc, 0x89, - 0x63, 0xfc, 0x74, 0xdd, 0xc9, 0x1f, 0xd5, 0xbc, 0x77, 0x62, 0x6a, 0x72, 0xdd, 0xc9, 0xa2, 0x00, - 0x2b, 0x54, 0x0a, 0xbc, 0x2b, 0x26, 0x4b, 0x79, 0x57, 0x0c, 0xe0, 0xb4, 0x4f, 0x42, 0x7f, 0xb7, - 0xb9, 0x6b, 0xb2, 0x84, 0x32, 0x7e, 0xc8, 0xf4, 0xd6, 0xa9, 0x72, 0x71, 0x6a, 0x70, 0x16, 0x15, - 0xce, 0xc3, 0x8f, 0x2e, 0xc2, 0x28, 0x15, 0x9e, 0x44, 0x1c, 0x38, 0x66, 0x63, 0xa3, 0xa2, 0x15, - 0x66, 0xa5, 0xe8, 0x23, 0x30, 0x1d, 0x12, 0x73, 0xd3, 0xb5, 0x4d, 0xc3, 0x69, 0xb7, 0x84, 0x64, - 0x1a, 0xcb, 0x22, 0x31, 0x08, 0xab, 0xf5, 0x50, 0x03, 0x46, 0x06, 0xb6, 0x25, 0x44, 0xd2, 0x1f, - 0x92, 0x57, 0x9d, 0xed, 0xd6, 0xbd, 0xbd, 0xfa, 0xfb, 0x63, 0x4f, 0x65, 0xf9, 0x25, 0x57, 0xfa, - 0x5b, 0xdd, 0x2b, 0xe1, 0x6e, 0x9f, 0x04, 0x0b, 0xb7, 0xdb, 0x2d, 0x4c, 0x1b, 0xe7, 0x79, 0x9b, - 0xcc, 0x1e, 0xc1, 0xdb, 0xe4, 0x5d, 0x0d, 0x4e, 0x1b, 0xe9, 0x5b, 0x5a, 0x12, 0xcc, 0xcf, 0x55, - 0xe0, 0xca, 0xf9, 0x57, 0xbf, 0x71, 0xb8, 0xe0, 0xc5, 0x2c, 0x3d, 0x9c, 0xd7, 0x09, 0xe4, 0x03, - 0xea, 0xd9, 0x5d, 0x99, 0xb6, 0x42, 0x4c, 0xf5, 0x89, 0x72, 0xd6, 0x9a, 0x95, 0x0c, 0x26, 0x9c, - 0x83, 0x1d, 0xed, 0xc0, 0xb4, 0x19, 0x1b, 0xae, 0x58, 0xf2, 0xe0, 0xd2, 0x42, 0x5d, 0xea, 0x62, - 0x58, 0xe4, 0xa5, 0x57, 0xcc, 0x62, 0x2a, 0x29, 0x69, 0x27, 0x52, 0x14, 0x67, 0x61, 0x2b, 0x61, - 0x9f, 0x7d, 0xaa, 0xbc, 0x9d, 0x28, 0x1f, 0x23, 0x1e, 0x42, 0x8d, 0x05, 0x84, 0x71, 0x92, 0xe9, - 0x65, 0x98, 0x94, 0x5c, 0xf6, 0x01, 0x68, 0x2a, 0x55, 0x0d, 0x5f, 0x9d, 0xa9, 0x42, 0x9c, 0xa6, - 0xa8, 0xff, 0x77, 0x0d, 0x32, 0x42, 0x30, 0x32, 0x61, 0x82, 0xe2, 0x6e, 0xad, 0x76, 0x84, 0x34, - 0xf6, 0x42, 0xc9, 0x13, 0x8c, 0xe1, 0xe0, 0x46, 0x76, 0xf1, 0x03, 0x47, 0x98, 0xa9, 0x5c, 0xed, - 0x2a, 0x01, 0x5e, 0x85, 0xd4, 0x59, 0x4e, 0x4a, 0x50, 0x23, 0xc5, 0x72, 0xb9, 0x5a, 0x2d, 0xc1, - 0x09, 0x42, 0xfa, 0x32, 0x40, 0xac, 0xbb, 0x54, 0x76, 0xaa, 0xfa, 0xd3, 0x31, 0x38, 0x5b, 0xd5, - 0xa1, 0x9f, 0xa5, 0x00, 0x61, 0x29, 0xda, 0x17, 0x37, 0x42, 0xe2, 0xdf, 0xbc, 0xb9, 0x22, 0xd3, - 0x57, 0x97, 0xcc, 0x41, 0x12, 0x27, 0xf9, 0xcf, 0x60, 0xc4, 0x05, 0x94, 0x98, 0xde, 0x26, 0xb2, - 0x93, 0x62, 0x2a, 0xe3, 0xb1, 0xdc, 0xd4, 0x3c, 0x6c, 0x04, 0xd7, 0xdb, 0xd2, 0x40, 0x9c, 0xad, - 0x9f, 0x46, 0xc2, 0xd3, 0xc5, 0x53, 0x19, 0x41, 0xcb, 0x22, 0xe1, 0x39, 0xe3, 0xb3, 0xf5, 0x55, - 0x24, 0x7c, 0xa6, 0xe8, 0xde, 0x18, 0xcb, 0x22, 0x91, 0x40, 0x9c, 0xad, 0x8f, 0x2c, 0xb8, 0xe8, - 0x13, 0xd3, 0xeb, 0xf5, 0x88, 0x6b, 0xf1, 0xfc, 0x5a, 0x86, 0xdf, 0xb5, 0xdd, 0xab, 0xbe, 0xc1, - 0x2a, 0x32, 0x31, 0x40, 0x6b, 0x5c, 0xde, 0xdf, 0xab, 0x5f, 0xc4, 0x43, 0xea, 0xe1, 0xa1, 0x58, - 0x50, 0x0f, 0x4e, 0x0c, 0x58, 0x44, 0x78, 0xbf, 0xed, 0x86, 0xc4, 0xdf, 0x36, 0x1c, 0x61, 0xfa, - 0x2a, 0x95, 0x61, 0xf4, 0x76, 0x12, 0x15, 0x4e, 0xe3, 0x46, 0xbb, 0xf4, 0x6c, 0x16, 0xdd, 0x51, - 0x48, 0x4e, 0x96, 0x4f, 0x92, 0x83, 0xb3, 0xe8, 0x70, 0x1e, 0x0d, 0xfd, 0xef, 0x68, 0x20, 0xdc, - 0x7a, 0xe9, 0x51, 0xad, 0xdc, 0xe9, 0x4d, 0xa6, 0xee, 0xf3, 0x2e, 0x8a, 0x67, 0xae, 0xb5, 0x18, - 0xaa, 0x3c, 0x71, 0xfd, 0xa0, 0x12, 0x8f, 0x64, 0x2a, 0x96, 0x6b, 0x38, 0x66, 0x25, 0xab, 0xc2, - 0x0f, 0xc0, 0x44, 0xdf, 0xb7, 0x7b, 0x86, 0xbf, 0x2b, 0x44, 0x4c, 0x26, 0x70, 0x09, 0x87, 0x04, - 0xba, 0x77, 0x04, 0x54, 0xff, 0x96, 0x06, 0xa2, 0x35, 0x4b, 0x00, 0x72, 0xa8, 0x3c, 0x10, 0x07, - 0x3a, 0xf7, 0x29, 0xf9, 0x2b, 0x46, 0x0a, 0xf3, 0x57, 0x3c, 0xa0, 0xb4, 0x0e, 0x5f, 0xd5, 0xe0, - 0x44, 0x32, 0x38, 0x4c, 0x80, 0x3e, 0x00, 0x13, 0x22, 0x8c, 0x9c, 0x08, 0x01, 0xc5, 0x5f, 0xb8, - 0x8b, 0x64, 0xef, 0x11, 0x2c, 0x69, 0x70, 0xaa, 0xa2, 0xf6, 0xe5, 0x07, 0xa9, 0x39, 0x40, 0x01, - 0xdb, 0x9b, 0x83, 0x71, 0x1e, 0x81, 0x8c, 0x1e, 0x6e, 0x39, 0x2f, 0x23, 0x97, 0x2b, 0x44, 0x3a, - 0x2b, 0xf3, 0x90, 0x4d, 0x8d, 0x7b, 0x5d, 0x1b, 0x1a, 0xf7, 0xba, 0xc3, 0x53, 0xe6, 0x54, 0xb9, - 0x6f, 0x68, 0xe2, 0xb6, 0xc8, 0x9b, 0x1b, 0xa5, 0xcb, 0x19, 0x24, 0xcc, 0xf0, 0xa3, 0x15, 0xe4, - 0x1c, 0x3e, 0x04, 0x8a, 0x31, 0x7e, 0x6e, 0x88, 0x21, 0x3e, 0x8e, 0xf0, 0x34, 0x56, 0xc1, 0xe3, - 0x56, 0x8c, 0xfa, 0x21, 0x22, 0x3c, 0xc9, 0xdd, 0x34, 0x5e, 0xb8, 0x9b, 0xba, 0x30, 0x21, 0xf6, - 0x83, 0xe0, 0x8e, 0x2f, 0x54, 0xc9, 0x3e, 0xa3, 0xc4, 0x27, 0xe5, 0x05, 0x38, 0xc2, 0x4e, 0xcf, - 0xdc, 0x9e, 0xb1, 0x63, 0xf7, 0x06, 0x3d, 0xc6, 0x13, 0xc7, 0xd4, 0xaa, 0xac, 0x18, 0x47, 0x70, - 0x56, 0x95, 0xbb, 0x2a, 0x33, 0xd5, 0x46, 0xad, 0x2a, 0x52, 0xbf, 0x47, 0x70, 0xf4, 0x06, 0x4c, - 0xf6, 0x8c, 0x9d, 0xce, 0xc0, 0xef, 0x12, 0x61, 0x7f, 0x2f, 0x36, 0xbd, 0x0d, 0x42, 0xdb, 0x59, - 0xa0, 0x4a, 0x79, 0xe8, 0x2f, 0xb4, 0xdd, 0xf0, 0xa6, 0xdf, 0x09, 0x7d, 0x99, 0xdc, 0x62, 0x45, - 0x60, 0xc1, 0x12, 0x1f, 0x72, 0x60, 0xae, 0x67, 0xec, 0xdc, 0x76, 0x0d, 0x99, 0xa1, 0x7a, 0xba, - 0x24, 0x05, 0xe6, 0x00, 0xb1, 0x92, 0xc0, 0x85, 0x53, 0xb8, 0x73, 0x7c, 0x2d, 0x66, 0x1e, 0x94, - 0xaf, 0xc5, 0xa2, 0x7c, 0xc0, 0x32, 0xcb, 0x96, 0xe1, 0xc3, 0x79, 0xef, 0x61, 0x86, 0xbf, 0x4d, - 0xf9, 0x84, 0x7c, 0x9b, 0x32, 0x57, 0xe1, 0xb2, 0x72, 0xc8, 0xbb, 0x94, 0x6d, 0x98, 0xb6, 0x8c, - 0xd0, 0xe0, 0xa5, 0xc1, 0xfc, 0x89, 0x0a, 0xf6, 0xc1, 0x96, 0xc4, 0xa3, 0x64, 0x3a, 0x8c, 0x71, - 0x63, 0x95, 0x10, 0xba, 0xc9, 0x33, 0x18, 0x3b, 0x24, 0x8c, 0xab, 0x30, 0x33, 0xf9, 0x49, 0x7e, - 0x11, 0x12, 0xe5, 0x1b, 0xce, 0x54, 0xc0, 0xf9, 0xed, 0xe2, 0x28, 0x0d, 0xa7, 0xf2, 0xa3, 0x34, - 0xa0, 0x5f, 0xcc, 0xb3, 0xa7, 0xa3, 0x0a, 0x8f, 0xf4, 0x38, 0x7f, 0x28, 0x6d, 0x55, 0xff, 0x47, - 0x1a, 0xcc, 0xf7, 0x0a, 0x52, 0x02, 0x0a, 0x3b, 0xff, 0xed, 0x2a, 0x3c, 0xa2, 0x30, 0xcf, 0x60, - 0xe3, 0xb1, 0xfd, 0xbd, 0xfa, 0x81, 0xd9, 0x08, 0x71, 0x61, 0xe7, 0xaa, 0x3e, 0x4a, 0xae, 0x12, - 0x0f, 0xef, 0xb7, 0x34, 0x38, 0x99, 0x3e, 0x0a, 0xd4, 0x9c, 0xcb, 0xda, 0x03, 0xce, 0xb9, 0xac, - 0xb8, 0x4f, 0xd5, 0x86, 0xb8, 0x4f, 0xbd, 0x08, 0xe7, 0xf2, 0x57, 0x07, 0x15, 0xce, 0x58, 0xa6, - 0x73, 0xa1, 0x10, 0xc5, 0xf9, 0x58, 0x68, 0x21, 0xe6, 0x30, 0xfd, 0x53, 0x90, 0x8e, 0x63, 0x8a, - 0xb6, 0x60, 0x2a, 0x08, 0x36, 0x79, 0x74, 0x3a, 0xf1, 0x95, 0x25, 0xdd, 0xf7, 0xa3, 0x18, 0x77, - 0xe2, 0xe5, 0x5d, 0xf4, 0x13, 0xc7, 0xf8, 0x1b, 0x1f, 0xfb, 0xc6, 0x77, 0x2f, 0xbd, 0xef, 0x0f, - 0xbe, 0x7b, 0xe9, 0x7d, 0xdf, 0xfe, 0xee, 0xa5, 0xf7, 0xfd, 0xcc, 0xfe, 0x25, 0xed, 0x1b, 0xfb, - 0x97, 0xb4, 0x3f, 0xd8, 0xbf, 0xa4, 0x7d, 0x7b, 0xff, 0x92, 0xf6, 0x1f, 0xf6, 0x2f, 0x69, 0x7f, - 0xeb, 0x3f, 0x5e, 0x7a, 0xdf, 0x1b, 0x4f, 0xc7, 0xe4, 0xaf, 0x44, 0x54, 0xe3, 0x7f, 0xfa, 0x5b, - 0xdd, 0x2b, 0x94, 0x7c, 0xf4, 0x04, 0x9e, 0x93, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xcf, - 0x73, 0x5b, 0x75, 0x3b, 0xde, 0x00, 0x00, + 0x75, 0x98, 0x7a, 0xf8, 0x35, 0x7c, 0xfc, 0x58, 0x6e, 0xed, 0xc7, 0xf1, 0xf6, 0xf6, 0x76, 0x56, + 0x7d, 0x27, 0xf9, 0x2e, 0x92, 0xb9, 0xbe, 0x0f, 0xd9, 0xba, 0xf5, 0xdd, 0xe9, 0x38, 0x33, 0xdc, + 0xdd, 0xd1, 0x92, 0x5c, 0x5e, 0x0d, 0x79, 0x77, 0x3a, 0x19, 0x3a, 0x35, 0xbb, 0x8b, 0xc3, 0x3e, + 0xf6, 0x74, 0xcf, 0x75, 0xf7, 0xf0, 0x63, 0xef, 0x2c, 0xd9, 0x8a, 0x6c, 0x45, 0x12, 0x2c, 0x27, + 0x10, 0x02, 0x09, 0x92, 0x20, 0x5b, 0x86, 0x13, 0x28, 0x48, 0x1c, 0x07, 0x02, 0xac, 0x24, 0x4e, + 0x90, 0x1f, 0xca, 0x0f, 0x0b, 0x72, 0xa0, 0x18, 0x8e, 0x13, 0x28, 0x46, 0x42, 0x45, 0xb4, 0x13, + 0x3b, 0x41, 0x82, 0x24, 0x08, 0xf2, 0x23, 0x8b, 0xc4, 0x08, 0xea, 0xa3, 0xbb, 0xab, 0xbf, 0x86, + 0x64, 0x37, 0x97, 0xd2, 0xc1, 0xfa, 0x45, 0x4e, 0xbd, 0xaa, 0xf7, 0xaa, 0xeb, 0xe3, 0xd5, 0x7b, + 0xaf, 0x5e, 0xbd, 0x07, 0x8d, 0x8e, 0xe9, 0x6f, 0xf6, 0xd7, 0xe7, 0x74, 0xa7, 0x7b, 0xad, 0xa3, + 0xb9, 0x06, 0xb1, 0x89, 0x1b, 0xfd, 0xd3, 0xdb, 0xea, 0x5c, 0xd3, 0x7a, 0xa6, 0x77, 0x4d, 0x77, + 0x5c, 0x72, 0x6d, 0xfb, 0x09, 0xcd, 0xea, 0x6d, 0x6a, 0x4f, 0x5c, 0xeb, 0x50, 0xa0, 0xe6, 0x13, + 0x63, 0xae, 0xe7, 0x3a, 0xbe, 0x83, 0x9e, 0x8a, 0x90, 0xcc, 0x05, 0x6d, 0xa3, 0x7f, 0x7a, 0x5b, + 0x9d, 0x39, 0x8a, 0x64, 0x8e, 0x22, 0x99, 0x0b, 0x90, 0x5c, 0xaa, 0x1f, 0x8b, 0xf2, 0x3a, 0xf1, + 0xd3, 0x84, 0x2f, 0xfd, 0xa4, 0x8c, 0xc3, 0xe9, 0x38, 0xd7, 0x58, 0xf1, 0x7a, 0x7f, 0x83, 0xfd, + 0x62, 0x3f, 0xd8, 0x7f, 0xa2, 0xfa, 0xe3, 0x5b, 0xef, 0xf7, 0xe6, 0x4c, 0x87, 0x22, 0xbe, 0xa6, + 0xf5, 0x7d, 0xc7, 0xd3, 0x35, 0xcb, 0xb4, 0x3b, 0xd7, 0xb6, 0xd3, 0x98, 0x55, 0xa9, 0xaa, 0xe8, + 0xc2, 0xc0, 0x3a, 0xee, 0xba, 0xa6, 0x67, 0xd5, 0x79, 0x3a, 0xaa, 0xd3, 0xd5, 0xf4, 0x4d, 0xd3, + 0x26, 0xee, 0x5e, 0xf0, 0x71, 0xd7, 0x5c, 0xe2, 0x39, 0x7d, 0x57, 0x27, 0xc7, 0x6a, 0xe5, 0x5d, + 0xeb, 0x12, 0x5f, 0xcb, 0xa2, 0x75, 0x2d, 0xaf, 0x95, 0xdb, 0xb7, 0x7d, 0xb3, 0x9b, 0x26, 0xf3, + 0xd3, 0x87, 0x35, 0xf0, 0xf4, 0x4d, 0xd2, 0xd5, 0x52, 0xed, 0x9e, 0xca, 0x6b, 0xd7, 0xf7, 0x4d, + 0xeb, 0x9a, 0x69, 0xfb, 0x9e, 0xef, 0x26, 0x1b, 0xa9, 0x4f, 0xc2, 0xc8, 0xbc, 0x61, 0x38, 0x36, + 0x7a, 0x1c, 0xc6, 0x88, 0xad, 0xad, 0x5b, 0xc4, 0x98, 0x55, 0xae, 0x2a, 0x8f, 0x55, 0xeb, 0x67, + 0xbe, 0xbd, 0x5f, 0x7b, 0xc7, 0xc1, 0x7e, 0x6d, 0x6c, 0x81, 0x17, 0xe3, 0x00, 0xae, 0x7e, 0xa1, + 0x02, 0xa3, 0xac, 0x91, 0x87, 0x3e, 0xaf, 0xc0, 0xb9, 0xad, 0xfe, 0x3a, 0x71, 0x6d, 0xe2, 0x13, + 0xaf, 0xa9, 0x79, 0x9b, 0xeb, 0x8e, 0xe6, 0x72, 0x14, 0x13, 0x4f, 0xde, 0x9a, 0x2b, 0xb0, 0x04, + 0xe7, 0x6e, 0xa7, 0xf1, 0xd5, 0x1f, 0x38, 0xd8, 0xaf, 0x9d, 0xcb, 0x00, 0xe0, 0x2c, 0xea, 0x68, + 0x07, 0x26, 0xed, 0x8e, 0x69, 0xef, 0xb6, 0xec, 0x8e, 0x4b, 0x3c, 0x6f, 0xb6, 0xc2, 0x7a, 0x33, + 0x5f, 0xa8, 0x37, 0xcb, 0x12, 0xa2, 0xfa, 0xcc, 0xc1, 0x7e, 0x6d, 0x52, 0x2e, 0xc1, 0x31, 0x42, + 0xea, 0x5f, 0x28, 0x70, 0x66, 0xde, 0xe8, 0x9a, 0x9e, 0x67, 0x3a, 0xf6, 0x8a, 0xd5, 0xef, 0x98, + 0x36, 0xba, 0x0a, 0xc3, 0xb6, 0xd6, 0x25, 0x6c, 0x48, 0xc6, 0xeb, 0x93, 0x62, 0x54, 0x87, 0x97, + 0xb5, 0x2e, 0xc1, 0x0c, 0x82, 0x5e, 0x84, 0x51, 0xdd, 0xb1, 0x37, 0xcc, 0x8e, 0xe8, 0xe8, 0x4f, + 0xce, 0xf1, 0x99, 0x9c, 0x93, 0x67, 0x92, 0xf5, 0x4f, 0xac, 0x80, 0x39, 0xac, 0xed, 0x2c, 0xec, + 0xfa, 0xc4, 0xa6, 0x64, 0xea, 0x70, 0xb0, 0x5f, 0x1b, 0x6d, 0x30, 0x04, 0x58, 0x20, 0x42, 0x8f, + 0x41, 0xd5, 0x30, 0x3d, 0x3e, 0x9d, 0x43, 0x6c, 0x3a, 0x27, 0x0f, 0xf6, 0x6b, 0xd5, 0xa6, 0x28, + 0xc3, 0x21, 0x14, 0x2d, 0xc2, 0x79, 0x3a, 0x84, 0xbc, 0x5d, 0x9b, 0xe8, 0x2e, 0xf1, 0x69, 0xd7, + 0x66, 0x87, 0x59, 0x77, 0x67, 0x0f, 0xf6, 0x6b, 0xe7, 0x6f, 0x67, 0xc0, 0x71, 0x66, 0x2b, 0xf5, + 0x06, 0x54, 0xe7, 0x2d, 0xe2, 0xfa, 0xa6, 0xdd, 0x41, 0xd7, 0x61, 0x9a, 0x74, 0x35, 0xd3, 0xc2, + 0x44, 0x27, 0xe6, 0x36, 0x71, 0xbd, 0x59, 0xe5, 0xea, 0xd0, 0x63, 0xe3, 0x75, 0x74, 0xb0, 0x5f, + 0x9b, 0x5e, 0x88, 0x41, 0x70, 0xa2, 0xa6, 0xfa, 0x09, 0x05, 0x26, 0xe6, 0xfb, 0x86, 0xe9, 0xf3, + 0xef, 0x42, 0x1e, 0x4c, 0x68, 0xf4, 0xe7, 0x8a, 0x63, 0x99, 0xfa, 0x9e, 0x58, 0x5e, 0x2f, 0x14, + 0x9a, 0xd0, 0xf9, 0x08, 0x4f, 0xfd, 0xcc, 0xc1, 0x7e, 0x6d, 0x42, 0x2a, 0xc0, 0x32, 0x15, 0x75, + 0x13, 0x64, 0x18, 0xfa, 0x10, 0x4c, 0xf2, 0xef, 0x5d, 0xd2, 0x7a, 0x98, 0x6c, 0x88, 0x4e, 0x3c, + 0x22, 0x4d, 0x56, 0x40, 0x69, 0xee, 0xce, 0xfa, 0xeb, 0x44, 0xf7, 0x31, 0xd9, 0x20, 0x2e, 0xb1, + 0x75, 0xc2, 0xd7, 0x4d, 0x43, 0x6a, 0x8c, 0x63, 0xa8, 0xd4, 0xef, 0x2b, 0x30, 0x33, 0xbf, 0xad, + 0x99, 0x96, 0xb6, 0x6e, 0x5a, 0xa6, 0xbf, 0xf7, 0xaa, 0x63, 0x93, 0x23, 0x2c, 0x9c, 0x35, 0x78, + 0xa0, 0x6f, 0x6b, 0xbc, 0x9d, 0x45, 0x96, 0xf8, 0x52, 0x59, 0xdd, 0xeb, 0x11, 0xba, 0xe4, 0xe9, + 0x50, 0x3f, 0x74, 0xb0, 0x5f, 0x7b, 0x60, 0x2d, 0xbb, 0x0a, 0xce, 0x6b, 0x8b, 0x30, 0x5c, 0x94, + 0x40, 0x2f, 0x39, 0x56, 0xbf, 0x2b, 0xb0, 0x0e, 0x31, 0xac, 0x97, 0x0e, 0xf6, 0x6b, 0x17, 0xd7, + 0x32, 0x6b, 0xe0, 0x9c, 0x96, 0xea, 0x77, 0x2a, 0x30, 0x59, 0xd7, 0xf4, 0xad, 0x7e, 0xaf, 0xde, + 0xd7, 0xb7, 0x88, 0x8f, 0x3e, 0x0a, 0x55, 0xca, 0x31, 0x0d, 0xcd, 0xd7, 0xc4, 0x48, 0xfe, 0x54, + 0xee, 0xb2, 0x67, 0xb3, 0x48, 0x6b, 0x47, 0x63, 0xbb, 0x44, 0x7c, 0xad, 0x8e, 0xc4, 0x98, 0x40, + 0x54, 0x86, 0x43, 0xac, 0xa8, 0x03, 0xc3, 0x5e, 0x8f, 0xe8, 0x62, 0x53, 0x2d, 0x14, 0x5a, 0x2c, + 0x72, 0x97, 0xdb, 0x3d, 0xa2, 0x47, 0xd3, 0x40, 0x7f, 0x61, 0x46, 0x00, 0x39, 0x30, 0xea, 0xf9, + 0x9a, 0xdf, 0xf7, 0xd8, 0x56, 0x9b, 0x78, 0xf2, 0x66, 0x79, 0x52, 0x0c, 0x5d, 0x7d, 0x5a, 0x10, + 0x1b, 0xe5, 0xbf, 0xb1, 0x20, 0xa3, 0x7e, 0x4f, 0x81, 0x19, 0xb9, 0xfa, 0xa2, 0xe9, 0xf9, 0xe8, + 0xe7, 0x52, 0x03, 0x3a, 0x77, 0xb4, 0x01, 0xa5, 0xad, 0xd9, 0x70, 0xce, 0x08, 0x72, 0xd5, 0xa0, + 0x44, 0x1a, 0xcc, 0x0d, 0x18, 0x31, 0x7d, 0xd2, 0xe5, 0x0b, 0xab, 0x28, 0x2f, 0x95, 0xfb, 0x5c, + 0x9f, 0x12, 0xd4, 0x46, 0x5a, 0x14, 0x2f, 0xe6, 0xe8, 0xd5, 0x8f, 0xc2, 0x79, 0xb9, 0xd6, 0x8a, + 0xeb, 0x6c, 0x9b, 0x06, 0x71, 0xe9, 0x66, 0xf0, 0xf7, 0x7a, 0xa9, 0xcd, 0x40, 0x17, 0x17, 0x66, + 0x10, 0xf4, 0x6e, 0x18, 0x75, 0x49, 0xc7, 0x74, 0x6c, 0x36, 0xe1, 0xe3, 0xd1, 0xe0, 0x61, 0x56, + 0x8a, 0x05, 0x54, 0xfd, 0x2f, 0x95, 0xf8, 0xe0, 0xd1, 0x89, 0x44, 0x3b, 0x50, 0xed, 0x09, 0x52, + 0x62, 0xf0, 0x5a, 0xa5, 0xbf, 0x30, 0xe8, 0x7b, 0x34, 0xae, 0x41, 0x09, 0x0e, 0x89, 0x21, 0x13, + 0xa6, 0x83, 0xff, 0x1b, 0x25, 0xce, 0x00, 0xc6, 0x53, 0x57, 0x62, 0x88, 0x70, 0x02, 0x31, 0x5a, + 0x85, 0x71, 0x8f, 0x71, 0x6a, 0xca, 0xbc, 0x86, 0xf2, 0x99, 0x57, 0x3b, 0xa8, 0x24, 0x98, 0xd7, + 0x59, 0xd1, 0xfd, 0xf1, 0x10, 0x80, 0x23, 0x44, 0xe8, 0x32, 0x0c, 0x7b, 0x84, 0x18, 0xe2, 0xbc, + 0xa8, 0xb2, 0xad, 0x41, 0x88, 0x81, 0x59, 0xa9, 0xfa, 0x1b, 0xc3, 0x80, 0xd2, 0x0b, 0x5b, 0xfe, + 0x6a, 0x5e, 0x22, 0x06, 0xbd, 0xcc, 0x57, 0x8b, 0x3d, 0x92, 0x40, 0x8c, 0xde, 0x84, 0x29, 0x4b, + 0xf3, 0xfc, 0x3b, 0x3d, 0x2a, 0xf6, 0x04, 0xab, 0x63, 0xe2, 0xc9, 0x7a, 0xa1, 0xe9, 0x5d, 0x94, + 0x31, 0xd5, 0xcf, 0x1e, 0xec, 0xd7, 0xa6, 0x62, 0x45, 0x38, 0x4e, 0x0b, 0x6d, 0xc1, 0x38, 0x2d, + 0x58, 0x70, 0x5d, 0xc7, 0x15, 0x43, 0xfe, 0x7c, 0x61, 0xc2, 0x0c, 0x4b, 0x7d, 0x8a, 0xce, 0x44, + 0xf8, 0x13, 0x47, 0xf8, 0xd1, 0x07, 0x01, 0x39, 0xeb, 0x1e, 0x71, 0xb7, 0x89, 0x71, 0x93, 0x4b, + 0x79, 0xf4, 0x73, 0xe9, 0xbc, 0x0c, 0xd5, 0x2f, 0x89, 0x39, 0x44, 0x77, 0x52, 0x35, 0x70, 0x46, + 0x2b, 0xb4, 0x05, 0x28, 0x94, 0x14, 0xc3, 0x69, 0x9f, 0x1d, 0x39, 0xfa, 0xa2, 0xb9, 0x48, 0x89, + 0xdd, 0x4c, 0xa1, 0xc0, 0x19, 0x68, 0xd5, 0xdf, 0xab, 0xc0, 0x04, 0x5f, 0x24, 0x0b, 0xb6, 0xef, + 0xee, 0x9d, 0xc2, 0xd1, 0xb0, 0x11, 0x3b, 0x1a, 0x9a, 0x25, 0xb6, 0x3a, 0xeb, 0x71, 0xee, 0xc9, + 0x60, 0x27, 0x4e, 0x86, 0x1b, 0xa5, 0x29, 0x0d, 0x3e, 0x18, 0xfe, 0x8d, 0x02, 0x67, 0xa4, 0xda, + 0xa7, 0x70, 0x2e, 0x90, 0xf8, 0xb9, 0xf0, 0x42, 0xd9, 0x0f, 0xcc, 0x39, 0x16, 0xf4, 0xd8, 0x77, + 0x31, 0x96, 0xfd, 0x24, 0xc0, 0x3a, 0xe3, 0x29, 0xcb, 0x91, 0x90, 0x14, 0xce, 0x7a, 0x3d, 0x84, + 0x60, 0xa9, 0x56, 0xc8, 0xac, 0x2a, 0x99, 0xcc, 0xea, 0xcf, 0x86, 0xe0, 0x6c, 0x6a, 0xac, 0xd3, + 0x0c, 0x44, 0xf9, 0x61, 0x31, 0x90, 0xca, 0x0f, 0x85, 0x81, 0x0c, 0x15, 0x62, 0x20, 0x8f, 0x41, + 0x95, 0x8e, 0xa9, 0xa4, 0x4a, 0x30, 0x05, 0xa4, 0x2d, 0xca, 0x70, 0x08, 0x45, 0x2e, 0xa0, 0xae, + 0xd9, 0xe1, 0xcd, 0xda, 0xbe, 0xe6, 0xfa, 0xab, 0x66, 0x97, 0x08, 0x56, 0xf3, 0x57, 0x8e, 0xb6, + 0x52, 0x69, 0x0b, 0xce, 0x71, 0x96, 0x52, 0x98, 0x70, 0x06, 0x76, 0xf5, 0x0f, 0x87, 0x01, 0x1a, + 0xf3, 0xd8, 0xf1, 0x79, 0x67, 0x3f, 0x00, 0x23, 0xbd, 0x4d, 0xcd, 0x0b, 0x56, 0xd1, 0xe3, 0xc1, + 0x12, 0x5c, 0xa1, 0x85, 0xf7, 0xf6, 0x6b, 0xb3, 0x0d, 0x97, 0x18, 0xc4, 0xf6, 0x4d, 0xcd, 0xf2, + 0x82, 0x46, 0x0c, 0x86, 0x79, 0x3b, 0xfa, 0x0d, 0x74, 0x18, 0x1b, 0x4e, 0xb7, 0x67, 0x11, 0x0a, + 0x65, 0xdf, 0x50, 0x29, 0xf6, 0x0d, 0x8b, 0x29, 0x4c, 0x38, 0x03, 0x7b, 0x40, 0xb3, 0x65, 0x9b, + 0xbe, 0xa9, 0x85, 0x34, 0x87, 0x8a, 0xd3, 0x8c, 0x63, 0xc2, 0x19, 0xd8, 0xd1, 0x67, 0x14, 0xb8, + 0x14, 0x2f, 0xbe, 0x61, 0xda, 0xa6, 0xb7, 0x49, 0x0c, 0x46, 0x7c, 0xf8, 0xd8, 0xc4, 0xaf, 0x1c, + 0xec, 0xd7, 0x2e, 0x2d, 0xe6, 0x62, 0xc4, 0x03, 0xa8, 0xa1, 0x5f, 0x51, 0xe0, 0xa1, 0xc4, 0xb8, + 0xb8, 0x66, 0xa7, 0x43, 0x5c, 0xd1, 0x9b, 0xe3, 0x2f, 0xa1, 0xda, 0xc1, 0x7e, 0xed, 0xa1, 0xc5, + 0x7c, 0x94, 0x78, 0x10, 0x3d, 0xf5, 0x9f, 0x2b, 0x30, 0xd4, 0xc0, 0x2d, 0xf4, 0x9e, 0x98, 0xde, + 0xf6, 0x80, 0xac, 0xb7, 0xdd, 0xdb, 0xaf, 0x8d, 0x35, 0x70, 0x4b, 0x52, 0xe1, 0x3e, 0xa7, 0xc0, + 0x59, 0xdd, 0xb1, 0x7d, 0x8d, 0xf6, 0x0b, 0x73, 0x21, 0x27, 0x60, 0xa6, 0xc5, 0x54, 0x96, 0x46, + 0x02, 0x5b, 0xfd, 0x41, 0xd1, 0x83, 0xb3, 0x49, 0x88, 0x87, 0xd3, 0xa4, 0xd5, 0x7f, 0xab, 0xc0, + 0x64, 0xc3, 0x72, 0xfa, 0xc6, 0x8a, 0xeb, 0x6c, 0x98, 0x16, 0x79, 0x9b, 0x28, 0x6a, 0x72, 0x97, + 0xf3, 0x8e, 0x63, 0xa6, 0x37, 0xc9, 0x15, 0xdf, 0x2e, 0x7a, 0x93, 0xdc, 0xe7, 0x9c, 0x03, 0xf2, + 0xcb, 0x63, 0xf1, 0x4f, 0x63, 0x47, 0xe4, 0x63, 0x50, 0xd5, 0xb5, 0x7a, 0xdf, 0x36, 0xac, 0x50, + 0x71, 0xa2, 0xdd, 0x6c, 0xcc, 0xf3, 0x32, 0x1c, 0x42, 0xd1, 0x9b, 0x00, 0x91, 0x21, 0x4d, 0x4c, + 0xc4, 0xcd, 0x92, 0xd6, 0xbb, 0x36, 0xf1, 0x7d, 0xd3, 0xee, 0x78, 0xd1, 0xec, 0x47, 0x30, 0x2c, + 0x91, 0x43, 0x1f, 0x83, 0x29, 0x31, 0xcc, 0xad, 0xae, 0xd6, 0x11, 0x66, 0x86, 0xa2, 0x63, 0xb5, + 0x24, 0x61, 0xaa, 0x5f, 0x10, 0x94, 0xa7, 0xe4, 0x52, 0x0f, 0xc7, 0xc9, 0xa1, 0xbb, 0x30, 0xd9, + 0x95, 0x6d, 0x27, 0xc3, 0x25, 0x44, 0x19, 0xc9, 0x90, 0x52, 0x3f, 0x2f, 0xa8, 0x4f, 0xc6, 0xcc, + 0x2e, 0x31, 0x5a, 0x19, 0xfa, 0xdf, 0xc8, 0xfd, 0xd2, 0xff, 0x36, 0x60, 0x8c, 0xab, 0xc0, 0xde, + 0xec, 0x28, 0xfb, 0xc2, 0x9f, 0x2d, 0xf4, 0x85, 0x5c, 0x9d, 0x8e, 0xcc, 0xc3, 0xfc, 0xb7, 0x87, + 0x03, 0xe4, 0x68, 0x07, 0x26, 0xe9, 0xe1, 0xde, 0x26, 0x16, 0xd1, 0x7d, 0xc7, 0x9d, 0x1d, 0x2b, + 0x61, 0x7d, 0x6d, 0x4b, 0x88, 0xb8, 0x15, 0x4d, 0x2e, 0xc1, 0x31, 0x42, 0xa1, 0x8d, 0xa0, 0x9a, + 0x6b, 0x23, 0xd8, 0x86, 0x89, 0x6d, 0xc9, 0x9c, 0x35, 0xce, 0x86, 0xe1, 0x03, 0x85, 0x7a, 0x16, + 0x19, 0xb7, 0xea, 0xe7, 0x04, 0xa5, 0x09, 0xd9, 0x10, 0x26, 0x13, 0x52, 0xf7, 0xab, 0x70, 0xb6, + 0x61, 0xf5, 0x3d, 0x9f, 0xb8, 0xf3, 0xe2, 0x86, 0x83, 0xb8, 0xe8, 0x13, 0x0a, 0x5c, 0x64, 0xff, + 0x36, 0x9d, 0x1d, 0xbb, 0x49, 0x2c, 0x6d, 0x6f, 0x7e, 0x83, 0xd6, 0x30, 0x8c, 0xe3, 0x31, 0xa2, + 0x66, 0x5f, 0xc8, 0x93, 0xcc, 0x30, 0xd7, 0xce, 0xc4, 0x88, 0x73, 0x28, 0xa1, 0xcf, 0x2a, 0xf0, + 0x60, 0x06, 0xa8, 0x49, 0x2c, 0xe2, 0x07, 0x22, 0xcc, 0x71, 0xfb, 0xf1, 0xf0, 0xc1, 0x7e, 0xed, + 0xc1, 0x76, 0x1e, 0x52, 0x9c, 0x4f, 0x8f, 0x1e, 0x87, 0x97, 0x32, 0xa0, 0x37, 0x34, 0xd3, 0xea, + 0xbb, 0x81, 0x74, 0x73, 0xdc, 0xee, 0x30, 0x21, 0xa3, 0x9d, 0x8b, 0x15, 0x0f, 0xa0, 0x88, 0x3e, + 0x0e, 0x17, 0x42, 0xe8, 0x9a, 0x6d, 0x13, 0x62, 0xc4, 0x64, 0x9d, 0xe3, 0x76, 0xe5, 0xc1, 0x83, + 0xfd, 0xda, 0x85, 0x76, 0x16, 0x42, 0x9c, 0x4d, 0x07, 0x75, 0xe0, 0xe1, 0x08, 0xe0, 0x9b, 0x96, + 0x79, 0x97, 0x8b, 0x63, 0x9b, 0x2e, 0xf1, 0x36, 0x1d, 0xcb, 0x60, 0xfc, 0x42, 0xa9, 0xbf, 0xf3, + 0x60, 0xbf, 0xf6, 0x70, 0x7b, 0x50, 0x45, 0x3c, 0x18, 0x0f, 0x32, 0x60, 0xd2, 0xd3, 0x35, 0xbb, + 0x65, 0xfb, 0xc4, 0xdd, 0xd6, 0xac, 0xd9, 0xd1, 0x42, 0x1f, 0xc8, 0xf7, 0xa8, 0x84, 0x07, 0xc7, + 0xb0, 0xa2, 0xf7, 0x43, 0x95, 0xec, 0xf6, 0x34, 0xdb, 0x20, 0x9c, 0x31, 0x8c, 0xd7, 0x2f, 0xd3, + 0x23, 0x69, 0x41, 0x94, 0xdd, 0xdb, 0xaf, 0x4d, 0x06, 0xff, 0x2f, 0x39, 0x06, 0xc1, 0x61, 0x6d, + 0xf4, 0x16, 0x9c, 0xef, 0x6a, 0xbb, 0xcb, 0x8e, 0x41, 0x18, 0x9f, 0xf3, 0x02, 0x89, 0xb7, 0x5a, + 0xa8, 0x9f, 0xec, 0x62, 0x63, 0x29, 0x03, 0x1f, 0xce, 0xa4, 0x42, 0xa7, 0xa1, 0xab, 0xed, 0xde, + 0x74, 0x35, 0x9d, 0x6c, 0xf4, 0xad, 0x55, 0xe2, 0x76, 0x4d, 0x9b, 0x2b, 0x15, 0x44, 0x77, 0x6c, + 0x83, 0xf2, 0x12, 0xe5, 0xb1, 0x11, 0x3e, 0x0d, 0x4b, 0x83, 0x2a, 0xe2, 0xc1, 0x78, 0xd0, 0xd3, + 0x30, 0x69, 0x76, 0x6c, 0xc7, 0x25, 0xab, 0x9a, 0x69, 0xfb, 0xde, 0x2c, 0x30, 0x93, 0x3b, 0x1b, + 0xd6, 0x96, 0x54, 0x8e, 0x63, 0xb5, 0xd4, 0xfd, 0x21, 0x18, 0x6f, 0x38, 0xb6, 0x61, 0x32, 0x7d, + 0xe6, 0x89, 0x98, 0xb1, 0xf4, 0x61, 0x99, 0x11, 0xde, 0xdb, 0xaf, 0x4d, 0x85, 0x15, 0x25, 0xce, + 0xf8, 0x4c, 0x68, 0xa9, 0xe0, 0xba, 0xf1, 0x3b, 0xe3, 0x16, 0x86, 0x7b, 0xfb, 0xb5, 0x33, 0x61, + 0xb3, 0xb8, 0xd1, 0x01, 0x6d, 0x73, 0x45, 0x64, 0xd5, 0xd5, 0x6c, 0xcf, 0x2c, 0xa1, 0x88, 0x84, + 0x2a, 0xe6, 0x62, 0x0a, 0x1b, 0xce, 0xa0, 0x80, 0x5e, 0x87, 0x69, 0x5a, 0xba, 0xd6, 0x33, 0x34, + 0x9f, 0x14, 0xd4, 0x3f, 0x2e, 0x0a, 0x9a, 0xd3, 0x8b, 0x31, 0x4c, 0x38, 0x81, 0x99, 0x1b, 0x97, + 0x35, 0xcf, 0xb1, 0xd9, 0x76, 0x8b, 0x19, 0x97, 0x69, 0x29, 0x16, 0x50, 0xf4, 0x38, 0x8c, 0x75, + 0x89, 0xe7, 0x69, 0x1d, 0xc2, 0xf6, 0xcf, 0x78, 0x74, 0x4c, 0x2e, 0xf1, 0x62, 0x1c, 0xc0, 0xd1, + 0x7b, 0x61, 0x44, 0x77, 0x0c, 0xe2, 0xcd, 0x8e, 0xb1, 0x19, 0xa6, 0x6a, 0xd8, 0x48, 0x83, 0x16, + 0xdc, 0xdb, 0xaf, 0x8d, 0x33, 0x85, 0x9c, 0xfe, 0xc2, 0xbc, 0x92, 0xfa, 0x6b, 0x54, 0x74, 0x4d, + 0x08, 0xeb, 0x79, 0x37, 0x44, 0x7c, 0x5a, 0x99, 0x7a, 0x71, 0x7a, 0xe6, 0x65, 0xf5, 0x8b, 0x54, + 0x71, 0x70, 0x6c, 0xdf, 0x75, 0xac, 0x15, 0x4b, 0xb3, 0x09, 0xfa, 0x94, 0x02, 0x33, 0x9b, 0x66, + 0x67, 0x53, 0xbe, 0xd8, 0x12, 0x07, 0x5b, 0x31, 0x19, 0xff, 0x56, 0x02, 0x59, 0xfd, 0xfc, 0xc1, + 0x7e, 0x6d, 0x26, 0x59, 0x8a, 0x53, 0x44, 0xd5, 0x4f, 0x57, 0xe0, 0xbc, 0xe8, 0x9a, 0x45, 0x8f, + 0x9a, 0x9e, 0xe5, 0xec, 0x75, 0x89, 0x7d, 0x1a, 0x97, 0x50, 0x81, 0x4c, 0x52, 0xc9, 0x95, 0x49, + 0xba, 0xa9, 0x29, 0x1a, 0x2a, 0x32, 0x45, 0xe1, 0x4a, 0x3e, 0x64, 0x9a, 0xfe, 0x5c, 0x81, 0xd9, + 0xac, 0xb1, 0x38, 0x05, 0x5d, 0xc8, 0x8e, 0xeb, 0x42, 0xad, 0xc2, 0xea, 0x6d, 0xb2, 0xef, 0x39, + 0x3a, 0xd1, 0x9f, 0x57, 0xe0, 0x62, 0x54, 0xbd, 0x65, 0x7b, 0xbe, 0x66, 0x59, 0xdc, 0xe2, 0x73, + 0xff, 0x27, 0xfe, 0x8d, 0x98, 0x52, 0x7b, 0xa7, 0xe4, 0xb7, 0xca, 0x9d, 0xcf, 0xb5, 0x36, 0xef, + 0x25, 0xac, 0xcd, 0x2f, 0x9e, 0x24, 0xd1, 0xc1, 0x86, 0xe7, 0xff, 0xaa, 0xc0, 0xa5, 0xec, 0x86, + 0xa7, 0xb0, 0xae, 0x7a, 0xf1, 0x75, 0x75, 0xfb, 0x04, 0x3f, 0x3b, 0x67, 0x65, 0x7d, 0xa3, 0x92, + 0xf7, 0xb9, 0x4c, 0xef, 0xde, 0x80, 0x33, 0x54, 0x19, 0xf2, 0x7c, 0x61, 0x20, 0x3d, 0x9e, 0xb3, + 0x40, 0x60, 0x31, 0x3a, 0x83, 0xe3, 0x38, 0x70, 0x12, 0x29, 0x5a, 0x86, 0x31, 0xaa, 0x00, 0x51, + 0xfc, 0x95, 0xa3, 0xe3, 0x0f, 0x8f, 0xa4, 0x36, 0x6f, 0x8b, 0x03, 0x24, 0xe8, 0xe7, 0x60, 0xca, + 0x08, 0x37, 0xd5, 0x21, 0xb7, 0x84, 0x49, 0xac, 0xcc, 0x96, 0xdd, 0x94, 0x5b, 0xe3, 0x38, 0x32, + 0xf5, 0xff, 0x29, 0x70, 0x79, 0xd0, 0xe2, 0x42, 0x2e, 0x80, 0x1e, 0xc8, 0x18, 0xdc, 0x59, 0xa4, + 0xa8, 0xb5, 0x3b, 0x14, 0x55, 0xa2, 0x4d, 0x1a, 0x16, 0x79, 0x58, 0xa2, 0x92, 0x71, 0x13, 0x59, + 0xb9, 0x4f, 0x37, 0x91, 0xea, 0x7f, 0x53, 0x64, 0x76, 0x24, 0x4f, 0xee, 0xdb, 0x8e, 0x1d, 0xc9, + 0x9d, 0xcf, 0xb5, 0xb6, 0xfd, 0x51, 0x05, 0xae, 0x66, 0x37, 0x91, 0x4e, 0xe0, 0x17, 0x60, 0xb4, + 0xc7, 0x7d, 0x7a, 0x86, 0xd8, 0x09, 0xf9, 0x18, 0x65, 0x2e, 0xdc, 0xe1, 0xe6, 0xde, 0x7e, 0xed, + 0x52, 0x16, 0xb7, 0x17, 0xae, 0x3a, 0xa2, 0x1d, 0x32, 0x13, 0xe6, 0x06, 0x2e, 0x04, 0x3e, 0x75, + 0x44, 0xfe, 0xa2, 0xad, 0x13, 0xeb, 0xc8, 0x06, 0x86, 0x4f, 0x28, 0x30, 0x1d, 0x5b, 0xd3, 0xde, + 0xec, 0x08, 0x5b, 0xa5, 0xc5, 0x2e, 0x83, 0x62, 0xbb, 0x25, 0x3a, 0xc0, 0x63, 0xc5, 0x1e, 0x4e, + 0x50, 0x4c, 0xb0, 0x5a, 0x79, 0x58, 0xdf, 0x7e, 0xac, 0x56, 0xee, 0x7d, 0x0e, 0xab, 0xfd, 0x6a, + 0x25, 0xef, 0x73, 0x19, 0xab, 0xdd, 0x85, 0xf1, 0xc0, 0x5f, 0x33, 0x60, 0x19, 0x37, 0x4b, 0x77, + 0x8a, 0xe3, 0x8b, 0x1c, 0x1f, 0x82, 0x12, 0x0f, 0x47, 0xc4, 0xd0, 0x2f, 0x29, 0x00, 0xd1, 0xd4, + 0x88, 0x8d, 0xb5, 0x76, 0x82, 0x03, 0x22, 0xc9, 0x37, 0xd3, 0x74, 0x5f, 0x4b, 0xeb, 0x42, 0x22, + 0xac, 0xde, 0x1b, 0x02, 0x94, 0xee, 0x3c, 0x15, 0x3c, 0xb7, 0x4c, 0xdb, 0x48, 0xea, 0x06, 0xb7, + 0x4d, 0xdb, 0xc0, 0x0c, 0x72, 0x04, 0xd1, 0xf4, 0x39, 0x38, 0xd3, 0xb1, 0x9c, 0x75, 0xcd, 0xb2, + 0xf6, 0x84, 0x13, 0xa8, 0x70, 0x26, 0x3c, 0x47, 0x8f, 0xa7, 0x9b, 0x71, 0x10, 0x4e, 0xd6, 0x45, + 0x3d, 0x98, 0x71, 0xa9, 0x56, 0xab, 0x9b, 0x16, 0xd3, 0xa2, 0x9c, 0xbe, 0x5f, 0xd0, 0x6c, 0xc2, + 0x04, 0x7d, 0x9c, 0xc0, 0x85, 0x53, 0xd8, 0xd1, 0xbb, 0x60, 0xac, 0xe7, 0x9a, 0x5d, 0xcd, 0xdd, + 0x63, 0x7a, 0x5a, 0xb5, 0x3e, 0x41, 0xcf, 0xb9, 0x15, 0x5e, 0x84, 0x03, 0x18, 0xfa, 0x79, 0x18, + 0xb7, 0xcc, 0x0d, 0xa2, 0xef, 0xe9, 0x16, 0x11, 0x76, 0x8e, 0x95, 0x13, 0x5a, 0x34, 0x8b, 0x01, + 0x5e, 0x71, 0xcf, 0x1a, 0xfc, 0xc4, 0x11, 0x45, 0xd4, 0x82, 0x73, 0x3b, 0x8e, 0xbb, 0x45, 0x5c, + 0x8b, 0x78, 0x5e, 0xbb, 0xdf, 0xeb, 0x39, 0xae, 0x4f, 0x0c, 0x66, 0x0e, 0xa9, 0x72, 0x4f, 0xd7, + 0x97, 0xd3, 0x60, 0x9c, 0xd5, 0x46, 0xfd, 0x4c, 0x05, 0x1e, 0x1a, 0xd0, 0x09, 0x84, 0xe9, 0xf6, + 0x10, 0x83, 0x24, 0x96, 0xc2, 0xd3, 0x7c, 0x45, 0x8b, 0xc2, 0x7b, 0xfb, 0xb5, 0x47, 0x06, 0x20, + 0x68, 0xd3, 0xb5, 0x48, 0x3a, 0x7b, 0x38, 0x42, 0x83, 0x5a, 0x30, 0x6a, 0x44, 0xd6, 0xc1, 0xf1, + 0xfa, 0x13, 0x94, 0x65, 0x73, 0xfb, 0xdd, 0x51, 0xb1, 0x09, 0x04, 0x68, 0x11, 0xc6, 0xf8, 0xed, + 0x2c, 0x11, 0xec, 0xff, 0x49, 0xa6, 0x2a, 0xf3, 0xa2, 0xa3, 0x22, 0x0b, 0x50, 0xa8, 0xff, 0x47, + 0x81, 0xb1, 0x86, 0xe3, 0x92, 0xe6, 0x72, 0x1b, 0xdd, 0x85, 0x09, 0xc9, 0x97, 0x5c, 0x70, 0xc2, + 0xa2, 0x9c, 0x81, 0xa1, 0x9c, 0x8f, 0xd0, 0x05, 0x7e, 0xa3, 0x61, 0x01, 0x96, 0x89, 0x21, 0x97, + 0x0e, 0xfa, 0x8e, 0x6b, 0xfa, 0x94, 0x72, 0xa9, 0x4b, 0x2d, 0x4e, 0x19, 0x07, 0xc8, 0xf8, 0x9a, + 0x0a, 0x7f, 0xe2, 0x88, 0x8c, 0xba, 0x42, 0x99, 0x40, 0xb2, 0x9f, 0xe8, 0x3a, 0x0c, 0x77, 0x1d, + 0x23, 0x98, 0xf9, 0x77, 0x07, 0x5b, 0x7c, 0xc9, 0x31, 0xe8, 0xe8, 0x5e, 0x4c, 0xb7, 0x60, 0x36, + 0x37, 0xd6, 0x46, 0x5d, 0x86, 0x99, 0x24, 0x7d, 0x74, 0x1d, 0xa6, 0x75, 0xa7, 0xdb, 0x75, 0xec, + 0x76, 0x7f, 0x63, 0xc3, 0xdc, 0x25, 0x31, 0x97, 0xde, 0x46, 0x0c, 0x82, 0x13, 0x35, 0xd5, 0xaf, + 0x28, 0x30, 0x44, 0x67, 0x46, 0x85, 0x51, 0xc3, 0xe9, 0x6a, 0xa6, 0x2d, 0x7a, 0xc5, 0xdc, 0x97, + 0x9b, 0xac, 0x04, 0x0b, 0x08, 0x7a, 0x03, 0xc6, 0x03, 0xe1, 0xa9, 0x9c, 0x67, 0x49, 0x73, 0xb9, + 0x1d, 0xba, 0xe1, 0x85, 0xec, 0x3c, 0x28, 0xf1, 0x70, 0x44, 0x45, 0xd5, 0xe0, 0x6c, 0x73, 0xb9, + 0xdd, 0xb2, 0x75, 0xab, 0x6f, 0x90, 0x85, 0x5d, 0xf6, 0x87, 0xf2, 0x13, 0x93, 0x97, 0x88, 0x0f, + 0x65, 0xfc, 0x44, 0x54, 0xc2, 0x01, 0x8c, 0x56, 0x23, 0xbc, 0x85, 0xf0, 0xbb, 0x65, 0xd5, 0x04, + 0x12, 0x1c, 0xc0, 0xd4, 0x3f, 0xae, 0xc0, 0x84, 0xd4, 0x21, 0xd4, 0x85, 0x31, 0xfe, 0xbd, 0x81, + 0xfb, 0xdb, 0x8d, 0xa2, 0xdf, 0x18, 0xef, 0x36, 0x27, 0xcf, 0x87, 0xd4, 0xc3, 0x01, 0x0d, 0x99, + 0x39, 0x56, 0x06, 0x30, 0xc7, 0x39, 0x00, 0x2f, 0x72, 0x03, 0xe7, 0xdb, 0x92, 0x9d, 0x3f, 0x92, + 0xf3, 0xb7, 0x54, 0x03, 0x5d, 0x16, 0xc7, 0x88, 0xe4, 0x00, 0x28, 0x1d, 0x21, 0x1d, 0x18, 0xb9, + 0xeb, 0xd8, 0xc4, 0x13, 0xd7, 0x5a, 0x27, 0xf5, 0x85, 0xe3, 0x54, 0x4e, 0x78, 0x95, 0x22, 0xc6, + 0x1c, 0xbf, 0xfa, 0x35, 0x05, 0xa0, 0xa9, 0xf9, 0x1a, 0xbf, 0x83, 0x39, 0x82, 0xf3, 0xf4, 0xe5, + 0xd8, 0xf1, 0x57, 0x4d, 0x79, 0x93, 0x0e, 0x7b, 0xe6, 0xdd, 0xe0, 0xfb, 0x43, 0xd9, 0x9a, 0x63, + 0x6f, 0x9b, 0x77, 0x09, 0x66, 0x70, 0xf4, 0x1e, 0x18, 0x27, 0xb6, 0xee, 0xee, 0xf5, 0x7c, 0xe1, + 0x03, 0x59, 0xe5, 0x9b, 0x74, 0x21, 0x28, 0xc4, 0x11, 0x5c, 0x7d, 0x02, 0xe2, 0x1a, 0xd2, 0xe1, + 0xbd, 0x54, 0x7f, 0x30, 0x0c, 0x0f, 0x2e, 0xac, 0x36, 0x9a, 0x02, 0x9f, 0xe9, 0xd8, 0xb7, 0xc9, + 0xde, 0x8f, 0x1d, 0x57, 0x7e, 0xec, 0xb8, 0x72, 0x82, 0x8e, 0x2b, 0xf7, 0x14, 0x98, 0x59, 0xd8, + 0xed, 0x99, 0x2e, 0x73, 0xda, 0x27, 0x2e, 0xd5, 0x68, 0xd1, 0xe3, 0x30, 0xb6, 0xcd, 0xff, 0x15, + 0x8b, 0x2b, 0x34, 0x1b, 0x88, 0x1a, 0x38, 0x80, 0xa3, 0x0d, 0x98, 0x26, 0xac, 0x39, 0x93, 0x5a, + 0x35, 0xbf, 0xc8, 0x02, 0xe2, 0x8f, 0x42, 0x62, 0x58, 0x70, 0x02, 0x2b, 0x6a, 0xc3, 0xb4, 0x6e, + 0x69, 0x9e, 0x67, 0x6e, 0x98, 0x7a, 0xe4, 0x9b, 0x36, 0x5e, 0x7f, 0x0f, 0x3b, 0x7d, 0x62, 0x90, + 0x7b, 0xfb, 0xb5, 0x0b, 0xa2, 0x9f, 0x71, 0x00, 0x4e, 0xa0, 0x50, 0xbf, 0x54, 0x81, 0xa9, 0x85, + 0xdd, 0x9e, 0xe3, 0xf5, 0x5d, 0xc2, 0xaa, 0x9e, 0x82, 0x32, 0xfe, 0x38, 0x8c, 0x6d, 0x6a, 0xb6, + 0x61, 0x11, 0x57, 0x70, 0x9f, 0x70, 0x6c, 0x6f, 0xf1, 0x62, 0x1c, 0xc0, 0xd1, 0x5b, 0x00, 0x9e, + 0xbe, 0x49, 0x8c, 0x3e, 0x13, 0x63, 0xf8, 0x26, 0x59, 0x2c, 0xc4, 0x44, 0x63, 0x1f, 0xd9, 0x0e, + 0x71, 0x0a, 0xde, 0x1e, 0xfe, 0xc6, 0x12, 0x3d, 0xf5, 0x8f, 0x15, 0x38, 0x1b, 0x6b, 0x77, 0x0a, + 0x2a, 0x66, 0x27, 0xae, 0x62, 0xd6, 0xcb, 0x7f, 0x6c, 0x8e, 0x66, 0xf9, 0x99, 0x0a, 0x3c, 0x90, + 0x33, 0x28, 0x29, 0x1f, 0x06, 0xe5, 0xb4, 0x7c, 0x18, 0xb6, 0x61, 0xc2, 0x77, 0x2c, 0xe1, 0x45, + 0x19, 0x8c, 0x41, 0x31, 0x0f, 0x85, 0xd5, 0x10, 0x4f, 0xe4, 0xa1, 0x10, 0x95, 0x79, 0x58, 0x26, + 0xa4, 0x7e, 0x4b, 0x81, 0xf1, 0xd0, 0x9c, 0x75, 0x84, 0xd7, 0x16, 0xa7, 0xf8, 0x6e, 0xe1, 0xc8, + 0x6f, 0xd9, 0xd4, 0x7f, 0x51, 0x81, 0x8b, 0x21, 0xee, 0x40, 0x61, 0x68, 0xfb, 0x94, 0x77, 0x1c, + 0xae, 0x0e, 0x5f, 0x16, 0x67, 0xb1, 0x24, 0x0f, 0x48, 0xd2, 0x02, 0x15, 0x9e, 0xfa, 0x6e, 0xcf, + 0xf1, 0x02, 0x91, 0x80, 0x0b, 0x4f, 0xbc, 0x08, 0x07, 0x30, 0xb4, 0x0c, 0x23, 0x1e, 0xa5, 0x27, + 0x4e, 0x94, 0x63, 0x8e, 0x06, 0x93, 0x6a, 0x58, 0x7f, 0x31, 0x47, 0x83, 0xde, 0x94, 0xcd, 0x1b, + 0xdc, 0xd6, 0xf4, 0xc1, 0xe3, 0x2d, 0x06, 0xf6, 0x44, 0x77, 0x8e, 0x7e, 0x89, 0x11, 0x8c, 0x48, + 0xc6, 0xd3, 0x8e, 0x2c, 0x0b, 0x87, 0xba, 0x08, 0x33, 0xc2, 0x0d, 0x82, 0x2f, 0x1b, 0x5b, 0x27, + 0xe8, 0xfd, 0xb1, 0x95, 0xf1, 0x68, 0xe2, 0x6a, 0xf9, 0x7c, 0xb2, 0x7e, 0xb4, 0x62, 0x54, 0x0f, + 0xaa, 0x37, 0x45, 0x27, 0xd1, 0x25, 0xa8, 0x98, 0xc1, 0x5c, 0x80, 0xc0, 0x51, 0x69, 0x35, 0x71, + 0xc5, 0x34, 0x42, 0x99, 0xa8, 0x92, 0x2b, 0xb9, 0x49, 0x47, 0xd3, 0xd0, 0xe0, 0xa3, 0x49, 0xfd, + 0x8f, 0x15, 0x38, 0x1f, 0x50, 0x0d, 0xbe, 0xb1, 0x29, 0xee, 0xe5, 0x0e, 0x91, 0x0f, 0x0f, 0x37, + 0x8f, 0xdc, 0x81, 0x61, 0xc6, 0x03, 0x0b, 0xdd, 0xd7, 0x85, 0x08, 0x69, 0x77, 0x30, 0x43, 0x84, + 0x7e, 0x1e, 0x46, 0x2d, 0x6d, 0x9d, 0x58, 0x81, 0x0b, 0x5a, 0x31, 0x6b, 0x52, 0xd6, 0xf7, 0x72, + 0x43, 0xa7, 0xc7, 0x5d, 0xec, 0xc3, 0x4b, 0x1c, 0x5e, 0x88, 0x05, 0xd1, 0x4b, 0xcf, 0xc0, 0x84, + 0x54, 0x0d, 0xcd, 0xc0, 0xd0, 0x16, 0xe1, 0x37, 0xb6, 0xe3, 0x98, 0xfe, 0x8b, 0xce, 0xc3, 0xc8, + 0xb6, 0x66, 0xf5, 0xc5, 0x98, 0x60, 0xfe, 0xe3, 0x7a, 0xe5, 0xfd, 0x8a, 0xfa, 0xdb, 0x0a, 0x4c, + 0xdc, 0x32, 0xd7, 0x89, 0xcb, 0x9d, 0x19, 0x98, 0x46, 0x14, 0x7b, 0x4d, 0x3c, 0x91, 0xf5, 0x92, + 0x18, 0xed, 0xc1, 0xb8, 0x38, 0x6d, 0x42, 0xa7, 0xd7, 0x5b, 0x05, 0xaf, 0x86, 0x43, 0xda, 0x82, + 0x8b, 0xcb, 0xef, 0x96, 0x02, 0x12, 0x38, 0xa2, 0xa6, 0xbe, 0x09, 0xe7, 0x32, 0x1a, 0xa1, 0x1a, + 0xdb, 0xc0, 0xae, 0x2f, 0x16, 0x46, 0xb0, 0x23, 0x5d, 0x1f, 0xf3, 0x72, 0xf4, 0x20, 0x0c, 0x11, + 0x3b, 0x78, 0x41, 0x30, 0x76, 0xb0, 0x5f, 0x1b, 0x5a, 0xb0, 0x0d, 0x4c, 0xcb, 0x28, 0xa3, 0xb2, + 0x9c, 0x98, 0x64, 0xc2, 0x18, 0xd5, 0xa2, 0x28, 0xc3, 0x21, 0x54, 0xfd, 0x75, 0x05, 0x52, 0xf7, + 0xd6, 0xe8, 0xb3, 0x0a, 0xcc, 0x6c, 0x24, 0xf6, 0x4f, 0xa9, 0xfb, 0xf2, 0xe4, 0x66, 0xac, 0xcf, + 0x8a, 0x11, 0x49, 0x6d, 0x6b, 0x9c, 0x22, 0xac, 0xfe, 0xee, 0x30, 0x3c, 0x7c, 0xcb, 0x71, 0xcd, + 0xbb, 0x8e, 0xed, 0x6b, 0xd6, 0x8a, 0x63, 0x44, 0x8e, 0x6b, 0x82, 0x2f, 0xff, 0x92, 0x02, 0x0f, + 0xe8, 0xbd, 0x3e, 0x17, 0x72, 0x03, 0x7f, 0xa2, 0x15, 0xe2, 0x9a, 0x4e, 0x51, 0xff, 0x35, 0xf6, + 0x5c, 0xb5, 0xb1, 0xb2, 0x96, 0x85, 0x12, 0xe7, 0xd1, 0x62, 0x6e, 0x74, 0x86, 0xb3, 0x63, 0xb3, + 0xce, 0xb5, 0x7d, 0x36, 0x9c, 0x77, 0xa3, 0x59, 0x28, 0xe8, 0x46, 0xd7, 0xcc, 0xc4, 0x88, 0x73, + 0x28, 0xa1, 0x8f, 0xc3, 0x05, 0x93, 0x77, 0x0e, 0x13, 0xcd, 0x30, 0x6d, 0xe2, 0x79, 0xcc, 0x99, + 0xac, 0x8c, 0x9f, 0x58, 0x2b, 0x0b, 0x21, 0xce, 0xa6, 0x83, 0x3e, 0x02, 0xe0, 0xed, 0xd9, 0xba, + 0x18, 0xff, 0x91, 0x42, 0x54, 0xb9, 0x28, 0x18, 0x62, 0xc1, 0x12, 0x46, 0xaa, 0xe8, 0xfa, 0xe1, + 0xaa, 0x1c, 0x65, 0x3e, 0x67, 0x4c, 0xd1, 0x8d, 0xd6, 0x50, 0x04, 0x57, 0x7f, 0x4b, 0x81, 0x31, + 0xf1, 0x26, 0x1e, 0xbd, 0x3b, 0x61, 0xef, 0x09, 0xb9, 0x4f, 0xc2, 0xe6, 0x73, 0x97, 0xdd, 0xfe, + 0x09, 0x6b, 0x9f, 0x90, 0x26, 0x8a, 0x99, 0x0b, 0x04, 0xe5, 0xc8, 0x76, 0x18, 0xbb, 0x05, 0x0c, + 0xec, 0x89, 0x12, 0x35, 0xba, 0x1f, 0xcf, 0xa6, 0x5a, 0x1d, 0x41, 0x66, 0x38, 0x45, 0xf7, 0x9a, + 0x1f, 0x4c, 0x01, 0x0b, 0x80, 0x30, 0xbf, 0xd2, 0x6a, 0x13, 0x77, 0x3b, 0xdc, 0x85, 0x94, 0x6b, + 0x44, 0xbe, 0xd4, 0xa2, 0x17, 0x65, 0xb8, 0xc6, 0xed, 0x04, 0xb2, 0x88, 0x6b, 0x24, 0x21, 0x38, + 0x45, 0x98, 0xea, 0xd9, 0x33, 0x5a, 0x3c, 0x00, 0x42, 0xc0, 0xd8, 0x8b, 0xbd, 0xb2, 0x4b, 0x44, + 0x53, 0x88, 0x3a, 0x93, 0x00, 0x78, 0x38, 0x45, 0x17, 0x3d, 0x0d, 0x93, 0x5a, 0xcf, 0x9c, 0xef, + 0x1b, 0x26, 0x15, 0x76, 0x82, 0xd7, 0xeb, 0x4c, 0x02, 0x9f, 0x5f, 0x69, 0x85, 0xe5, 0x38, 0x56, + 0x2b, 0x0c, 0x35, 0x20, 0x86, 0x72, 0xb8, 0x6c, 0xa8, 0x01, 0x31, 0x8a, 0x51, 0xa8, 0x01, 0x31, + 0x78, 0x32, 0x15, 0xe4, 0x00, 0x38, 0xa6, 0xa1, 0x0b, 0x9a, 0xfc, 0x4a, 0xa2, 0x98, 0xd4, 0x7f, + 0xa7, 0xd5, 0x6c, 0x08, 0x92, 0x6c, 0x3b, 0x47, 0xbf, 0xb1, 0x44, 0x02, 0x7d, 0x51, 0x81, 0x29, + 0xb1, 0x16, 0x05, 0xd1, 0x31, 0x36, 0x4b, 0x1f, 0x2e, 0xbc, 0x66, 0x12, 0x0b, 0x73, 0x0e, 0xcb, + 0xd8, 0xb9, 0xe0, 0x11, 0xba, 0xe3, 0xc7, 0x60, 0x38, 0xde, 0x11, 0xf4, 0x05, 0x05, 0xce, 0x7b, + 0xc4, 0xdd, 0x36, 0x75, 0x32, 0xaf, 0xeb, 0x4e, 0xdf, 0x0e, 0xa6, 0xa2, 0x5a, 0xe2, 0x61, 0x76, + 0x3b, 0x03, 0x21, 0x77, 0x02, 0xcd, 0x82, 0xe0, 0xcc, 0x0e, 0xa0, 0xbf, 0xaa, 0xc0, 0x99, 0x1d, + 0xcd, 0xd7, 0x37, 0x1b, 0x9a, 0xbe, 0xc9, 0xac, 0x80, 0xdc, 0xef, 0xb3, 0xe8, 0xe2, 0x7e, 0x39, + 0x8e, 0x8b, 0x5f, 0xab, 0x25, 0x0a, 0x71, 0x92, 0x22, 0xf2, 0xa1, 0xea, 0x92, 0x37, 0xfa, 0xc4, + 0x63, 0xde, 0xa1, 0xca, 0xf1, 0x55, 0x82, 0xac, 0x49, 0xc3, 0x02, 0x23, 0x17, 0x59, 0x82, 0x5f, + 0x38, 0xa4, 0x84, 0x3a, 0xf0, 0x30, 0x97, 0xda, 0xe6, 0x6d, 0xc7, 0xde, 0xeb, 0x3a, 0x7d, 0x6f, + 0xbe, 0xef, 0x6f, 0x12, 0xdb, 0x0f, 0x6c, 0x31, 0x13, 0x4c, 0xce, 0x63, 0x0e, 0xb0, 0x0b, 0x83, + 0x2a, 0xe2, 0xc1, 0x78, 0xd0, 0x2b, 0x50, 0x25, 0xdb, 0xc4, 0xf6, 0x57, 0x57, 0x17, 0x67, 0x27, + 0x0b, 0x1d, 0x63, 0xec, 0x13, 0x16, 0x04, 0x0e, 0x1c, 0x62, 0x43, 0x3d, 0x18, 0xb3, 0x9c, 0x4e, + 0xc7, 0xb4, 0x3b, 0xb3, 0x53, 0x25, 0x96, 0x52, 0x6c, 0xdc, 0x16, 0x39, 0x42, 0x2e, 0xdf, 0x8a, + 0x1f, 0x38, 0x20, 0x83, 0x7a, 0x70, 0xd5, 0x20, 0x1b, 0x5a, 0xdf, 0xf2, 0x97, 0x1d, 0x9f, 0x1e, + 0xd8, 0x7b, 0x91, 0x02, 0x1e, 0x38, 0x0e, 0x4f, 0xb3, 0xf7, 0x95, 0x8f, 0x1e, 0xec, 0xd7, 0xae, + 0x36, 0x0f, 0xa9, 0x8b, 0x0f, 0xc5, 0x86, 0xf6, 0xe0, 0x11, 0x51, 0x67, 0xcd, 0x76, 0x89, 0xa6, + 0x6f, 0xd2, 0xa1, 0x4e, 0x13, 0x3d, 0xc3, 0x88, 0xfe, 0xc4, 0xc1, 0x7e, 0xed, 0x91, 0xe6, 0xe1, + 0xd5, 0xf1, 0x51, 0x70, 0x5e, 0x7a, 0x01, 0x50, 0x7a, 0xcf, 0x1f, 0xa6, 0x45, 0x54, 0x65, 0x2d, + 0xe2, 0x73, 0x0a, 0x9c, 0xcf, 0x1a, 0x5d, 0x2a, 0x7c, 0x6c, 0x13, 0x77, 0xdd, 0xf1, 0x02, 0x17, + 0xd2, 0x11, 0x2e, 0x7c, 0xbc, 0x14, 0x14, 0xe2, 0x08, 0x8e, 0x5a, 0x70, 0x6e, 0xd3, 0xf7, 0x7b, + 0xf3, 0xba, 0x4e, 0x3c, 0x2f, 0xac, 0xc1, 0xa8, 0x8d, 0xf0, 0xeb, 0xd5, 0x5b, 0xab, 0xab, 0x2b, + 0x09, 0x30, 0xce, 0x6a, 0xa3, 0x7e, 0x53, 0x81, 0x0b, 0x99, 0xdb, 0x04, 0x61, 0xb8, 0xc8, 0xfc, + 0xc4, 0xed, 0xa5, 0xbe, 0xaf, 0xf9, 0xa6, 0xdd, 0x69, 0xd9, 0x1b, 0x96, 0xd9, 0xd9, 0xf4, 0x45, + 0xf7, 0x98, 0x0c, 0xb9, 0x94, 0x59, 0x03, 0xe7, 0xb4, 0xa4, 0x1d, 0xef, 0x6a, 0xbb, 0x29, 0x84, + 0x52, 0xc7, 0x97, 0xd2, 0x60, 0x9c, 0xd5, 0x46, 0xfd, 0xca, 0x08, 0x3c, 0x44, 0x3b, 0x1e, 0x49, + 0x33, 0x4b, 0x9a, 0xad, 0x75, 0x7e, 0x44, 0xa5, 0x86, 0xdf, 0x56, 0xe0, 0x81, 0xcd, 0x6c, 0x5d, + 0x43, 0x08, 0x54, 0xb8, 0x98, 0x56, 0x38, 0x48, 0x7f, 0xe1, 0xac, 0x6a, 0x60, 0x15, 0x9c, 0xd7, + 0x2b, 0xf4, 0x02, 0xcc, 0xd8, 0x8e, 0x41, 0x1a, 0xad, 0x26, 0x5e, 0xd2, 0xbc, 0xad, 0x76, 0x70, + 0x55, 0x34, 0xc2, 0x5d, 0x15, 0x96, 0x13, 0x30, 0x9c, 0xaa, 0x8d, 0xb6, 0x01, 0xf5, 0x1c, 0x63, + 0x61, 0xdb, 0xd4, 0x83, 0x4b, 0x8a, 0xe2, 0xee, 0x11, 0xec, 0x26, 0x64, 0x25, 0x85, 0x0d, 0x67, + 0x50, 0x60, 0xda, 0x12, 0xed, 0xcc, 0x92, 0x63, 0x9b, 0xbe, 0xe3, 0xb2, 0x97, 0x08, 0xa5, 0x94, + 0x06, 0xb6, 0xd2, 0x97, 0x33, 0x31, 0xe2, 0x1c, 0x4a, 0xea, 0xff, 0x54, 0xe0, 0x0c, 0x5d, 0x17, + 0x2b, 0xae, 0xb3, 0xbb, 0xf7, 0x23, 0xb9, 0x24, 0x1f, 0x17, 0x37, 0xe7, 0x5c, 0xcf, 0xbf, 0x20, + 0xdd, 0x9a, 0x8f, 0xb3, 0x4e, 0x47, 0x17, 0xe5, 0xb2, 0xad, 0x63, 0x28, 0xdf, 0xd6, 0xa1, 0x7e, + 0xb1, 0xc2, 0x05, 0xf8, 0xc0, 0xd4, 0xf0, 0xa3, 0xb9, 0x15, 0x7f, 0x06, 0xa6, 0x68, 0xd9, 0x92, + 0xb6, 0xbb, 0xd2, 0x7c, 0xc9, 0xb1, 0x82, 0xe7, 0x20, 0xcc, 0xbb, 0xf3, 0xb6, 0x0c, 0xc0, 0xf1, + 0x7a, 0xe8, 0x3a, 0x8c, 0xf5, 0xf8, 0xd3, 0x53, 0x61, 0xfb, 0xb8, 0xca, 0x6f, 0x97, 0x59, 0xd1, + 0xbd, 0xfd, 0xda, 0xd9, 0xc8, 0xba, 0x2e, 0x0a, 0x71, 0xd0, 0x40, 0xfd, 0xe2, 0x05, 0x60, 0xc8, + 0x2d, 0xe2, 0xff, 0x48, 0x0e, 0xca, 0x13, 0x30, 0xa1, 0xf7, 0xfa, 0x8d, 0x1b, 0xed, 0x17, 0xfb, + 0x8e, 0xaf, 0x89, 0xdb, 0x73, 0x26, 0xd0, 0x37, 0x56, 0xd6, 0x82, 0x62, 0x2c, 0xd7, 0xa1, 0x0c, + 0x42, 0xef, 0xf5, 0x05, 0xd3, 0x5d, 0x91, 0x3d, 0x1c, 0x19, 0x83, 0x68, 0xac, 0xac, 0xc5, 0x60, + 0x38, 0x55, 0x1b, 0xfd, 0x82, 0x02, 0x93, 0x44, 0x6c, 0xde, 0x5b, 0x9a, 0x6b, 0x08, 0xde, 0x50, + 0x5c, 0xd6, 0x0b, 0x47, 0x37, 0x60, 0x09, 0x5c, 0x15, 0x5a, 0x90, 0x68, 0xe0, 0x18, 0x45, 0xf4, + 0x61, 0x78, 0x30, 0xf8, 0x4d, 0x27, 0xda, 0x31, 0x92, 0xdc, 0x62, 0x84, 0x3f, 0xf5, 0x5b, 0xc8, + 0xab, 0x84, 0xf3, 0xdb, 0xa3, 0xbf, 0xa7, 0xc0, 0xc5, 0x10, 0x6a, 0xda, 0x66, 0xb7, 0xdf, 0xc5, + 0x44, 0xb7, 0x34, 0xb3, 0x2b, 0xf4, 0x9f, 0x57, 0x4e, 0xee, 0x4b, 0xe3, 0xf8, 0x39, 0xcb, 0xca, + 0x86, 0xe1, 0x9c, 0x3e, 0xa1, 0x5f, 0x57, 0xe0, 0x6a, 0x00, 0x5a, 0x71, 0x89, 0xe7, 0xf5, 0x5d, + 0x12, 0x3d, 0x48, 0x12, 0x63, 0x32, 0x56, 0x88, 0x83, 0x32, 0xd9, 0x6f, 0xe1, 0x10, 0xdc, 0xf8, + 0x50, 0xea, 0xb1, 0x15, 0xd3, 0x76, 0x36, 0x7c, 0xa1, 0x30, 0xdd, 0xb7, 0x15, 0x43, 0x69, 0xe0, + 0x18, 0x45, 0xf4, 0x0f, 0x14, 0x78, 0x40, 0x2e, 0x90, 0x17, 0x0c, 0xd7, 0x94, 0x3e, 0x74, 0x72, + 0xbd, 0x49, 0x10, 0xe0, 0xe6, 0xc3, 0x1c, 0x20, 0xce, 0xeb, 0x16, 0x65, 0xdf, 0x5d, 0xb6, 0x38, + 0xb9, 0x36, 0x35, 0xc2, 0xd9, 0x37, 0x5f, 0xaf, 0x1e, 0x0e, 0x60, 0xe8, 0x69, 0x98, 0xec, 0x39, + 0xc6, 0x8a, 0x69, 0x78, 0x8b, 0x66, 0xd7, 0xf4, 0x99, 0xba, 0x33, 0xc4, 0xc7, 0x63, 0xc5, 0x31, + 0x56, 0x5a, 0x4d, 0x5e, 0x8e, 0x63, 0xb5, 0xd8, 0xeb, 0x5a, 0xb3, 0xab, 0x75, 0xc8, 0x4a, 0xdf, + 0xb2, 0x56, 0x5c, 0x87, 0x99, 0x98, 0x9a, 0x44, 0x33, 0x2c, 0xd3, 0x26, 0x05, 0xd5, 0x1b, 0xb6, + 0xe5, 0x5a, 0x79, 0x48, 0x71, 0x3e, 0x3d, 0x34, 0x07, 0xb0, 0xa1, 0x99, 0x56, 0x7b, 0x47, 0xeb, + 0xdd, 0xb1, 0x99, 0x0e, 0x54, 0xe5, 0x46, 0x82, 0x1b, 0x61, 0x29, 0x96, 0x6a, 0xb0, 0x05, 0x45, + 0x99, 0x21, 0x26, 0x3c, 0xbe, 0x0b, 0xd3, 0x55, 0x4e, 0x64, 0x41, 0x05, 0x18, 0xf9, 0x00, 0xde, + 0x96, 0x68, 0xe0, 0x18, 0x45, 0xf4, 0xcb, 0x0a, 0x4c, 0x7b, 0x7b, 0x9e, 0x4f, 0xba, 0x61, 0x27, + 0xce, 0x9c, 0x78, 0x27, 0x98, 0xfd, 0xad, 0x1d, 0xa3, 0x82, 0x13, 0x54, 0x91, 0x06, 0x0f, 0xb1, + 0x81, 0xbd, 0xd9, 0xb8, 0x65, 0x76, 0x36, 0xc3, 0x67, 0xb3, 0x2b, 0xc4, 0xd5, 0x89, 0xed, 0xcf, + 0xce, 0xb0, 0xa5, 0xc3, 0xfc, 0x30, 0x5a, 0xf9, 0xd5, 0xf0, 0x20, 0x1c, 0xe8, 0x23, 0x70, 0x49, + 0x80, 0x17, 0x9d, 0x9d, 0x14, 0x85, 0xb3, 0x8c, 0x02, 0xf3, 0x3b, 0x69, 0xe5, 0xd6, 0xc2, 0x03, + 0x30, 0x50, 0xfd, 0xc2, 0x23, 0x2e, 0xb3, 0x9f, 0x93, 0x70, 0xfd, 0x78, 0xb3, 0x28, 0xf2, 0x3b, + 0x6d, 0xa7, 0xc1, 0x38, 0xab, 0x0d, 0x7a, 0x2e, 0x7c, 0xe1, 0xb2, 0x47, 0x0b, 0x5e, 0x5c, 0x69, + 0xcf, 0x9e, 0x63, 0xfd, 0x3b, 0x27, 0x3d, 0x5c, 0x09, 0x40, 0x38, 0x59, 0x97, 0x4a, 0x19, 0x41, + 0x51, 0xbd, 0xef, 0x7a, 0xfe, 0xec, 0x79, 0xd6, 0x98, 0x49, 0x19, 0x58, 0x06, 0xe0, 0x78, 0x3d, + 0x74, 0x1d, 0xa6, 0x3d, 0xa2, 0xeb, 0x4e, 0xb7, 0x27, 0xd4, 0xd6, 0xd9, 0x0b, 0xac, 0xf7, 0x7c, + 0x06, 0x63, 0x10, 0x9c, 0xa8, 0x89, 0xf6, 0xe0, 0x5c, 0x18, 0xee, 0x64, 0xd1, 0xe9, 0x2c, 0x69, + 0xbb, 0x4c, 0x6c, 0xbf, 0x78, 0xf8, 0x26, 0x9c, 0x0b, 0xee, 0x44, 0xe7, 0x5e, 0xec, 0x6b, 0xb6, + 0x6f, 0xfa, 0x7b, 0x7c, 0xb8, 0x1a, 0x69, 0x74, 0x38, 0x8b, 0x06, 0x5a, 0x84, 0xf3, 0x89, 0xe2, + 0x1b, 0xa6, 0x45, 0xbc, 0xd9, 0x07, 0xd8, 0x67, 0x33, 0x33, 0x54, 0x23, 0x03, 0x8e, 0x33, 0x5b, + 0xa1, 0x3b, 0x70, 0xa1, 0xe7, 0x3a, 0x3e, 0xd1, 0xfd, 0xdb, 0x54, 0x4e, 0xb1, 0xc4, 0x07, 0x7a, + 0xb3, 0xb3, 0x6c, 0x2c, 0xd8, 0xdd, 0xc1, 0x4a, 0x56, 0x05, 0x9c, 0xdd, 0x0e, 0x7d, 0x49, 0x81, + 0x2b, 0x9e, 0xef, 0x12, 0xad, 0x6b, 0xda, 0x9d, 0x86, 0x63, 0xdb, 0x84, 0x71, 0xca, 0x96, 0x11, + 0xf9, 0x6d, 0x3f, 0x58, 0x88, 0x55, 0xa9, 0x07, 0xfb, 0xb5, 0x2b, 0xed, 0x81, 0x98, 0xf1, 0x21, + 0x94, 0xd1, 0x5b, 0x00, 0x5d, 0xd2, 0x75, 0xdc, 0x3d, 0xca, 0x94, 0x66, 0x2f, 0x95, 0xf0, 0x80, + 0x59, 0x0a, 0xd1, 0xf0, 0xfd, 0x1f, 0xbb, 0xf6, 0x88, 0x80, 0x58, 0xa2, 0xa7, 0xee, 0x57, 0xb8, + 0x05, 0x20, 0x75, 0xf8, 0xd0, 0x2d, 0xc0, 0xeb, 0xcd, 0x07, 0xf1, 0x4e, 0xc5, 0x45, 0x01, 0xdb, + 0x02, 0x4b, 0x71, 0x10, 0x4e, 0xd6, 0xa5, 0x02, 0x22, 0xdb, 0xaa, 0x37, 0xda, 0x51, 0xfb, 0x4a, + 0x24, 0x20, 0xb6, 0x12, 0x30, 0x9c, 0xaa, 0x8d, 0x1a, 0x70, 0x56, 0x94, 0xb5, 0xa8, 0x9a, 0xe5, + 0xdd, 0x70, 0x49, 0x20, 0x7b, 0x53, 0x7d, 0xe5, 0x6c, 0x2b, 0x09, 0xc4, 0xe9, 0xfa, 0xf4, 0x2b, + 0xe8, 0x0f, 0xb9, 0x17, 0xc3, 0xd1, 0x57, 0x2c, 0xc7, 0x41, 0x38, 0x59, 0x37, 0xd0, 0x83, 0x63, + 0x5d, 0x18, 0x89, 0xbe, 0x62, 0x39, 0x01, 0xc3, 0xa9, 0xda, 0xea, 0xbf, 0x1b, 0x86, 0x47, 0x8e, + 0x20, 0xb3, 0xa1, 0x6e, 0xf6, 0x70, 0x1f, 0x7f, 0xe7, 0x1e, 0x6d, 0x7a, 0x7a, 0x39, 0xd3, 0x73, + 0x7c, 0x7a, 0x47, 0x9d, 0x4e, 0x2f, 0x6f, 0x3a, 0x8f, 0x4f, 0xf2, 0xe8, 0xd3, 0xdf, 0xcd, 0x9e, + 0xfe, 0x82, 0xa3, 0x7a, 0xe8, 0x72, 0xe9, 0xe5, 0x2c, 0x97, 0x82, 0xa3, 0x7a, 0x84, 0xe5, 0xf5, + 0xef, 0x87, 0xe1, 0xd1, 0xa3, 0x08, 0x8f, 0x05, 0xd7, 0x57, 0x06, 0xcf, 0xbb, 0xaf, 0xeb, 0x2b, + 0xef, 0x6d, 0xcc, 0x7d, 0x5c, 0x5f, 0x19, 0x24, 0xef, 0xf7, 0xfa, 0xca, 0x1b, 0xd5, 0xfb, 0xb5, + 0xbe, 0xf2, 0x46, 0xf5, 0x08, 0xeb, 0xeb, 0x7f, 0x25, 0xcf, 0x87, 0x50, 0x60, 0x6c, 0xc1, 0x90, + 0xde, 0xeb, 0x17, 0x64, 0x52, 0xcc, 0xb1, 0xa4, 0xb1, 0xb2, 0x86, 0x29, 0x0e, 0x84, 0x61, 0x94, + 0xaf, 0x9f, 0x82, 0x2c, 0x88, 0x3d, 0xb1, 0xe0, 0x4b, 0x12, 0x0b, 0x4c, 0x74, 0xa8, 0x48, 0x6f, + 0x93, 0x74, 0x89, 0xab, 0x59, 0x6d, 0xdf, 0x71, 0xb5, 0x4e, 0x51, 0x6e, 0xc3, 0x86, 0x6a, 0x21, + 0x81, 0x0b, 0xa7, 0xb0, 0xd3, 0x01, 0xe9, 0x99, 0x46, 0x41, 0xfe, 0xc2, 0x06, 0x64, 0xa5, 0xd5, + 0xc4, 0x14, 0x87, 0xfa, 0x5b, 0xe3, 0x20, 0x05, 0x13, 0x43, 0x1f, 0x86, 0x07, 0x35, 0xcb, 0x72, + 0x76, 0x56, 0x5c, 0x73, 0xdb, 0xb4, 0x48, 0x87, 0x18, 0xa1, 0x34, 0xe5, 0x09, 0xff, 0x23, 0xa6, + 0x34, 0xcd, 0xe7, 0x55, 0xc2, 0xf9, 0xed, 0xa9, 0x0a, 0x77, 0x56, 0x4f, 0xc6, 0x6e, 0x2a, 0xe5, + 0x9f, 0x90, 0x8a, 0x04, 0xc5, 0x37, 0x54, 0xaa, 0x18, 0xa7, 0xe9, 0xa2, 0x5f, 0x54, 0xb8, 0x81, + 0x2e, 0xbc, 0x91, 0x10, 0x93, 0x76, 0xeb, 0xa4, 0xee, 0x6d, 0x23, 0x53, 0x5f, 0x74, 0xe9, 0x11, + 0xa7, 0x88, 0xbe, 0xa6, 0xc0, 0x85, 0xad, 0xac, 0xcb, 0x05, 0x31, 0xb7, 0x2b, 0x85, 0xfb, 0x92, + 0x73, 0x5d, 0xc1, 0x45, 0xda, 0xcc, 0x0a, 0x38, 0xbb, 0x27, 0xe1, 0x38, 0x85, 0xd6, 0x56, 0xc1, + 0x07, 0x8a, 0x8f, 0x53, 0xc2, 0x6e, 0x1b, 0x8d, 0x53, 0x08, 0xc0, 0x71, 0x8a, 0xe8, 0x0d, 0x18, + 0xdf, 0x0a, 0x8c, 0xdc, 0xc2, 0xa6, 0xd5, 0x2c, 0x4c, 0x5e, 0x32, 0x95, 0xf3, 0xbb, 0xaf, 0xb0, + 0x10, 0x47, 0x54, 0x90, 0x09, 0x63, 0x5b, 0x9c, 0x1b, 0x09, 0x5b, 0x54, 0xbd, 0xbc, 0x9a, 0xcc, + 0x0d, 0x22, 0xa2, 0x08, 0x07, 0xf8, 0x65, 0x2f, 0xcc, 0xea, 0x21, 0x0f, 0x04, 0xbe, 0xac, 0xc0, + 0x85, 0x6d, 0xe2, 0xfa, 0xa6, 0x9e, 0xbc, 0xdd, 0x19, 0x2f, 0xa1, 0xcb, 0xbf, 0x94, 0x85, 0x91, + 0x2f, 0x95, 0x4c, 0x10, 0xce, 0xee, 0x03, 0xd5, 0xec, 0xb9, 0x8d, 0xbe, 0xed, 0x6b, 0xbe, 0xa9, + 0xaf, 0x3a, 0x5b, 0xc4, 0x8e, 0x52, 0x5e, 0x30, 0xa3, 0x50, 0x95, 0x6b, 0xf6, 0x0b, 0xf9, 0xd5, + 0xf0, 0x20, 0x1c, 0xea, 0x9f, 0x29, 0x90, 0xb2, 0x33, 0xa3, 0xbf, 0xa1, 0xc0, 0xe4, 0x06, 0xd1, + 0xfc, 0xbe, 0x4b, 0x6e, 0x6a, 0x7e, 0xf8, 0x7c, 0xf9, 0xe5, 0x13, 0xb1, 0x6f, 0xcf, 0xdd, 0x90, + 0x30, 0x73, 0xef, 0x8b, 0x30, 0x1c, 0xa1, 0x0c, 0xc2, 0xb1, 0x2e, 0x5c, 0xfa, 0x00, 0x9c, 0x4d, + 0x35, 0x3c, 0xd6, 0x15, 0xee, 0x3f, 0x53, 0x20, 0x2b, 0x4f, 0x0b, 0x7a, 0x0d, 0x46, 0x34, 0xc3, + 0x08, 0xc3, 0xaf, 0x5f, 0x2f, 0xe8, 0x0c, 0x64, 0xc8, 0xef, 0xc4, 0xd9, 0x4f, 0xcc, 0xf1, 0xa2, + 0x1b, 0x80, 0xb4, 0x98, 0x23, 0xc1, 0x52, 0xf4, 0xf0, 0x91, 0xdd, 0x8f, 0xcd, 0xa7, 0xa0, 0x38, + 0xa3, 0x85, 0xfa, 0x69, 0x05, 0x50, 0x3a, 0x86, 0x25, 0xf2, 0xa0, 0x2a, 0x56, 0x73, 0x30, 0x4f, + 0x0b, 0x45, 0x1f, 0x26, 0xc4, 0xde, 0xd9, 0x44, 0x4f, 0x21, 0x44, 0x81, 0x87, 0x43, 0x42, 0xea, + 0xff, 0x55, 0x20, 0x8a, 0xd4, 0x8c, 0xde, 0x07, 0x13, 0x06, 0xf1, 0x74, 0xd7, 0xec, 0xf9, 0xd1, + 0xab, 0x9c, 0xd0, 0xb3, 0xbf, 0x19, 0x81, 0xb0, 0x5c, 0x0f, 0xa9, 0x30, 0xea, 0x6b, 0xde, 0x56, + 0xab, 0x29, 0xd4, 0x4b, 0x26, 0x0c, 0xac, 0xb2, 0x12, 0x2c, 0x20, 0x51, 0x2c, 0xaa, 0xa1, 0x23, + 0xc4, 0xa2, 0x42, 0x1b, 0x27, 0x10, 0x78, 0x0b, 0x1d, 0x1e, 0x74, 0x4b, 0xfd, 0x5b, 0x15, 0x38, + 0x43, 0xab, 0x2c, 0x69, 0xa6, 0xed, 0x13, 0x9b, 0xf9, 0x9f, 0x17, 0x1c, 0x84, 0x0e, 0x4c, 0xf9, + 0xb1, 0x37, 0x56, 0xc7, 0x7f, 0xa1, 0x14, 0x3a, 0x2f, 0xc5, 0x5f, 0x56, 0xc5, 0xf1, 0xa2, 0x67, + 0x82, 0x07, 0x00, 0x5c, 0x11, 0x7f, 0x24, 0x58, 0xab, 0xcc, 0xab, 0xff, 0x9e, 0x78, 0xb0, 0x16, + 0xc6, 0xf7, 0x8e, 0xf9, 0xfa, 0xff, 0x0c, 0x4c, 0x09, 0x2f, 0x5c, 0x1e, 0x54, 0x4c, 0x28, 0xe2, + 0xec, 0x9c, 0xb9, 0x21, 0x03, 0x70, 0xbc, 0x9e, 0xfa, 0x87, 0x15, 0x88, 0x47, 0x11, 0x2f, 0x3a, + 0x4a, 0xe9, 0x88, 0x6a, 0x95, 0xfb, 0x16, 0x51, 0xed, 0xbd, 0x2c, 0xe3, 0x06, 0xcf, 0xcf, 0xc4, + 0x6f, 0xce, 0xe5, 0x34, 0x19, 0x3c, 0xb9, 0x52, 0x58, 0x23, 0x1a, 0xd6, 0xe1, 0x63, 0x0f, 0xeb, + 0xfb, 0x84, 0x1f, 0xff, 0x48, 0x2c, 0xae, 0x5d, 0xf0, 0x62, 0xe1, 0x6c, 0xac, 0xa1, 0xf4, 0x5c, + 0xe1, 0x3b, 0x0a, 0x8c, 0x89, 0xb8, 0xad, 0x47, 0x78, 0x0e, 0xd3, 0x81, 0x11, 0xa6, 0xfc, 0x94, + 0x92, 0x0b, 0xdb, 0x9b, 0x8e, 0xe3, 0xc7, 0xe2, 0xd7, 0x32, 0xf7, 0x73, 0xf6, 0x2f, 0xe6, 0xf8, + 0x99, 0x4f, 0xa3, 0xab, 0x6f, 0x9a, 0x3e, 0xd1, 0xfd, 0x20, 0x22, 0x66, 0xe0, 0xd3, 0x28, 0x95, + 0xe3, 0x58, 0x2d, 0xf5, 0xcb, 0xc3, 0x70, 0x55, 0x20, 0x4e, 0x89, 0x4a, 0x21, 0x8b, 0xdb, 0x83, + 0x73, 0x62, 0x72, 0x9b, 0xae, 0x66, 0x86, 0x2e, 0x09, 0xc5, 0xb4, 0x60, 0xe1, 0xae, 0x92, 0x42, + 0x87, 0xb3, 0x68, 0xf0, 0xd8, 0x8e, 0xac, 0xf8, 0x16, 0xd1, 0x2c, 0x7f, 0x33, 0xa0, 0x5d, 0x29, + 0x13, 0xdb, 0x31, 0x8d, 0x0f, 0x67, 0x52, 0x61, 0x2e, 0x11, 0x02, 0xd0, 0x70, 0x89, 0x26, 0xfb, + 0x63, 0x94, 0x70, 0x20, 0x5f, 0xca, 0xc4, 0x88, 0x73, 0x28, 0x31, 0x73, 0xa2, 0xb6, 0xcb, 0xac, + 0x13, 0x98, 0xf8, 0xae, 0xc9, 0xe2, 0x10, 0x87, 0x16, 0xf5, 0xa5, 0x38, 0x08, 0x27, 0xeb, 0xa2, + 0xeb, 0x30, 0xcd, 0x5c, 0x4c, 0xa2, 0xf8, 0x49, 0x23, 0xd1, 0xcb, 0xfc, 0xe5, 0x18, 0x04, 0x27, + 0x6a, 0xaa, 0x5f, 0x57, 0x60, 0x52, 0x5e, 0x76, 0x47, 0x78, 0x1c, 0xb3, 0x2d, 0x1d, 0x87, 0x65, + 0xde, 0x6d, 0xc8, 0x64, 0x8f, 0x72, 0x22, 0xfe, 0xea, 0x10, 0x9c, 0xcb, 0x68, 0xc3, 0xfc, 0x05, + 0x48, 0xe2, 0x68, 0x2d, 0xe5, 0x2f, 0x90, 0x3a, 0xa7, 0x43, 0x7f, 0x81, 0x24, 0x04, 0xa7, 0x08, + 0xa3, 0x97, 0x61, 0x48, 0x77, 0x4d, 0x31, 0x30, 0xef, 0x2f, 0xa6, 0x23, 0xe2, 0x56, 0x7d, 0x42, + 0x90, 0x1c, 0x6a, 0xe0, 0x16, 0xa6, 0x18, 0xe9, 0x11, 0x21, 0xef, 0xeb, 0xe0, 0xbc, 0x66, 0x47, + 0x84, 0xbc, 0xfd, 0x3d, 0x1c, 0xaf, 0x87, 0x5e, 0x81, 0x59, 0x21, 0xb7, 0x07, 0xaf, 0x62, 0x1d, + 0xdb, 0xf3, 0xe9, 0x16, 0xf4, 0x05, 0x4b, 0xbd, 0x7c, 0xb0, 0x5f, 0x9b, 0xbd, 0x9d, 0x53, 0x07, + 0xe7, 0xb6, 0x56, 0xff, 0xfb, 0x10, 0x4c, 0x48, 0xf1, 0xad, 0xd1, 0x52, 0x19, 0xb3, 0x47, 0xf4, + 0xc5, 0x81, 0xe9, 0x63, 0x09, 0x86, 0x3a, 0xbd, 0x7e, 0x41, 0xbb, 0x47, 0x88, 0xee, 0x26, 0x45, + 0xd7, 0xe9, 0xf5, 0xd1, 0x4b, 0xa1, 0x25, 0xa5, 0x98, 0xad, 0x23, 0x7c, 0xbc, 0x90, 0xb0, 0xa6, + 0x04, 0x3b, 0x66, 0x38, 0x77, 0xc7, 0xd8, 0x30, 0xe6, 0x09, 0x33, 0xcb, 0x48, 0x89, 0x60, 0x24, + 0xd2, 0x50, 0x0b, 0xbb, 0x0a, 0x57, 0xcf, 0x02, 0xb3, 0x4b, 0x40, 0x84, 0x8a, 0x7d, 0x7d, 0xf6, + 0x2c, 0x92, 0x69, 0x9e, 0x55, 0x2e, 0xf6, 0xad, 0xb1, 0x12, 0x2c, 0x20, 0xa9, 0xc3, 0x64, 0xec, + 0x48, 0x87, 0xc9, 0xa7, 0x2a, 0x80, 0xd2, 0xdd, 0x40, 0x8f, 0xc0, 0x08, 0x7b, 0x5a, 0x2d, 0xb8, + 0x46, 0x28, 0xa5, 0xb3, 0xa7, 0xb5, 0x98, 0xc3, 0x50, 0x5b, 0x84, 0x55, 0x28, 0x36, 0x9f, 0xcc, + 0xe5, 0x46, 0xd0, 0x93, 0x62, 0x30, 0x04, 0xc7, 0xf3, 0x50, 0xee, 0xf1, 0xbc, 0x06, 0x63, 0x5d, + 0xd3, 0x66, 0xd7, 0x7d, 0xc5, 0xcc, 0x4f, 0xdc, 0x27, 0x80, 0xa3, 0xc0, 0x01, 0x2e, 0xf5, 0xfb, + 0x15, 0xba, 0xf6, 0x23, 0xe1, 0xf4, 0x2e, 0x80, 0xd6, 0xf7, 0x1d, 0x2e, 0xe5, 0x88, 0x2d, 0xf0, + 0xc1, 0x82, 0xd3, 0x1c, 0x62, 0x9d, 0x0f, 0x31, 0xf2, 0x8b, 0xaa, 0xe8, 0x37, 0x96, 0xa8, 0x51, + 0xda, 0xbe, 0xd9, 0x25, 0x2f, 0x9b, 0xb6, 0xe1, 0xec, 0x88, 0xf1, 0x2d, 0x4d, 0x7b, 0x35, 0xc4, + 0xc8, 0x69, 0x47, 0xbf, 0xb1, 0x44, 0x8d, 0x72, 0x17, 0xa6, 0xe8, 0xda, 0x2c, 0xed, 0x80, 0xe8, + 0x9c, 0x63, 0x59, 0xc1, 0x09, 0x5a, 0xe5, 0xdc, 0xa5, 0x91, 0x53, 0x07, 0xe7, 0xb6, 0x56, 0xff, + 0xae, 0x02, 0x17, 0x32, 0xc7, 0x02, 0xdd, 0x84, 0xb3, 0x91, 0x9f, 0x96, 0xcc, 0xf1, 0xab, 0x51, + 0xc2, 0x8b, 0xdb, 0xc9, 0x0a, 0x38, 0xdd, 0x86, 0x7b, 0xdd, 0xa6, 0x4e, 0x14, 0xe1, 0xe4, 0x25, + 0x8b, 0x31, 0x32, 0x18, 0x67, 0xb5, 0x51, 0x3f, 0x1c, 0xeb, 0x6c, 0x34, 0x58, 0x74, 0x6f, 0xac, + 0x93, 0x4e, 0xf8, 0x04, 0x2a, 0xdc, 0x1b, 0x75, 0x5a, 0x88, 0x39, 0x0c, 0x3d, 0x2c, 0xbf, 0x2c, + 0x0c, 0x59, 0x57, 0xf0, 0xba, 0x50, 0x7d, 0x0d, 0x1e, 0xc8, 0xb9, 0xc0, 0x44, 0x4d, 0x98, 0xf4, + 0x76, 0xb4, 0x5e, 0x9d, 0x6c, 0x6a, 0xdb, 0xa6, 0x78, 0xad, 0xce, 0x1d, 0xf0, 0x26, 0xdb, 0x52, + 0xf9, 0xbd, 0xc4, 0x6f, 0x1c, 0x6b, 0xa5, 0xf6, 0x01, 0x84, 0xab, 0xa6, 0x69, 0x77, 0x50, 0x07, + 0xaa, 0x9a, 0xc8, 0xe4, 0x29, 0x56, 0xf2, 0x73, 0xc5, 0x74, 0x76, 0x81, 0x84, 0x7b, 0xe5, 0x07, + 0xbf, 0x70, 0x88, 0x5c, 0xfd, 0x3b, 0x0a, 0x5c, 0xcc, 0x7e, 0x9e, 0x7c, 0x04, 0x39, 0xa4, 0x0b, + 0x13, 0x6e, 0xd4, 0x4c, 0x2c, 0xfb, 0x9f, 0x96, 0xe3, 0x55, 0x4a, 0x81, 0x99, 0xa8, 0x8c, 0xd6, + 0x70, 0x1d, 0x2f, 0x98, 0xfa, 0x64, 0x08, 0xcb, 0x50, 0x41, 0x92, 0x7a, 0x82, 0x65, 0xfc, 0xea, + 0xef, 0x56, 0x00, 0x96, 0x89, 0xbf, 0xe3, 0xb8, 0x5b, 0x74, 0x8c, 0x2e, 0xc7, 0xf4, 0x82, 0xea, + 0x0f, 0xef, 0x89, 0xfc, 0x65, 0x18, 0xee, 0x39, 0x86, 0x27, 0x38, 0x20, 0xeb, 0x08, 0xf3, 0x5e, + 0x62, 0xa5, 0xa8, 0x06, 0x23, 0xec, 0xc2, 0x42, 0x9c, 0x4e, 0x4c, 0xa9, 0xa0, 0x22, 0xa1, 0x87, + 0x79, 0x39, 0x4f, 0xd6, 0xc4, 0xde, 0xbb, 0x78, 0x42, 0x4d, 0x12, 0xc9, 0x9a, 0x78, 0x19, 0x0e, + 0xa1, 0xe8, 0x3a, 0x80, 0xd9, 0xbb, 0xa1, 0x75, 0x4d, 0x8b, 0x0a, 0xa8, 0xa3, 0x61, 0x3a, 0x50, + 0x68, 0xad, 0x04, 0xa5, 0xf7, 0xf6, 0x6b, 0x55, 0xf1, 0x6b, 0x0f, 0x4b, 0xb5, 0xd5, 0x4f, 0x0e, + 0x43, 0x2c, 0x77, 0x6e, 0x64, 0x13, 0x1a, 0xbe, 0x4f, 0x36, 0xa1, 0x57, 0x60, 0xd6, 0x72, 0x34, + 0xa3, 0xae, 0x59, 0x74, 0x3f, 0xba, 0x6d, 0x3e, 0x8f, 0x9a, 0xdd, 0x09, 0x03, 0x57, 0x31, 0xbe, + 0xb4, 0x98, 0x53, 0x07, 0xe7, 0xb6, 0x46, 0x7d, 0x29, 0x65, 0x2f, 0x15, 0xf2, 0x96, 0x4a, 0xe7, + 0x16, 0x9e, 0x93, 0x1f, 0x4a, 0x85, 0x62, 0x46, 0x22, 0xad, 0xef, 0x2f, 0x2b, 0x70, 0x81, 0xec, + 0xfa, 0xc4, 0xb5, 0x35, 0x6b, 0xd5, 0xd5, 0x36, 0x36, 0x4c, 0x3d, 0xe6, 0x5b, 0xba, 0x72, 0xb0, + 0x5f, 0xbb, 0xb0, 0x90, 0x55, 0xe1, 0xde, 0x7e, 0xed, 0xa9, 0x74, 0xf2, 0xec, 0xe0, 0x59, 0x54, + 0x66, 0x13, 0xb6, 0x94, 0xb3, 0xc9, 0x5d, 0x7a, 0x06, 0x26, 0x8e, 0xf1, 0xc8, 0x23, 0xf6, 0x54, + 0xfc, 0x9f, 0x54, 0x60, 0x92, 0xae, 0xbe, 0x45, 0x47, 0xd7, 0xac, 0xe6, 0x72, 0xfb, 0x18, 0x99, + 0xa7, 0xd1, 0x22, 0x9c, 0xdf, 0x70, 0x5c, 0x9d, 0xac, 0x36, 0x56, 0x56, 0x1d, 0x71, 0x5f, 0xd2, + 0x5c, 0x6e, 0x0b, 0x66, 0xcd, 0xf4, 0xbe, 0x1b, 0x19, 0x70, 0x9c, 0xd9, 0x0a, 0xdd, 0x81, 0x0b, + 0x51, 0xf9, 0x5a, 0x8f, 0xfb, 0xa1, 0x50, 0x74, 0x43, 0x91, 0x1f, 0xcd, 0x8d, 0xac, 0x0a, 0x38, + 0xbb, 0x1d, 0xd2, 0xe0, 0x21, 0x11, 0x8b, 0xe2, 0x86, 0xe3, 0xee, 0x68, 0xae, 0x11, 0x47, 0x3b, + 0x1c, 0x59, 0x92, 0x9b, 0xf9, 0xd5, 0xf0, 0x20, 0x1c, 0xea, 0x57, 0x47, 0x41, 0x7a, 0xd2, 0x77, + 0x8c, 0x0c, 0x3f, 0xbf, 0xa9, 0xc0, 0x79, 0xdd, 0x32, 0x89, 0xed, 0x27, 0xde, 0x6d, 0x71, 0xa6, + 0xf4, 0x52, 0xb1, 0xc7, 0x86, 0x3d, 0x62, 0xb7, 0x9a, 0xc2, 0x6f, 0xa7, 0x91, 0x81, 0x5d, 0xf8, + 0x36, 0x65, 0x40, 0x70, 0x66, 0x6f, 0xd8, 0x07, 0xb1, 0xf2, 0x56, 0x53, 0x7e, 0x43, 0xdf, 0x10, + 0x65, 0x38, 0x84, 0xa2, 0x27, 0x60, 0xa2, 0xe3, 0x3a, 0xfd, 0x9e, 0xd7, 0x60, 0x3e, 0xc3, 0x9c, + 0xb7, 0x31, 0x09, 0xf1, 0x66, 0x54, 0x8c, 0xe5, 0x3a, 0x54, 0xde, 0xe5, 0x3f, 0x57, 0x5c, 0xb2, + 0x61, 0xee, 0x0a, 0x5e, 0xc7, 0xe4, 0xdd, 0x9b, 0x52, 0x39, 0x8e, 0xd5, 0x42, 0xef, 0x81, 0x71, + 0xd3, 0xf3, 0xfa, 0xc4, 0x5d, 0xc3, 0x8b, 0x22, 0xaa, 0x3f, 0xbb, 0x80, 0x69, 0x05, 0x85, 0x38, + 0x82, 0xa3, 0xcf, 0x2b, 0x30, 0xed, 0x92, 0x37, 0xfa, 0xa6, 0x4b, 0x0c, 0x46, 0xd4, 0x13, 0x0f, + 0x2b, 0xdb, 0x25, 0x5f, 0x73, 0xce, 0xe1, 0x18, 0x56, 0xce, 0x27, 0x42, 0x63, 0x5b, 0x1c, 0x88, + 0x13, 0x5d, 0xa0, 0x63, 0xe5, 0x99, 0x1d, 0xdb, 0xb4, 0x3b, 0xf3, 0x56, 0xc7, 0x9b, 0xad, 0x32, + 0xde, 0xc7, 0xa5, 0xe9, 0xa8, 0x18, 0xcb, 0x75, 0xa8, 0xaa, 0xd9, 0xf7, 0xe8, 0xce, 0xef, 0x12, + 0x3e, 0xc0, 0xe3, 0x91, 0x35, 0x72, 0x4d, 0x06, 0xe0, 0x78, 0x3d, 0x74, 0x1d, 0xa6, 0x83, 0x02, + 0x31, 0xcc, 0xc0, 0x63, 0xa8, 0xd1, 0x7e, 0xae, 0xc5, 0x20, 0x38, 0x51, 0xf3, 0xd2, 0x3c, 0x9c, + 0xcb, 0xf8, 0xcc, 0x63, 0xb1, 0x97, 0xaf, 0x57, 0xe0, 0x9d, 0x87, 0x2e, 0x4b, 0xf4, 0x55, 0x05, + 0x26, 0xc8, 0xae, 0xef, 0x6a, 0xe1, 0xd3, 0x02, 0x3a, 0x47, 0x9d, 0xfb, 0xb3, 0x09, 0xe6, 0x16, + 0x22, 0x4a, 0x7c, 0xde, 0x42, 0x49, 0x43, 0x82, 0x60, 0xb9, 0x43, 0x54, 0x7d, 0xe3, 0x31, 0xf6, + 0x64, 0xab, 0xbd, 0x48, 0x99, 0x2a, 0x20, 0x97, 0x9e, 0x87, 0x99, 0x24, 0xe6, 0xe3, 0x72, 0xe2, + 0xb1, 0x15, 0xd7, 0xa1, 0x42, 0xd0, 0x29, 0x04, 0xbd, 0x5a, 0x8f, 0x45, 0xa0, 0x2e, 0xf6, 0xa0, + 0x5a, 0xf4, 0x36, 0x37, 0x02, 0xfe, 0xeb, 0x89, 0x08, 0xf8, 0xf5, 0x52, 0x54, 0x06, 0x87, 0xbc, + 0xff, 0xae, 0x02, 0x13, 0xa2, 0xe6, 0x29, 0x44, 0xc5, 0xd2, 0xe2, 0x51, 0xb1, 0x9e, 0x2d, 0xf3, + 0x61, 0x39, 0xf1, 0xb0, 0xbe, 0xa4, 0xc0, 0x94, 0xa8, 0xb1, 0x44, 0xba, 0xeb, 0xc4, 0x45, 0x37, + 0x60, 0xcc, 0xeb, 0xb3, 0xb9, 0x14, 0x5f, 0xf4, 0x90, 0x2c, 0x59, 0xbb, 0xeb, 0x9a, 0xce, 0x52, + 0xff, 0xf2, 0x2a, 0x52, 0x5c, 0x79, 0x5e, 0x80, 0x83, 0xc6, 0x54, 0x8e, 0x77, 0x1d, 0x2b, 0x15, + 0x4a, 0x07, 0x3b, 0x16, 0xc1, 0x0c, 0x42, 0x45, 0x54, 0xfa, 0x37, 0x30, 0x68, 0x31, 0x11, 0x95, + 0x82, 0x3d, 0xcc, 0xcb, 0xd5, 0x4f, 0x0d, 0x87, 0xa3, 0xcd, 0xe2, 0x3e, 0xdf, 0x82, 0x71, 0xdd, + 0x25, 0x9a, 0x4f, 0x8c, 0xfa, 0xde, 0x51, 0x3a, 0xc7, 0x38, 0x76, 0x23, 0x68, 0x81, 0xa3, 0xc6, + 0x94, 0x37, 0xca, 0x77, 0x25, 0x95, 0xe8, 0x1c, 0xc9, 0xbd, 0x27, 0x79, 0x16, 0x46, 0x9c, 0x1d, + 0x3b, 0xf4, 0xbd, 0x18, 0x48, 0x98, 0x7d, 0xca, 0x1d, 0x5a, 0x1b, 0xf3, 0x46, 0x72, 0x28, 0xa9, + 0xe1, 0x01, 0xa1, 0xa4, 0xba, 0x30, 0xd6, 0x65, 0xd3, 0x50, 0x2e, 0xc8, 0x78, 0x6c, 0x46, 0xe5, + 0x74, 0x34, 0x0c, 0x35, 0x0e, 0x68, 0xd0, 0x53, 0x8e, 0x32, 0x62, 0xaf, 0xa7, 0xe9, 0x44, 0x3e, + 0xe5, 0x96, 0x83, 0x42, 0x1c, 0xc1, 0xd1, 0xdd, 0x78, 0x94, 0xb2, 0xb1, 0x12, 0x06, 0x2d, 0xd1, + 0x3f, 0x29, 0x30, 0x19, 0x1f, 0xfc, 0xdc, 0x48, 0x65, 0x9f, 0x1d, 0x0e, 0x97, 0xa9, 0xc8, 0x1b, + 0x90, 0x9d, 0xb7, 0x56, 0x29, 0x94, 0xb7, 0xf6, 0xa9, 0x20, 0xa2, 0x66, 0x25, 0x96, 0x3b, 0x29, + 0x8c, 0xa8, 0x39, 0x29, 0x48, 0xc7, 0xa2, 0x68, 0xf6, 0xe1, 0x9c, 0xe7, 0x6b, 0x16, 0x69, 0x9b, + 0x42, 0xed, 0xf7, 0x7c, 0xad, 0xdb, 0x2b, 0x10, 0xd2, 0x92, 0x3b, 0xe1, 0xa7, 0x51, 0xe1, 0x2c, + 0xfc, 0xe8, 0x93, 0x0a, 0xcc, 0xb2, 0xf2, 0xf9, 0xbe, 0xef, 0xf0, 0x00, 0xcc, 0x11, 0xf1, 0xe3, + 0x5f, 0xc9, 0x32, 0x5d, 0xa8, 0x9d, 0x83, 0x0f, 0xe7, 0x52, 0x42, 0x6f, 0xc2, 0x05, 0x4b, 0xf3, + 0xfc, 0x79, 0xdd, 0x37, 0xb7, 0x4d, 0x7f, 0x2f, 0xea, 0xc2, 0xf1, 0xe3, 0x58, 0x32, 0x91, 0x7b, + 0x31, 0x0b, 0x19, 0xce, 0xa6, 0xa1, 0xfe, 0x6f, 0x05, 0x50, 0x7a, 0x09, 0xa1, 0x2e, 0x54, 0x8d, + 0xc0, 0x2b, 0x5e, 0x39, 0x99, 0x18, 0x7a, 0x21, 0x77, 0x0e, 0xbd, 0xe9, 0x43, 0x12, 0xa8, 0x07, + 0xe3, 0x3b, 0x9b, 0xa6, 0x4f, 0x2c, 0xd3, 0xf3, 0x4f, 0x2a, 0x66, 0x5f, 0x18, 0xbe, 0xea, 0xe5, + 0x00, 0x33, 0x8e, 0x88, 0xa8, 0x9f, 0x1b, 0x86, 0x6a, 0x18, 0x48, 0xf8, 0xf0, 0xfb, 0xc9, 0x3e, + 0x20, 0x5d, 0xca, 0xcd, 0x54, 0xc6, 0x1e, 0xc1, 0x9c, 0x29, 0x1a, 0x29, 0x64, 0x38, 0x83, 0x00, + 0x7a, 0x13, 0xce, 0x9b, 0xf6, 0x86, 0xab, 0x79, 0xbe, 0xdb, 0x67, 0xc6, 0xe3, 0x32, 0x19, 0x8e, + 0x98, 0x2a, 0xd1, 0xca, 0x40, 0x87, 0x33, 0x89, 0xa0, 0x0d, 0x18, 0xe3, 0x21, 0xd3, 0x83, 0x70, + 0x6a, 0xc5, 0xf2, 0x5d, 0xf2, 0x58, 0xec, 0x11, 0xe7, 0xe4, 0xbf, 0x3d, 0x1c, 0x20, 0xe7, 0x51, + 0x41, 0xf8, 0xff, 0xc1, 0x5d, 0xaa, 0x58, 0xfa, 0xcd, 0x12, 0x04, 0xa3, 0xf4, 0xa9, 0x3c, 0x2a, + 0x48, 0xbc, 0x10, 0x27, 0x29, 0xaa, 0xbf, 0xaf, 0xc0, 0x08, 0x7f, 0x7a, 0x7a, 0xff, 0x45, 0xb9, + 0x8f, 0xc6, 0x44, 0xb9, 0x62, 0x29, 0x5a, 0x58, 0x5f, 0x73, 0x73, 0x87, 0x7c, 0x47, 0x81, 0x71, + 0x56, 0xe3, 0x14, 0x44, 0xab, 0xd7, 0xe2, 0xa2, 0xd5, 0xf5, 0xe2, 0x9f, 0x93, 0x23, 0x58, 0xfd, + 0xfe, 0x90, 0xf8, 0x18, 0x26, 0xb9, 0xb4, 0xe0, 0x9c, 0x70, 0xeb, 0x5c, 0x34, 0x37, 0x08, 0x5d, + 0xe6, 0x4d, 0x6d, 0xcf, 0x13, 0x61, 0x23, 0xf8, 0xb3, 0xa2, 0x34, 0x18, 0x67, 0xb5, 0x41, 0xff, + 0x54, 0xa1, 0x32, 0x82, 0xef, 0x9a, 0x7a, 0xb9, 0x84, 0x1c, 0x61, 0xe7, 0xe6, 0x96, 0x38, 0x36, + 0xae, 0xa5, 0xac, 0x45, 0xc2, 0x02, 0x2b, 0xbd, 0xb7, 0x5f, 0xab, 0x65, 0xd8, 0x90, 0xa2, 0xc8, + 0xfc, 0x9e, 0xff, 0x89, 0xef, 0x0f, 0xac, 0xc2, 0x2c, 0xb7, 0x41, 0x97, 0xd1, 0x2d, 0x18, 0xf1, + 0x74, 0xa7, 0x47, 0x8e, 0x93, 0x66, 0x28, 0x1c, 0xe1, 0x36, 0x6d, 0x89, 0x39, 0x82, 0x4b, 0xaf, + 0xc3, 0xa4, 0xdc, 0xf3, 0x0c, 0x2d, 0xa8, 0x29, 0x6b, 0x41, 0xc7, 0xbe, 0xff, 0x91, 0xb5, 0xa6, + 0x6f, 0x55, 0x60, 0x94, 0xe7, 0xbc, 0x3d, 0x82, 0x7d, 0xfa, 0xf5, 0x20, 0xfc, 0x79, 0x99, 0x8c, + 0xde, 0x72, 0x94, 0xc0, 0x57, 0x1d, 0x5b, 0x1a, 0x04, 0x39, 0x02, 0x3a, 0x72, 0xc2, 0xe8, 0x91, + 0x43, 0x25, 0xf2, 0xa0, 0xf0, 0x4f, 0xbb, 0xdf, 0xf1, 0x22, 0xbf, 0xab, 0xc0, 0x64, 0x2c, 0x1e, + 0x67, 0x17, 0x86, 0xdc, 0x30, 0x4d, 0x56, 0x51, 0x03, 0x7e, 0xe0, 0x16, 0xf4, 0xd0, 0x80, 0x4a, + 0x98, 0xd2, 0x09, 0x43, 0x77, 0x56, 0x4e, 0x28, 0x74, 0xa7, 0xfa, 0x05, 0x05, 0x2e, 0x06, 0x1f, + 0x14, 0x8f, 0xe0, 0x84, 0x1e, 0x83, 0xaa, 0xd6, 0x33, 0x99, 0x81, 0x49, 0xb6, 0xd1, 0xcd, 0xaf, + 0xb4, 0x58, 0x19, 0x0e, 0xa1, 0xe8, 0xbd, 0x50, 0x0d, 0x96, 0x9e, 0x90, 0x3f, 0x43, 0xbe, 0x15, + 0x5e, 0x49, 0x84, 0x35, 0xd0, 0xbb, 0xa4, 0x10, 0xf5, 0x23, 0x91, 0xb8, 0x10, 0x12, 0xe6, 0xb7, + 0xa3, 0xea, 0x4f, 0xc3, 0x78, 0xbb, 0x7d, 0x8b, 0x47, 0xb6, 0x39, 0x86, 0xad, 0x55, 0xfd, 0xcc, + 0x10, 0x4c, 0x71, 0x83, 0x43, 0xdd, 0xb4, 0x0d, 0xd3, 0xee, 0x9c, 0xc2, 0xc1, 0xb2, 0x0a, 0xe3, + 0xdc, 0xb6, 0x71, 0x48, 0x4a, 0xb3, 0x76, 0x50, 0x29, 0x19, 0xc7, 0x36, 0x04, 0xe0, 0x08, 0x11, + 0xba, 0x0d, 0xa3, 0x6f, 0x50, 0x0e, 0x17, 0x6c, 0x8c, 0x23, 0x31, 0x9a, 0x70, 0xd1, 0x33, 0xe6, + 0xe8, 0x61, 0x81, 0x02, 0xf9, 0xcc, 0x6f, 0x8d, 0xc9, 0x5d, 0xa5, 0x22, 0x32, 0xc4, 0x86, 0x36, + 0xcc, 0x51, 0x31, 0x29, 0xfc, 0xdf, 0xd8, 0x2f, 0x1c, 0x52, 0x62, 0x81, 0xb8, 0x63, 0x2d, 0xde, + 0x2e, 0x81, 0xb8, 0x63, 0x9d, 0xce, 0x39, 0x1f, 0x9f, 0x81, 0x0b, 0x99, 0xa3, 0x71, 0xb8, 0x5c, + 0xab, 0x7e, 0xa3, 0x02, 0xc3, 0x6d, 0x42, 0x8c, 0x53, 0x58, 0x9b, 0xaf, 0xc5, 0x84, 0x9e, 0xe7, + 0x8a, 0x87, 0x02, 0xcf, 0x33, 0x5e, 0x75, 0x12, 0xc6, 0xab, 0x0f, 0x14, 0x27, 0x31, 0xd8, 0x72, + 0xf5, 0x6b, 0x15, 0x00, 0x5a, 0xad, 0xae, 0xe9, 0x5b, 0x9c, 0xeb, 0x84, 0x2b, 0x5a, 0x89, 0x73, + 0x9d, 0xf4, 0x4a, 0x3c, 0xcd, 0x5b, 0x4d, 0x15, 0x46, 0x79, 0x4e, 0x79, 0x71, 0x13, 0x00, 0x3c, + 0xe1, 0x2e, 0x2d, 0xc1, 0x02, 0x12, 0xe7, 0x18, 0xc3, 0x27, 0xc4, 0x31, 0xd4, 0x3d, 0x60, 0xc9, + 0x11, 0x9b, 0xcb, 0x6d, 0x64, 0x4b, 0xa3, 0x53, 0x29, 0x21, 0xd5, 0x0b, 0x7c, 0x87, 0xee, 0xf4, + 0x4f, 0x2b, 0x70, 0x26, 0x51, 0xf7, 0x08, 0xfa, 0xdd, 0x7d, 0x61, 0x9c, 0xea, 0xb7, 0x15, 0xa8, + 0xd2, 0xbe, 0x9c, 0x02, 0xb3, 0xf9, 0x48, 0x9c, 0xd9, 0x3c, 0x53, 0x78, 0x8c, 0x73, 0x78, 0xcc, + 0x3f, 0xaa, 0x00, 0x0b, 0xbb, 0x2f, 0x6e, 0xef, 0xa5, 0x4b, 0x71, 0x25, 0xe7, 0x52, 0xfc, 0xaa, + 0xb8, 0x53, 0x4f, 0x18, 0x2d, 0xa5, 0x7b, 0xf5, 0xf7, 0x4a, 0xd7, 0xe6, 0x43, 0xf1, 0x8d, 0x93, + 0x71, 0x75, 0xfe, 0x26, 0x4c, 0x79, 0x9b, 0x8e, 0xe3, 0x87, 0xaf, 0xf5, 0x87, 0x4b, 0x98, 0xa8, + 0x99, 0xab, 0x70, 0xf0, 0x2d, 0xfc, 0x52, 0xa6, 0x2d, 0x23, 0xc7, 0x71, 0x5a, 0x89, 0x7b, 0xfb, + 0x91, 0x63, 0xdd, 0xdb, 0xff, 0xa9, 0xc2, 0x87, 0xee, 0x18, 0xcb, 0xf1, 0x14, 0x99, 0xc4, 0xbb, + 0x13, 0x4c, 0x42, 0xca, 0xcc, 0x1d, 0x63, 0x14, 0xb5, 0x40, 0x12, 0x1f, 0x8e, 0x2c, 0xcc, 0xb1, + 0x04, 0x42, 0xff, 0x58, 0x7c, 0x66, 0x98, 0x8a, 0xa1, 0x07, 0x53, 0x96, 0x9c, 0x1e, 0x52, 0xac, + 0xfa, 0x42, 0x99, 0x25, 0xc3, 0xc7, 0x03, 0xb1, 0x62, 0x1c, 0x27, 0x80, 0x7e, 0x06, 0xa6, 0x82, + 0xaf, 0xa3, 0x83, 0xe9, 0x89, 0x6c, 0x52, 0x6c, 0x7a, 0x57, 0x64, 0x00, 0x8e, 0xd7, 0x53, 0xbf, + 0x32, 0x0c, 0x0f, 0xf3, 0xbe, 0x33, 0x6b, 0x40, 0x93, 0xf4, 0x88, 0x6d, 0x10, 0x5b, 0xdf, 0x63, + 0xa2, 0xa8, 0xe1, 0x74, 0xd0, 0x27, 0x15, 0xa8, 0x12, 0xdb, 0xe8, 0x39, 0xa6, 0x1d, 0x18, 0xf3, + 0x5f, 0x2d, 0x91, 0xcd, 0x22, 0x87, 0xcc, 0x82, 0xa0, 0x20, 0x42, 0x70, 0x8a, 0x5f, 0x38, 0xa4, + 0x8c, 0x76, 0x61, 0xa4, 0xe7, 0x3a, 0xeb, 0x81, 0x1a, 0xf6, 0xf2, 0xc9, 0x77, 0x61, 0x85, 0xa2, + 0xe7, 0xd3, 0xcb, 0xfe, 0xc5, 0x9c, 0x20, 0x7a, 0x0b, 0x46, 0x77, 0x08, 0x31, 0x42, 0xa3, 0xfd, + 0x2b, 0x27, 0x4f, 0xfa, 0x65, 0x86, 0x9f, 0x1f, 0x53, 0xfc, 0x7f, 0x2c, 0x68, 0x52, 0xea, 0xac, + 0x1b, 0x81, 0xcc, 0xf8, 0xca, 0x7d, 0xfa, 0x70, 0x41, 0x9d, 0xff, 0x8f, 0x05, 0x4d, 0x15, 0xc3, + 0xbb, 0x8e, 0x34, 0x6d, 0xc7, 0x51, 0x0f, 0xee, 0x80, 0x7a, 0x78, 0x77, 0x8e, 0x83, 0x70, 0x05, + 0x1e, 0x39, 0xc2, 0xf7, 0x9d, 0x24, 0x46, 0x3e, 0x47, 0xc7, 0xc1, 0xf8, 0x22, 0x3c, 0x2a, 0x61, + 0x5c, 0xd8, 0xa5, 0x3a, 0x55, 0x43, 0xeb, 0x69, 0xba, 0xe9, 0xef, 0xf1, 0x87, 0xdf, 0xfc, 0x16, + 0xe1, 0x18, 0x28, 0x3f, 0x3d, 0x0c, 0x35, 0x09, 0x67, 0xcc, 0x17, 0x29, 0x38, 0x3a, 0xbe, 0xa2, + 0xc0, 0x84, 0x66, 0xdb, 0x22, 0x81, 0x57, 0x60, 0xd1, 0x26, 0x65, 0xd7, 0x50, 0x16, 0xad, 0xb9, + 0xf9, 0x88, 0x4e, 0xe2, 0xae, 0x5a, 0x82, 0x60, 0xb9, 0x3b, 0x03, 0xbc, 0x92, 0x2a, 0xa7, 0xea, + 0x95, 0x84, 0x3e, 0x16, 0xf0, 0x78, 0xae, 0xe7, 0x7d, 0xe8, 0x7e, 0x0c, 0x10, 0x3b, 0x33, 0xb2, + 0x2d, 0x30, 0x97, 0x9e, 0x87, 0x99, 0xe4, 0xf0, 0x1d, 0xcb, 0x2a, 0xf2, 0x3b, 0x43, 0xb1, 0xf5, + 0x95, 0x4b, 0xfe, 0x08, 0x86, 0xa7, 0xaf, 0x25, 0x96, 0x0c, 0x17, 0xab, 0x5e, 0xbf, 0x6f, 0x23, + 0x72, 0xb2, 0xeb, 0xe6, 0x94, 0xbd, 0xd9, 0xca, 0xce, 0x5b, 0x03, 0x2e, 0x4a, 0x63, 0xc4, 0x2e, + 0x7b, 0x1b, 0x9b, 0x44, 0xdf, 0x3a, 0x96, 0xbd, 0xa5, 0x4e, 0xb5, 0xe0, 0x10, 0x89, 0x94, 0x8b, + 0xea, 0x71, 0x18, 0xdb, 0x36, 0x3d, 0x33, 0x88, 0x48, 0x22, 0xe1, 0x78, 0x89, 0x17, 0xe3, 0x00, + 0xae, 0x2e, 0xc6, 0x78, 0xc9, 0xaa, 0xd3, 0x73, 0x2c, 0xa7, 0xb3, 0x37, 0xbf, 0xa3, 0xb9, 0x04, + 0x3b, 0x7d, 0x5f, 0x60, 0x3b, 0x6a, 0x8f, 0x96, 0xe0, 0xaa, 0x84, 0x2d, 0xf3, 0x4d, 0xf5, 0x71, + 0xd0, 0xfd, 0xab, 0x6a, 0x20, 0x60, 0x89, 0x07, 0x67, 0xdf, 0x54, 0xe0, 0x41, 0x92, 0xc7, 0x43, + 0x85, 0x90, 0x52, 0x7a, 0x0f, 0xe7, 0x32, 0x69, 0x11, 0xba, 0x32, 0x0f, 0x8c, 0xf3, 0xbb, 0x86, + 0xee, 0xc6, 0x92, 0xb2, 0x55, 0x4a, 0x59, 0x81, 0x32, 0x66, 0x7c, 0x50, 0x4a, 0x36, 0xf4, 0x1b, + 0x0a, 0x9c, 0xb7, 0x32, 0x76, 0xa1, 0x10, 0x2c, 0x56, 0xef, 0xc7, 0x0e, 0xe7, 0x57, 0x6f, 0x59, + 0x10, 0x9c, 0xd9, 0x17, 0xf4, 0xb7, 0x73, 0x1f, 0xfc, 0x8f, 0x94, 0x48, 0x93, 0x7d, 0xd8, 0x62, + 0x2c, 0xf0, 0xf6, 0xff, 0x63, 0x30, 0xe1, 0x44, 0xdb, 0x55, 0x04, 0x69, 0xb8, 0x5d, 0xb6, 0x77, + 0x12, 0x07, 0xe0, 0xce, 0x0c, 0x52, 0x01, 0x96, 0x09, 0xa2, 0x2f, 0x29, 0x80, 0x8c, 0x94, 0x60, + 0x22, 0x1c, 0x2a, 0xf0, 0xc9, 0x0b, 0x89, 0xfc, 0xf6, 0x36, 0x5d, 0x8e, 0x33, 0x7a, 0xc1, 0x96, + 0x9a, 0x9f, 0xc1, 0x43, 0x44, 0x5c, 0xd1, 0xd2, 0x4b, 0x2d, 0x8b, 0x3f, 0xf1, 0xa5, 0x96, 0x05, + 0xc1, 0x99, 0x7d, 0x51, 0xff, 0xe5, 0x18, 0xb7, 0x51, 0xb0, 0xbb, 0x35, 0x1d, 0x46, 0xd7, 0x99, + 0x51, 0x4b, 0x70, 0x8f, 0xe2, 0x26, 0x34, 0x6e, 0x1b, 0xe3, 0xd2, 0x34, 0xff, 0x1f, 0x0b, 0xd4, + 0x68, 0x0e, 0x60, 0xdd, 0x72, 0xf4, 0xad, 0x46, 0xab, 0x89, 0x03, 0x15, 0x8d, 0xed, 0xd8, 0x7a, + 0x58, 0x8a, 0xa5, 0x1a, 0xe8, 0xc3, 0x30, 0x64, 0xd8, 0x81, 0x51, 0xef, 0xd9, 0x32, 0xc6, 0xa3, + 0xe8, 0x55, 0x48, 0x73, 0xb9, 0x8d, 0x29, 0x56, 0xe4, 0x40, 0xd5, 0x16, 0x66, 0x00, 0xc1, 0x01, + 0x8a, 0x27, 0x29, 0x0c, 0xed, 0x09, 0xa1, 0x19, 0x23, 0x28, 0xc1, 0x21, 0x11, 0x4a, 0x30, 0xb4, + 0x87, 0x8d, 0x94, 0x24, 0x18, 0x1a, 0xc3, 0x06, 0x19, 0x1c, 0x57, 0x64, 0xd3, 0xd6, 0xe8, 0xd1, + 0x4d, 0x5b, 0x53, 0xb9, 0xf7, 0x01, 0x1b, 0x30, 0xea, 0x6b, 0xa6, 0xed, 0x07, 0xae, 0xb9, 0xcf, + 0x17, 0xfe, 0x80, 0x55, 0x8a, 0x26, 0x32, 0x39, 0xb0, 0x9f, 0x1e, 0x16, 0xd8, 0xe9, 0x6a, 0xdc, + 0x66, 0xf9, 0x82, 0xc5, 0x86, 0x29, 0xbe, 0x1a, 0x79, 0xda, 0x61, 0xbe, 0x1a, 0xf9, 0xff, 0x58, + 0xa0, 0x46, 0x5b, 0x50, 0xf5, 0x02, 0xaf, 0x83, 0xf1, 0xd2, 0x59, 0x2a, 0x85, 0xcb, 0x81, 0x78, + 0xfe, 0x21, 0x7c, 0x0d, 0x42, 0x02, 0x48, 0x87, 0x31, 0x93, 0x3f, 0x57, 0x10, 0x99, 0x47, 0x9e, + 0x2d, 0x93, 0xa0, 0x29, 0xc8, 0xa6, 0xcd, 0x1f, 0xfb, 0x07, 0x98, 0xd5, 0x3f, 0x1d, 0xe6, 0xe6, + 0x69, 0xe1, 0xdd, 0xe5, 0xb2, 0xbc, 0x50, 0xc1, 0xab, 0x66, 0xa5, 0xc4, 0x8c, 0x85, 0x4f, 0x9e, + 0x63, 0xf9, 0xa0, 0x82, 0x57, 0xd1, 0x12, 0x15, 0xd4, 0x81, 0x6a, 0x80, 0xac, 0x94, 0xbd, 0x3f, + 0x48, 0xc5, 0xc7, 0x07, 0x34, 0x4c, 0xcc, 0x17, 0x22, 0x47, 0x8d, 0xac, 0x57, 0x6c, 0x52, 0x0c, + 0xc7, 0x23, 0xbd, 0x60, 0xcb, 0xf6, 0x7f, 0x1b, 0x2e, 0xe4, 0xff, 0xf6, 0x1c, 0x9c, 0x11, 0x9e, + 0x06, 0x2d, 0x96, 0x38, 0xda, 0xdf, 0x13, 0x5e, 0xf2, 0xcc, 0x0b, 0xa5, 0x11, 0x07, 0xe1, 0x64, + 0x5d, 0xf4, 0x75, 0x05, 0x1e, 0xe5, 0x1e, 0xfa, 0x0d, 0x7a, 0xde, 0xb2, 0x2c, 0xbb, 0x24, 0x4a, + 0xeb, 0x1b, 0xf9, 0x86, 0x8d, 0x1e, 0xdb, 0x37, 0xec, 0xb1, 0x83, 0xfd, 0xda, 0xa3, 0x8d, 0x23, + 0xe0, 0xc6, 0x47, 0xea, 0x81, 0x7a, 0x1b, 0xc6, 0xc3, 0x2d, 0x8c, 0x1e, 0x96, 0xa4, 0xfd, 0x88, + 0xcb, 0xde, 0x26, 0x7b, 0x5c, 0xf4, 0xaf, 0xc5, 0x44, 0x7f, 0x6e, 0x5d, 0x7a, 0x89, 0x16, 0x08, + 0x2d, 0x40, 0xfd, 0xcf, 0x0a, 0x5f, 0xb3, 0x22, 0xfb, 0xb8, 0x06, 0x13, 0x5d, 0x1e, 0xbe, 0x92, + 0xbd, 0x39, 0x55, 0x8a, 0xbf, 0x76, 0x5d, 0x8a, 0xd0, 0x60, 0x19, 0x27, 0xda, 0x4d, 0xa7, 0xc8, + 0xbf, 0x59, 0x92, 0xbf, 0x1c, 0x39, 0x53, 0x3e, 0x4a, 0xb7, 0xa1, 0x8a, 0x40, 0xe0, 0xd5, 0x9a, + 0xc8, 0x17, 0x9d, 0xf2, 0x6c, 0x3d, 0x34, 0xc3, 0xa7, 0xfa, 0xad, 0x0a, 0x64, 0xe6, 0x65, 0x42, + 0x2a, 0x8c, 0xf2, 0xb7, 0x16, 0x41, 0xf2, 0x50, 0xca, 0x11, 0xf9, 0x43, 0x0c, 0x2c, 0x20, 0xe8, + 0x0e, 0xd7, 0x2a, 0x6d, 0x83, 0x45, 0x61, 0x8a, 0xa6, 0x5e, 0x7e, 0xd6, 0xb3, 0x90, 0x55, 0x01, + 0x67, 0xb7, 0x43, 0xdb, 0x80, 0xba, 0xda, 0x6e, 0x12, 0x5b, 0x89, 0x54, 0x1d, 0x4b, 0x29, 0x6c, + 0x38, 0x83, 0x02, 0xdd, 0x8b, 0x9a, 0xae, 0x93, 0x9e, 0x4f, 0x0c, 0xfe, 0x89, 0x81, 0xe5, 0x9e, + 0xed, 0xc5, 0xf9, 0x38, 0x08, 0x27, 0xeb, 0xb2, 0xd4, 0xf1, 0xf1, 0x41, 0xfc, 0x71, 0xea, 0xf8, + 0x1f, 0xa7, 0x8e, 0x3f, 0xd9, 0xd4, 0xf1, 0xbf, 0x53, 0x81, 0x11, 0x76, 0xf1, 0xf4, 0x36, 0xf1, + 0x3a, 0x64, 0x7d, 0xcd, 0xbd, 0x81, 0xdf, 0x4c, 0xdc, 0xc0, 0xbf, 0x50, 0x82, 0xc6, 0xe0, 0x2b, + 0xf8, 0x0f, 0xc1, 0x45, 0x56, 0x6d, 0xde, 0x60, 0x7a, 0xa9, 0x47, 0x8c, 0x79, 0xc3, 0x60, 0x8f, + 0x62, 0x0f, 0x37, 0xed, 0x3d, 0x0c, 0x43, 0x7d, 0xd7, 0x4a, 0xbe, 0x13, 0x5f, 0xc3, 0x8b, 0x98, + 0x96, 0xab, 0x9f, 0x55, 0x60, 0x86, 0xe1, 0x96, 0x36, 0x30, 0xda, 0x81, 0xaa, 0x2b, 0x36, 0xb1, + 0x98, 0x9d, 0xa5, 0xe2, 0xdf, 0x96, 0xc1, 0x19, 0x44, 0xda, 0x38, 0xf1, 0x0b, 0x87, 0xc4, 0xd4, + 0x3f, 0x19, 0x85, 0xd9, 0xbc, 0x46, 0xe8, 0xf3, 0x0a, 0x5c, 0xd4, 0xa3, 0x53, 0x7a, 0xbe, 0xef, + 0x6f, 0x3a, 0xae, 0xe9, 0x9b, 0xe2, 0x56, 0xb6, 0xa8, 0xc4, 0xdc, 0x98, 0x0f, 0xbb, 0xc5, 0x22, + 0xf1, 0x34, 0x32, 0x49, 0xe0, 0x1c, 0xd2, 0xe8, 0x2d, 0x80, 0xad, 0x28, 0xfc, 0x5f, 0xa5, 0x44, + 0xc0, 0x71, 0xf6, 0xe1, 0x52, 0x8c, 0xc0, 0xa0, 0x57, 0x4c, 0x5b, 0x94, 0xca, 0x25, 0x7a, 0x2c, + 0xe1, 0xbf, 0xb7, 0x79, 0x9b, 0xec, 0xf5, 0x34, 0xd3, 0x2d, 0x95, 0xf0, 0x9f, 0xaf, 0xc3, 0xf6, + 0x2d, 0x81, 0x2b, 0x4e, 0x5d, 0x2a, 0x97, 0xe8, 0xa1, 0xbf, 0xa6, 0xc0, 0x14, 0x97, 0x0a, 0x85, + 0xbf, 0xa1, 0xe0, 0x6f, 0x77, 0x8a, 0xf7, 0xe0, 0x8e, 0x8c, 0x2e, 0xec, 0x04, 0xbb, 0xd3, 0x8c, + 0x83, 0xe2, 0x84, 0xe9, 0xe2, 0x38, 0xeb, 0x25, 0x8f, 0x2f, 0xc1, 0xe0, 0x96, 0x4f, 0x20, 0x07, + 0xa4, 0x74, 0x18, 0x72, 0x59, 0x3b, 0x0d, 0x4e, 0xd3, 0x67, 0xbd, 0x22, 0xbe, 0x6e, 0x2c, 0xd8, + 0xba, 0xbb, 0xc7, 0x5e, 0x03, 0xd1, 0x5e, 0x8d, 0x96, 0xe8, 0xd5, 0xc2, 0x6a, 0xa3, 0x19, 0xc3, + 0x16, 0xef, 0x55, 0x1a, 0x9c, 0xa6, 0xaf, 0xfe, 0x62, 0x05, 0x1e, 0xc8, 0x59, 0x6c, 0x39, 0x67, + 0xa6, 0x72, 0x5f, 0xcf, 0xcc, 0x1f, 0x82, 0x6c, 0xc0, 0x5c, 0xc6, 0xd9, 0x18, 0xbc, 0x5d, 0x5c, + 0xc6, 0x59, 0x67, 0x73, 0xdc, 0x55, 0x7e, 0x4f, 0x81, 0xb3, 0xa9, 0x70, 0x70, 0x47, 0x38, 0x1b, + 0x4e, 0xd1, 0xf1, 0xe2, 0x5d, 0xc9, 0x2c, 0xfc, 0x13, 0x99, 0x19, 0xf8, 0x5f, 0x86, 0xa9, 0x98, + 0xb3, 0x4a, 0x18, 0xab, 0x42, 0xc9, 0x8c, 0x55, 0x21, 0x87, 0xa2, 0xa8, 0x0c, 0x0a, 0x45, 0xa1, + 0x7e, 0xb2, 0x02, 0x97, 0xf2, 0x19, 0xcc, 0x5f, 0x9a, 0x65, 0x1f, 0x6e, 0xfd, 0x34, 0xa7, 0xff, + 0x4b, 0x33, 0x06, 0x7f, 0xff, 0x8c, 0xd8, 0xfa, 0xcc, 0x08, 0xfc, 0x1a, 0x8c, 0xb2, 0xf0, 0x1f, + 0x81, 0x10, 0xf1, 0xb3, 0xc5, 0xe3, 0x8a, 0x78, 0x5c, 0xc1, 0xe4, 0xff, 0x63, 0x81, 0x16, 0x35, + 0x61, 0x46, 0xb7, 0x9c, 0xbe, 0x21, 0xf2, 0xd8, 0x2d, 0x47, 0xba, 0x6c, 0x18, 0x24, 0xae, 0x91, + 0x80, 0xe3, 0x54, 0x0b, 0xd4, 0x96, 0xcd, 0xc2, 0xc5, 0x82, 0xc4, 0x35, 0x97, 0xdb, 0x3c, 0x30, + 0x7a, 0x68, 0x0e, 0x76, 0x01, 0x48, 0xb0, 0x8b, 0x83, 0x67, 0x4f, 0xcf, 0x17, 0x0c, 0x80, 0x17, + 0x32, 0x83, 0x40, 0x2a, 0x0f, 0x8b, 0x3c, 0x2c, 0x51, 0x41, 0x1e, 0x4c, 0x6c, 0x9a, 0xeb, 0xc4, + 0xb5, 0xb9, 0x78, 0x39, 0x52, 0x42, 0x74, 0xbe, 0x15, 0xe1, 0xe1, 0xe6, 0x0f, 0xa9, 0x00, 0xcb, + 0x54, 0x90, 0xc7, 0x85, 0x34, 0x6e, 0x08, 0x2b, 0x95, 0x30, 0x3b, 0x32, 0xb1, 0x45, 0x5f, 0x1a, + 0x95, 0x61, 0x89, 0x0c, 0x72, 0x00, 0xec, 0x30, 0xfa, 0x8f, 0xb8, 0xa4, 0x29, 0x46, 0x34, 0x0a, + 0x22, 0xc4, 0xc5, 0xb1, 0xe8, 0x37, 0x96, 0x48, 0xd0, 0xa1, 0xed, 0x46, 0x01, 0xa5, 0x84, 0x19, + 0xf9, 0x85, 0xb2, 0x51, 0xbd, 0x84, 0x65, 0x29, 0x2a, 0xc0, 0x32, 0x15, 0xfa, 0x95, 0xdd, 0x30, + 0x0e, 0x94, 0xb0, 0x29, 0x17, 0xfb, 0xca, 0x28, 0x9c, 0x94, 0xc8, 0xb1, 0x13, 0xfe, 0xc6, 0x12, + 0x09, 0xb4, 0x25, 0x5d, 0x29, 0x40, 0x09, 0x6b, 0xeb, 0x91, 0xae, 0x13, 0xde, 0x17, 0xd9, 0xa9, + 0x26, 0xd8, 0x9e, 0x7d, 0x48, 0xb2, 0x51, 0xb1, 0x08, 0x59, 0x94, 0x91, 0xa4, 0x6c, 0x56, 0x91, + 0x9b, 0xe1, 0xe4, 0x40, 0x37, 0xc3, 0x06, 0x15, 0x5a, 0x25, 0x5f, 0x76, 0xc6, 0x1c, 0xa6, 0x22, + 0x83, 0x6e, 0x3b, 0x09, 0xc4, 0xe9, 0xfa, 0xfc, 0x10, 0x24, 0x06, 0x6b, 0x3b, 0x2d, 0x1f, 0x82, + 0xbc, 0x0c, 0x87, 0x50, 0xb4, 0x03, 0x93, 0x9e, 0xe4, 0xb3, 0x28, 0x72, 0xa3, 0x95, 0xb9, 0x01, + 0x10, 0x0e, 0x8b, 0x2c, 0x28, 0x8a, 0x5c, 0x82, 0x63, 0x84, 0xd0, 0x5b, 0x30, 0x1e, 0x58, 0x2c, + 0xbd, 0xd9, 0x99, 0x12, 0x6f, 0xcf, 0xb2, 0x43, 0x7f, 0x45, 0x26, 0xc8, 0x00, 0xe4, 0xe1, 0x88, + 0x20, 0xda, 0x8e, 0xbf, 0x3f, 0x3f, 0x7b, 0x32, 0x2f, 0x6e, 0x43, 0x8f, 0x95, 0xbc, 0xb7, 0xe7, + 0x74, 0x76, 0xc9, 0x6e, 0xcf, 0xf1, 0xfa, 0x2e, 0x61, 0x61, 0x0d, 0xd9, 0x0c, 0xa1, 0x68, 0x76, + 0x17, 0x92, 0x40, 0x9c, 0xae, 0x8f, 0x3e, 0xa5, 0xc0, 0x0c, 0x4f, 0x2e, 0x47, 0x8f, 0x31, 0xc7, + 0x26, 0xb6, 0xef, 0xb1, 0xec, 0x69, 0x45, 0xdf, 0x87, 0xb5, 0x13, 0xc8, 0x78, 0x46, 0x8e, 0x64, + 0x29, 0x4e, 0x11, 0xa5, 0xab, 0x47, 0x7e, 0xb4, 0xcb, 0xb2, 0xb0, 0x15, 0x5d, 0x3d, 0xf2, 0x8b, + 0x60, 0xbe, 0x7a, 0xe4, 0x12, 0x1c, 0x23, 0xa4, 0xfe, 0x6b, 0x05, 0x20, 0x34, 0x93, 0x90, 0x53, + 0xb0, 0x1d, 0x91, 0x98, 0xed, 0xa8, 0x51, 0xce, 0xae, 0x43, 0x72, 0x9f, 0xad, 0xfe, 0x91, 0x02, + 0xd3, 0x51, 0xb5, 0x53, 0x50, 0x44, 0x8c, 0xb8, 0x22, 0xf2, 0x81, 0x92, 0x1f, 0x96, 0xa3, 0x8d, + 0xfc, 0x45, 0x45, 0xfe, 0x2c, 0x26, 0x64, 0xed, 0x48, 0x37, 0x64, 0xfc, 0x4e, 0xae, 0x55, 0xea, + 0x86, 0x4c, 0x7e, 0x0c, 0x18, 0x7d, 0x71, 0xc6, 0x8d, 0xd9, 0xc7, 0x63, 0x12, 0x4e, 0x99, 0x57, + 0xaf, 0xa1, 0x38, 0x13, 0xd0, 0xe6, 0x43, 0x70, 0x98, 0xb8, 0xe3, 0xca, 0x9c, 0x8f, 0x3b, 0x1a, + 0xce, 0x17, 0x7c, 0x69, 0x29, 0x7d, 0xf2, 0x40, 0x7e, 0xa7, 0x7e, 0x63, 0x1a, 0x26, 0x24, 0xb3, + 0xe2, 0x0f, 0xe5, 0x4e, 0xb4, 0x0f, 0x13, 0x7a, 0x18, 0xf6, 0x37, 0x18, 0xf9, 0xb2, 0x44, 0x43, + 0x96, 0x1b, 0x45, 0x14, 0xf6, 0xb0, 0x4c, 0x87, 0x0a, 0x07, 0xe1, 0x42, 0x1b, 0x3a, 0x89, 0xab, + 0xd8, 0x41, 0x8b, 0xeb, 0x69, 0x80, 0x40, 0xc8, 0x24, 0x86, 0x88, 0xd7, 0x16, 0xa6, 0xcd, 0x68, + 0x79, 0xb7, 0x42, 0x18, 0x96, 0xea, 0xa1, 0x37, 0x61, 0xca, 0x92, 0xa3, 0xc8, 0x0b, 0x11, 0xb8, + 0xd8, 0xcb, 0x8e, 0x58, 0x3c, 0x7a, 0x6e, 0x26, 0x8b, 0x15, 0xe1, 0x38, 0x2d, 0xb4, 0x05, 0xe3, + 0x56, 0x90, 0x22, 0x42, 0xc8, 0xc1, 0xcf, 0x17, 0x26, 0xcc, 0xb0, 0x70, 0xcf, 0x89, 0xf0, 0x27, + 0x8e, 0xf0, 0xd3, 0x75, 0x17, 0xfe, 0x28, 0xe7, 0x3d, 0x11, 0x51, 0x0b, 0xd7, 0x5d, 0x58, 0xe4, + 0x61, 0x89, 0x4a, 0xce, 0xed, 0x76, 0xb5, 0xd0, 0xed, 0x76, 0x1f, 0xce, 0xb9, 0xc4, 0x77, 0xf7, + 0x1a, 0x7b, 0x3a, 0x4b, 0xd5, 0xe2, 0xfa, 0x4c, 0x3b, 0x1d, 0x2f, 0x16, 0xa8, 0x05, 0xa7, 0x51, + 0xe1, 0x2c, 0xfc, 0xe8, 0x32, 0x0c, 0x53, 0xe1, 0x49, 0x04, 0x42, 0x63, 0x26, 0x0f, 0x2a, 0x5a, + 0x61, 0x56, 0x8a, 0xde, 0x07, 0x13, 0x3e, 0xd1, 0x37, 0x6d, 0x53, 0xd7, 0xac, 0x56, 0x53, 0x48, + 0xa5, 0x91, 0x2c, 0x12, 0x81, 0xb0, 0x5c, 0x0f, 0xd5, 0x61, 0xa8, 0x6f, 0x1a, 0x42, 0x1c, 0xfd, + 0xa9, 0xf0, 0x1a, 0xa0, 0xd5, 0xbc, 0xb7, 0x5f, 0x7b, 0x67, 0xe4, 0x1c, 0x1b, 0x7e, 0xc9, 0xb5, + 0xde, 0x56, 0xe7, 0x9a, 0xbf, 0xd7, 0x23, 0xde, 0xdc, 0x5a, 0xab, 0x89, 0x69, 0xe3, 0xac, 0xdb, + 0xfe, 0xa9, 0x63, 0xdc, 0xf6, 0x7f, 0x49, 0x81, 0x73, 0x5a, 0xf2, 0x06, 0x83, 0x78, 0xb3, 0xd3, + 0x25, 0xb8, 0x72, 0xf6, 0xb5, 0x48, 0xfd, 0x21, 0xf1, 0x81, 0xe7, 0xe6, 0xd3, 0xf4, 0x70, 0x56, + 0x27, 0x90, 0x0b, 0xa8, 0x6b, 0x76, 0xc2, 0x84, 0x10, 0x62, 0xaa, 0xcf, 0x14, 0x33, 0x44, 0x2c, + 0xa5, 0x30, 0xe1, 0x0c, 0xec, 0x68, 0x17, 0x26, 0xf4, 0xe8, 0x9e, 0x83, 0x25, 0x05, 0x2e, 0x2c, + 0xd4, 0x25, 0x2e, 0x4d, 0x44, 0xbe, 0x79, 0xe9, 0x16, 0x45, 0x26, 0x15, 0xde, 0x52, 0x4a, 0x0a, + 0xb3, 0xb8, 0xa9, 0x63, 0x9f, 0x7d, 0xb6, 0xf8, 0x2d, 0x65, 0x36, 0x46, 0x3c, 0x80, 0x1a, 0x8b, + 0x88, 0x62, 0xc5, 0x13, 0xb7, 0x30, 0x29, 0xb9, 0xe8, 0xdb, 0xc9, 0x44, 0x12, 0x18, 0xbe, 0x3a, + 0x13, 0x85, 0x38, 0x49, 0x51, 0xfd, 0x1f, 0x0a, 0xa4, 0x84, 0x60, 0xa4, 0xc3, 0x18, 0xc5, 0xdd, + 0x5c, 0x6e, 0x0b, 0x69, 0xec, 0xd9, 0x82, 0x27, 0x18, 0xc3, 0xc1, 0x6d, 0x9e, 0xe2, 0x07, 0x0e, + 0x30, 0x53, 0xb9, 0xda, 0x96, 0x22, 0x9c, 0x0a, 0xa9, 0xb3, 0x98, 0x94, 0x20, 0x87, 0x4a, 0xe5, + 0x72, 0xb5, 0x5c, 0x82, 0x63, 0x84, 0xd4, 0x45, 0x80, 0x48, 0x77, 0x29, 0xed, 0xd4, 0xf2, 0x9f, + 0x46, 0xe0, 0x42, 0x59, 0xaf, 0x6f, 0x96, 0x5c, 0x83, 0xa5, 0x5e, 0x9f, 0xdf, 0xf0, 0x89, 0x7b, + 0xe7, 0xce, 0x52, 0x98, 0x96, 0xba, 0x60, 0x76, 0x8f, 0x28, 0x79, 0x7f, 0x0a, 0x23, 0xce, 0xa1, + 0xc4, 0xf4, 0x36, 0x91, 0xf7, 0x13, 0x53, 0x19, 0x8f, 0xe5, 0x9c, 0xe6, 0x71, 0x13, 0xb8, 0xde, + 0x96, 0x04, 0xe2, 0x74, 0xfd, 0x24, 0x12, 0x9e, 0x06, 0x9e, 0xca, 0x08, 0x4a, 0x1a, 0x09, 0xcf, + 0x05, 0x9f, 0xae, 0x2f, 0x23, 0xe1, 0x33, 0x45, 0xf7, 0xc6, 0x48, 0x1a, 0x49, 0x08, 0xc4, 0xe9, + 0xfa, 0xc8, 0x80, 0xcb, 0x2e, 0xd1, 0x9d, 0x6e, 0x97, 0xd8, 0x06, 0xcf, 0x5c, 0xa5, 0xb9, 0x1d, + 0xd3, 0xbe, 0xe1, 0x6a, 0xac, 0x22, 0x13, 0x03, 0x14, 0x16, 0xff, 0xfb, 0x32, 0x1e, 0x50, 0x0f, + 0x0f, 0xc4, 0x82, 0xba, 0x70, 0xa6, 0xcf, 0x62, 0xad, 0xbb, 0x2d, 0xdb, 0x27, 0xee, 0xb6, 0x66, + 0x09, 0x93, 0x57, 0xa1, 0xdc, 0x9d, 0x6b, 0x71, 0x54, 0x38, 0x89, 0x1b, 0xed, 0xd1, 0xb3, 0x59, + 0x74, 0x47, 0x22, 0x59, 0x2d, 0x9e, 0x7e, 0x06, 0xa7, 0xd1, 0xe1, 0x2c, 0x1a, 0xea, 0xdf, 0x54, + 0x40, 0xb8, 0x55, 0xd2, 0xa3, 0x5a, 0xba, 0x62, 0xa9, 0x26, 0xae, 0x57, 0x82, 0x80, 0xdf, 0x95, + 0xcc, 0x80, 0xdf, 0xef, 0x96, 0x02, 0x72, 0x8c, 0x47, 0x72, 0x0d, 0xc7, 0x2c, 0xe5, 0x2b, 0xf8, + 0x09, 0x18, 0xeb, 0xb9, 0x66, 0x57, 0x73, 0xf7, 0x84, 0x88, 0xc9, 0x04, 0x2e, 0x71, 0xa3, 0x47, + 0xf7, 0x8e, 0x80, 0xaa, 0xdf, 0x55, 0x40, 0xb4, 0x66, 0xa9, 0x35, 0x8e, 0x94, 0x61, 0xe1, 0x50, + 0xe7, 0x2a, 0x29, 0x33, 0xc4, 0x50, 0x6e, 0x66, 0x88, 0xfb, 0x94, 0x30, 0xe1, 0x9b, 0x0a, 0x9c, + 0x89, 0x47, 0x47, 0xf1, 0xd0, 0xbb, 0x60, 0x4c, 0xc4, 0x51, 0x13, 0x31, 0x90, 0x58, 0xd3, 0x20, + 0x89, 0x7b, 0x00, 0x8b, 0x1b, 0x9c, 0xca, 0xa8, 0x7d, 0xd9, 0x51, 0x5a, 0x0e, 0x51, 0xc0, 0x7e, + 0x75, 0x06, 0x46, 0x79, 0x08, 0x2e, 0x7a, 0xb8, 0x65, 0x3c, 0xc6, 0x5b, 0x2c, 0x11, 0xea, 0xab, + 0xc8, 0xdb, 0x29, 0x39, 0xf0, 0x73, 0x65, 0x60, 0xe0, 0xe7, 0x36, 0x4f, 0x46, 0x53, 0xe6, 0x9e, + 0xa1, 0x81, 0x5b, 0x22, 0x23, 0x6d, 0x90, 0x88, 0xa6, 0x1f, 0x33, 0xbf, 0x0f, 0x97, 0x90, 0x73, + 0xf8, 0x10, 0x48, 0x46, 0xf8, 0xe9, 0x81, 0x06, 0xf8, 0x20, 0xc4, 0xd1, 0x48, 0x09, 0x8f, 0x47, + 0x31, 0xea, 0x47, 0x08, 0x71, 0x14, 0xee, 0xa6, 0xd1, 0xdc, 0xdd, 0xd4, 0x81, 0x31, 0xb1, 0x1f, + 0x04, 0x77, 0x7c, 0xb6, 0x4c, 0x5e, 0x17, 0x29, 0x40, 0x27, 0x2f, 0xc0, 0x01, 0x76, 0x7a, 0xe6, + 0x76, 0xb5, 0x5d, 0xb3, 0xdb, 0xef, 0x32, 0x9e, 0x38, 0x22, 0x57, 0x65, 0xc5, 0x38, 0x80, 0xb3, + 0xaa, 0xdc, 0x55, 0x94, 0xa9, 0x36, 0x72, 0x55, 0x91, 0x54, 0x3d, 0x80, 0xa3, 0x57, 0xa1, 0xda, + 0xd5, 0x76, 0xdb, 0x7d, 0xb7, 0x43, 0x84, 0xed, 0x3d, 0xdf, 0xf4, 0xd6, 0xf7, 0x4d, 0x6b, 0x8e, + 0x2a, 0xe5, 0xbe, 0x3b, 0xd7, 0xb2, 0xfd, 0x3b, 0x6e, 0xdb, 0x77, 0xc3, 0xcc, 0x0e, 0x4b, 0x02, + 0x0b, 0x0e, 0xf1, 0x21, 0x0b, 0xa6, 0xbb, 0xda, 0xee, 0x9a, 0xad, 0x85, 0xb9, 0x9f, 0x27, 0x0a, + 0x52, 0x60, 0xf7, 0xd1, 0x4b, 0x31, 0x5c, 0x38, 0x81, 0x3b, 0xe3, 0xea, 0x7b, 0xf2, 0x7e, 0x5d, + 0x7d, 0xcf, 0x87, 0x0f, 0x08, 0xa6, 0xd8, 0x32, 0x7c, 0x30, 0xeb, 0x3d, 0xc2, 0xe0, 0xb7, 0x01, + 0xaf, 0x85, 0x6f, 0x03, 0xa6, 0x4b, 0x5c, 0x52, 0x0e, 0x78, 0x17, 0xb0, 0x0d, 0x13, 0x86, 0xe6, + 0x6b, 0xbc, 0xd4, 0x9b, 0x3d, 0x53, 0xc2, 0x3e, 0xd8, 0x0c, 0xf1, 0x48, 0x39, 0x04, 0x23, 0xdc, + 0x58, 0x26, 0x84, 0xee, 0xf0, 0xdc, 0xc0, 0x16, 0xf1, 0xa3, 0x2a, 0xcc, 0x4c, 0x3e, 0xc3, 0xb6, + 0x50, 0x98, 0xc9, 0x37, 0x55, 0x01, 0x67, 0xb7, 0x8b, 0x02, 0x37, 0x9c, 0xcd, 0x0e, 0xdc, 0x80, + 0x7e, 0x25, 0xcb, 0x9e, 0x8e, 0x4a, 0xbc, 0xe4, 0xe2, 0xfc, 0xa1, 0xb0, 0x55, 0xfd, 0x1f, 0x2a, + 0x30, 0xdb, 0xcd, 0x49, 0xb6, 0x27, 0xec, 0xfc, 0x6b, 0x65, 0x78, 0x44, 0x6e, 0x06, 0xbf, 0xfa, + 0xa3, 0x07, 0xfb, 0xb5, 0x43, 0xf3, 0xfc, 0xe1, 0xdc, 0xce, 0x21, 0x0f, 0xc6, 0xbc, 0x3d, 0x4f, + 0xf7, 0x2d, 0x6f, 0xf6, 0x7c, 0x89, 0xa4, 0x6e, 0x82, 0xbf, 0xb6, 0x39, 0x2a, 0xce, 0x60, 0xa3, + 0xe0, 0xd0, 0xbc, 0x14, 0x07, 0x94, 0xca, 0x3e, 0xbe, 0x2d, 0x11, 0x85, 0xee, 0xd2, 0x75, 0x98, + 0x94, 0x3b, 0x79, 0xac, 0x37, 0xbf, 0xbf, 0xa9, 0xc0, 0x4c, 0xf2, 0xec, 0x92, 0xd3, 0x2f, 0x2b, + 0xf7, 0x39, 0xfd, 0xb2, 0xe4, 0x7e, 0x53, 0x19, 0xe0, 0x7e, 0xf3, 0x1c, 0x5c, 0xcc, 0x5e, 0xce, + 0x54, 0x9a, 0x64, 0x49, 0xcf, 0x85, 0x06, 0x17, 0x65, 0x50, 0xa1, 0x85, 0x98, 0xc3, 0xd4, 0x8f, + 0x41, 0x32, 0xf2, 0x28, 0xda, 0x82, 0x71, 0xcf, 0xdb, 0xe4, 0xf1, 0xe4, 0xc4, 0x57, 0x16, 0xf4, + 0xc5, 0x0d, 0xa2, 0xd2, 0x89, 0xa7, 0x5a, 0xc1, 0x4f, 0x1c, 0xe1, 0xaf, 0x7f, 0xe8, 0xdb, 0x3f, + 0xb8, 0xf2, 0x8e, 0x3f, 0xf8, 0xc1, 0x95, 0x77, 0x7c, 0xef, 0x07, 0x57, 0xde, 0xf1, 0x0b, 0x07, + 0x57, 0x94, 0x6f, 0x1f, 0x5c, 0x51, 0xfe, 0xe0, 0xe0, 0x8a, 0xf2, 0xbd, 0x83, 0x2b, 0xca, 0x7f, + 0x38, 0xb8, 0xa2, 0xfc, 0xf5, 0x3f, 0xb9, 0xf2, 0x8e, 0x57, 0x9f, 0x8a, 0xc8, 0x5f, 0x0b, 0xa8, + 0x46, 0xff, 0xf4, 0xb6, 0x3a, 0xd7, 0x28, 0xf9, 0xe0, 0x99, 0x38, 0x27, 0xff, 0xff, 0x03, 0x00, + 0x00, 0xff, 0xff, 0x05, 0xe7, 0xf0, 0xff, 0x64, 0xe1, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -5591,6 +5714,13 @@ func (m *AdmissionPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.KubeconfigSecretName != nil { + i -= len(*m.KubeconfigSecretName) + copy(dAtA[i:], *m.KubeconfigSecretName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.KubeconfigSecretName))) + i-- + dAtA[i] = 0x22 + } if m.Disabled != nil { i-- if *m.Disabled { @@ -7358,6 +7488,16 @@ func (m *ControllerResource) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.WorkerlessSupported != nil { + i-- + if *m.WorkerlessSupported { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if m.Lifecycle != nil { { size, err := m.Lifecycle.MarshalToSizedBuffer(dAtA[:i]) @@ -7800,6 +7940,82 @@ func (m *DeploymentRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ETCDEncryptionKeyRotation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ExpirableVersion) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8662,16 +8878,6 @@ func (m *KubeAPIServerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - if m.EnableBasicAuthentication != nil { - i-- - if *m.EnableBasicAuthentication { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x28 - } if m.AuditConfig != nil { { size, err := m.AuditConfig.MarshalToSizedBuffer(dAtA[:i]) @@ -8977,6 +9183,20 @@ func (m *KubeletConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.MemorySwap != nil { + { + size, err := m.MemorySwap.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd2 + } if m.StreamingConnectionIdleTimeout != nil { { size, err := m.StreamingConnectionIdleTimeout.MarshalToSizedBuffer(dAtA[:i]) @@ -10384,15 +10604,17 @@ func (m *MaintenanceAutoUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - i-- - if m.MachineImageVersion { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if m.MachineImageVersion != nil { + i-- + if *m.MachineImageVersion { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 } i-- - dAtA[i] = 0x10 - i-- if m.KubernetesVersion { dAtA[i] = 1 } else { @@ -10436,6 +10658,36 @@ func (m *MaintenanceTimeWindow) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MemorySwapConfiguration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MemorySwapConfiguration) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MemorySwapConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.SwapBehavior != nil { + i -= len(*m.SwapBehavior) + copy(dAtA[i:], *m.SwapBehavior) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SwapBehavior))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *Monitoring) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -10571,11 +10823,13 @@ func (m *Networking) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa + if m.Type != nil { + i -= len(*m.Type) + copy(dAtA[i:], *m.Type) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Type))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -11942,13 +12196,6 @@ func (m *SeedDNS) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if m.IngressDomain != nil { - i -= len(*m.IngressDomain) - copy(dAtA[i:], *m.IngressDomain) - i = encodeVarintGenerated(dAtA, i, uint64(len(*m.IngressDomain))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } @@ -11972,30 +12219,6 @@ func (m *SeedDNSProvider) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Zones != nil { - { - size, err := m.Zones.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Domains != nil { - { - size, err := m.Domains.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } { size, err := m.SecretRef.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -12238,6 +12461,30 @@ func (m *SeedSettingDependencyWatchdog) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.Prober != nil { + { + size, err := m.Prober.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Weeder != nil { + { + size, err := m.Weeder.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } if m.Probe != nil { { size, err := m.Probe.MarshalToSizedBuffer(dAtA[:i]) @@ -12327,6 +12574,68 @@ func (m *SeedSettingDependencyWatchdogProbe) MarshalToSizedBuffer(dAtA []byte) ( return len(dAtA) - i, nil } +func (m *SeedSettingDependencyWatchdogProber) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingExcessCapacityReservation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12547,6 +12856,37 @@ func (m *SeedSettingScheduling) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SeedSettingTopologyAwareRouting) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingTopologyAwareRouting) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingTopologyAwareRouting) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingVerticalPodAutoscaler) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12598,6 +12938,18 @@ func (m *SeedSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.TopologyAwareRouting != nil { + { + size, err := m.TopologyAwareRouting.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } if m.DependencyWatchdog != nil { { size, err := m.DependencyWatchdog.MarshalToSizedBuffer(dAtA[:i]) @@ -13065,6 +13417,82 @@ func (m *ServiceAccountConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ServiceAccountKeyRotation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *Shoot) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13281,82 +13709,6 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func (m *ShootETCDEncryptionKeyRotation) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ShootETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootKubeconfigRotation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13629,82 +13981,6 @@ func (m *ShootSSHKeypairRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *ShootServiceAccountKeyRotation) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ShootServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13813,11 +14089,13 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x72 } - i -= len(m.SecretBindingName) - copy(dAtA[i:], m.SecretBindingName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretBindingName))) - i-- - dAtA[i] = 0x6a + if m.SecretBindingName != nil { + i -= len(*m.SecretBindingName) + copy(dAtA[i:], *m.SecretBindingName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SecretBindingName))) + i-- + dAtA[i] = 0x6a + } i -= len(m.Region) copy(dAtA[i:], m.Region) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Region))) @@ -13864,16 +14142,18 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x42 } - { - size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if m.Networking != nil { + { + size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x3a } - i-- - dAtA[i] = 0x3a { size, err := m.Kubernetes.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -14652,6 +14932,32 @@ func (m *Worker) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Sysctls) > 0 { + keysForSysctls := make([]string, 0, len(m.Sysctls)) + for k := range m.Sysctls { + keysForSysctls = append(keysForSysctls, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + for iNdEx := len(keysForSysctls) - 1; iNdEx >= 0; iNdEx-- { + v := m.Sysctls[string(keysForSysctls[iNdEx])] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(keysForSysctls[iNdEx]) + copy(dAtA[i:], keysForSysctls[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(keysForSysctls[iNdEx]))) + i-- + dAtA[i] = 0xa + i = encodeVarintGenerated(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + } if m.MachineControllerManagerSettings != nil { { size, err := m.MachineControllerManagerSettings.MarshalToSizedBuffer(dAtA[:i]) @@ -15040,6 +15346,10 @@ func (m *AdmissionPlugin) Size() (n int) { if m.Disabled != nil { n += 2 } + if m.KubeconfigSecretName != nil { + l = len(*m.KubeconfigSecretName) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -15695,6 +16005,9 @@ func (m *ControllerResource) Size() (n int) { l = m.Lifecycle.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.WorkerlessSupported != nil { + n += 2 + } return n } @@ -15861,6 +16174,33 @@ func (m *DeploymentRef) Size() (n int) { return n } +func (m *ETCDEncryptionKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationFinishedTime != nil { + l = m.LastInitiationFinishedTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastCompletionTriggeredTime != nil { + l = m.LastCompletionTriggeredTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ExpirableVersion) Size() (n int) { if m == nil { return 0 @@ -16159,9 +16499,6 @@ func (m *KubeAPIServerConfig) Size() (n int) { l = m.AuditConfig.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.EnableBasicAuthentication != nil { - n += 2 - } if m.OIDCConfig != nil { l = m.OIDCConfig.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -16390,6 +16727,10 @@ func (m *KubeletConfig) Size() (n int) { l = m.StreamingConnectionIdleTimeout.Size() n += 2 + l + sovGenerated(uint64(l)) } + if m.MemorySwap != nil { + l = m.MemorySwap.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -16828,7 +17169,9 @@ func (m *MaintenanceAutoUpdate) Size() (n int) { var l int _ = l n += 2 - n += 2 + if m.MachineImageVersion != nil { + n += 2 + } return n } @@ -16845,6 +17188,19 @@ func (m *MaintenanceTimeWindow) Size() (n int) { return n } +func (m *MemorySwapConfiguration) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.SwapBehavior != nil { + l = len(*m.SwapBehavior) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *Monitoring) Size() (n int) { if m == nil { return 0 @@ -16877,8 +17233,10 @@ func (m *Networking) Size() (n int) { } var l int _ = l - l = len(m.Type) - n += 1 + l + sovGenerated(uint64(l)) + if m.Type != nil { + l = len(*m.Type) + n += 1 + l + sovGenerated(uint64(l)) + } if m.ProviderConfig != nil { l = m.ProviderConfig.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17402,10 +17760,6 @@ func (m *SeedDNS) Size() (n int) { } var l int _ = l - if m.IngressDomain != nil { - l = len(*m.IngressDomain) - n += 1 + l + sovGenerated(uint64(l)) - } if m.Provider != nil { l = m.Provider.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17423,14 +17777,6 @@ func (m *SeedDNSProvider) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = m.SecretRef.Size() n += 1 + l + sovGenerated(uint64(l)) - if m.Domains != nil { - l = m.Domains.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Zones != nil { - l = m.Zones.Size() - n += 1 + l + sovGenerated(uint64(l)) - } return n } @@ -17532,6 +17878,14 @@ func (m *SeedSettingDependencyWatchdog) Size() (n int) { l = m.Probe.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Weeder != nil { + l = m.Weeder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Prober != nil { + l = m.Prober.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17555,6 +17909,26 @@ func (m *SeedSettingDependencyWatchdogProbe) Size() (n int) { return n } +func (m *SeedSettingDependencyWatchdogProber) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + +func (m *SeedSettingDependencyWatchdogWeeder) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingExcessCapacityReservation) Size() (n int) { if m == nil { return 0 @@ -17635,6 +18009,16 @@ func (m *SeedSettingScheduling) Size() (n int) { return n } +func (m *SeedSettingTopologyAwareRouting) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingVerticalPodAutoscaler) Size() (n int) { if m == nil { return 0 @@ -17675,6 +18059,10 @@ func (m *SeedSettings) Size() (n int) { l = m.DependencyWatchdog.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.TopologyAwareRouting != nil { + l = m.TopologyAwareRouting.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17830,81 +18218,7 @@ func (m *ServiceAccountConfig) Size() (n int) { return n } -func (m *Shoot) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.ObjectMeta.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Spec.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Status.Size() - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *ShootAdvertisedAddress) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.URL) - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *ShootCredentials) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Rotation != nil { - l = m.Rotation.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - -func (m *ShootCredentialsRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.CertificateAuthorities != nil { - l = m.CertificateAuthorities.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Kubeconfig != nil { - l = m.Kubeconfig.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.SSHKeypair != nil { - l = m.SSHKeypair.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Observability != nil { - l = m.Observability.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.ServiceAccountKey != nil { - l = m.ServiceAccountKey.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.ETCDEncryptionKey != nil { - l = m.ETCDEncryptionKey.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - -func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { +func (m *ServiceAccountKeyRotation) Size() (n int) { if m == nil { return 0 } @@ -17931,6 +18245,80 @@ func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { return n } +func (m *Shoot) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ShootAdvertisedAddress) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.URL) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ShootCredentials) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Rotation != nil { + l = m.Rotation.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ShootCredentialsRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.CertificateAuthorities != nil { + l = m.CertificateAuthorities.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Kubeconfig != nil { + l = m.Kubeconfig.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.SSHKeypair != nil { + l = m.SSHKeypair.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Observability != nil { + l = m.Observability.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ServiceAccountKey != nil { + l = m.ServiceAccountKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ETCDEncryptionKey != nil { + l = m.ETCDEncryptionKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ShootKubeconfigRotation) Size() (n int) { if m == nil { return 0 @@ -18035,33 +18423,6 @@ func (m *ShootSSHKeypairRotation) Size() (n int) { return n } -func (m *ShootServiceAccountKeyRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - if m.LastCompletionTime != nil { - l = m.LastCompletionTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationTime != nil { - l = m.LastInitiationTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationFinishedTime != nil { - l = m.LastInitiationFinishedTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastCompletionTriggeredTime != nil { - l = m.LastCompletionTriggeredTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *ShootSpec) Size() (n int) { if m == nil { return 0 @@ -18090,8 +18451,10 @@ func (m *ShootSpec) Size() (n int) { } l = m.Kubernetes.Size() n += 1 + l + sovGenerated(uint64(l)) - l = m.Networking.Size() - n += 1 + l + sovGenerated(uint64(l)) + if m.Networking != nil { + l = m.Networking.Size() + n += 1 + l + sovGenerated(uint64(l)) + } if m.Maintenance != nil { l = m.Maintenance.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -18108,8 +18471,10 @@ func (m *ShootSpec) Size() (n int) { } l = len(m.Region) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SecretBindingName) - n += 1 + l + sovGenerated(uint64(l)) + if m.SecretBindingName != nil { + l = len(*m.SecretBindingName) + n += 1 + l + sovGenerated(uint64(l)) + } if m.SeedName != nil { l = len(*m.SeedName) n += 1 + l + sovGenerated(uint64(l)) @@ -18491,6 +18856,14 @@ func (m *Worker) Size() (n int) { l = m.MachineControllerManagerSettings.Size() n += 2 + l + sovGenerated(uint64(l)) } + if len(m.Sysctls) > 0 { + for k, v := range m.Sysctls { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } return n } @@ -18569,6 +18942,7 @@ func (this *AdmissionPlugin) String() string { `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "RawExtension", "runtime.RawExtension", 1) + `,`, `Disabled:` + valueToStringGenerated(this.Disabled) + `,`, + `KubeconfigSecretName:` + valueToStringGenerated(this.KubeconfigSecretName) + `,`, `}`, }, "") return s @@ -19040,6 +19414,7 @@ func (this *ControllerResource) String() string { `ReconcileTimeout:` + strings.Replace(fmt.Sprintf("%v", this.ReconcileTimeout), "Duration", "v11.Duration", 1) + `,`, `Primary:` + valueToStringGenerated(this.Primary) + `,`, `Lifecycle:` + strings.Replace(this.Lifecycle.String(), "ControllerResourceLifecycle", "ControllerResourceLifecycle", 1) + `,`, + `WorkerlessSupported:` + valueToStringGenerated(this.WorkerlessSupported) + `,`, `}`, }, "") return s @@ -19151,6 +19526,20 @@ func (this *DeploymentRef) String() string { }, "") return s } +func (this *ETCDEncryptionKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ETCDEncryptionKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *ExpirableVersion) String() string { if this == nil { return "nil" @@ -19381,7 +19770,6 @@ func (this *KubeAPIServerConfig) String() string { `AdmissionPlugins:` + repeatedStringForAdmissionPlugins + `,`, `APIAudiences:` + fmt.Sprintf("%v", this.APIAudiences) + `,`, `AuditConfig:` + strings.Replace(this.AuditConfig.String(), "AuditConfig", "AuditConfig", 1) + `,`, - `EnableBasicAuthentication:` + valueToStringGenerated(this.EnableBasicAuthentication) + `,`, `OIDCConfig:` + strings.Replace(this.OIDCConfig.String(), "OIDCConfig", "OIDCConfig", 1) + `,`, `RuntimeConfig:` + mapStringForRuntimeConfig + `,`, `ServiceAccountConfig:` + strings.Replace(this.ServiceAccountConfig.String(), "ServiceAccountConfig", "ServiceAccountConfig", 1) + `,`, @@ -19486,6 +19874,7 @@ func (this *KubeletConfig) String() string { `ContainerLogMaxFiles:` + valueToStringGenerated(this.ContainerLogMaxFiles) + `,`, `ProtectKernelDefaults:` + valueToStringGenerated(this.ProtectKernelDefaults) + `,`, `StreamingConnectionIdleTimeout:` + strings.Replace(fmt.Sprintf("%v", this.StreamingConnectionIdleTimeout), "Duration", "v11.Duration", 1) + `,`, + `MemorySwap:` + strings.Replace(this.MemorySwap.String(), "MemorySwapConfiguration", "MemorySwapConfiguration", 1) + `,`, `}`, }, "") return s @@ -19757,7 +20146,7 @@ func (this *MaintenanceAutoUpdate) String() string { } s := strings.Join([]string{`&MaintenanceAutoUpdate{`, `KubernetesVersion:` + fmt.Sprintf("%v", this.KubernetesVersion) + `,`, - `MachineImageVersion:` + fmt.Sprintf("%v", this.MachineImageVersion) + `,`, + `MachineImageVersion:` + valueToStringGenerated(this.MachineImageVersion) + `,`, `}`, }, "") return s @@ -19773,6 +20162,16 @@ func (this *MaintenanceTimeWindow) String() string { }, "") return s } +func (this *MemorySwapConfiguration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MemorySwapConfiguration{`, + `SwapBehavior:` + valueToStringGenerated(this.SwapBehavior) + `,`, + `}`, + }, "") + return s +} func (this *Monitoring) String() string { if this == nil { return "nil" @@ -19799,7 +20198,7 @@ func (this *Networking) String() string { return "nil" } s := strings.Join([]string{`&Networking{`, - `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Type:` + valueToStringGenerated(this.Type) + `,`, `ProviderConfig:` + strings.Replace(fmt.Sprintf("%v", this.ProviderConfig), "RawExtension", "runtime.RawExtension", 1) + `,`, `Pods:` + valueToStringGenerated(this.Pods) + `,`, `Nodes:` + valueToStringGenerated(this.Nodes) + `,`, @@ -20193,7 +20592,6 @@ func (this *SeedDNS) String() string { return "nil" } s := strings.Join([]string{`&SeedDNS{`, - `IngressDomain:` + valueToStringGenerated(this.IngressDomain) + `,`, `Provider:` + strings.Replace(this.Provider.String(), "SeedDNSProvider", "SeedDNSProvider", 1) + `,`, `}`, }, "") @@ -20206,8 +20604,6 @@ func (this *SeedDNSProvider) String() string { s := strings.Join([]string{`&SeedDNSProvider{`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `SecretRef:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.SecretRef), "SecretReference", "v1.SecretReference", 1), `&`, ``, 1) + `,`, - `Domains:` + strings.Replace(this.Domains.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, - `Zones:` + strings.Replace(this.Zones.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, `}`, }, "") return s @@ -20273,6 +20669,8 @@ func (this *SeedSettingDependencyWatchdog) String() string { s := strings.Join([]string{`&SeedSettingDependencyWatchdog{`, `Endpoint:` + strings.Replace(this.Endpoint.String(), "SeedSettingDependencyWatchdogEndpoint", "SeedSettingDependencyWatchdogEndpoint", 1) + `,`, `Probe:` + strings.Replace(this.Probe.String(), "SeedSettingDependencyWatchdogProbe", "SeedSettingDependencyWatchdogProbe", 1) + `,`, + `Weeder:` + strings.Replace(this.Weeder.String(), "SeedSettingDependencyWatchdogWeeder", "SeedSettingDependencyWatchdogWeeder", 1) + `,`, + `Prober:` + strings.Replace(this.Prober.String(), "SeedSettingDependencyWatchdogProber", "SeedSettingDependencyWatchdogProber", 1) + `,`, `}`, }, "") return s @@ -20297,6 +20695,26 @@ func (this *SeedSettingDependencyWatchdogProbe) String() string { }, "") return s } +func (this *SeedSettingDependencyWatchdogProber) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogProber{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} +func (this *SeedSettingDependencyWatchdogWeeder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogWeeder{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingExcessCapacityReservation) String() string { if this == nil { return "nil" @@ -20376,6 +20794,16 @@ func (this *SeedSettingScheduling) String() string { }, "") return s } +func (this *SeedSettingTopologyAwareRouting) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingTopologyAwareRouting{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingVerticalPodAutoscaler) String() string { if this == nil { return "nil" @@ -20397,6 +20825,7 @@ func (this *SeedSettings) String() string { `VerticalPodAutoscaler:` + strings.Replace(this.VerticalPodAutoscaler.String(), "SeedSettingVerticalPodAutoscaler", "SeedSettingVerticalPodAutoscaler", 1) + `,`, `OwnerChecks:` + strings.Replace(this.OwnerChecks.String(), "SeedSettingOwnerChecks", "SeedSettingOwnerChecks", 1) + `,`, `DependencyWatchdog:` + strings.Replace(this.DependencyWatchdog.String(), "SeedSettingDependencyWatchdog", "SeedSettingDependencyWatchdog", 1) + `,`, + `TopologyAwareRouting:` + strings.Replace(this.TopologyAwareRouting.String(), "SeedSettingTopologyAwareRouting", "SeedSettingTopologyAwareRouting", 1) + `,`, `}`, }, "") return s @@ -20496,6 +20925,20 @@ func (this *ServiceAccountConfig) String() string { }, "") return s } +func (this *ServiceAccountKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccountKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *Shoot) String() string { if this == nil { return "nil" @@ -20538,22 +20981,8 @@ func (this *ShootCredentialsRotation) String() string { `Kubeconfig:` + strings.Replace(this.Kubeconfig.String(), "ShootKubeconfigRotation", "ShootKubeconfigRotation", 1) + `,`, `SSHKeypair:` + strings.Replace(this.SSHKeypair.String(), "ShootSSHKeypairRotation", "ShootSSHKeypairRotation", 1) + `,`, `Observability:` + strings.Replace(this.Observability.String(), "ShootObservabilityRotation", "ShootObservabilityRotation", 1) + `,`, - `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ShootServiceAccountKeyRotation", "ShootServiceAccountKeyRotation", 1) + `,`, - `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ShootETCDEncryptionKeyRotation", "ShootETCDEncryptionKeyRotation", 1) + `,`, - `}`, - }, "") - return s -} -func (this *ShootETCDEncryptionKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootETCDEncryptionKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ServiceAccountKeyRotation", "ServiceAccountKeyRotation", 1) + `,`, + `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ETCDEncryptionKeyRotation", "ETCDEncryptionKeyRotation", 1) + `,`, `}`, }, "") return s @@ -20630,20 +21059,6 @@ func (this *ShootSSHKeypairRotation) String() string { }, "") return s } -func (this *ShootServiceAccountKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootServiceAccountKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, - `}`, - }, "") - return s -} func (this *ShootSpec) String() string { if this == nil { return "nil" @@ -20670,13 +21085,13 @@ func (this *ShootSpec) String() string { `Extensions:` + repeatedStringForExtensions + `,`, `Hibernation:` + strings.Replace(this.Hibernation.String(), "Hibernation", "Hibernation", 1) + `,`, `Kubernetes:` + strings.Replace(strings.Replace(this.Kubernetes.String(), "Kubernetes", "Kubernetes", 1), `&`, ``, 1) + `,`, - `Networking:` + strings.Replace(strings.Replace(this.Networking.String(), "Networking", "Networking", 1), `&`, ``, 1) + `,`, + `Networking:` + strings.Replace(this.Networking.String(), "Networking", "Networking", 1) + `,`, `Maintenance:` + strings.Replace(this.Maintenance.String(), "Maintenance", "Maintenance", 1) + `,`, `Monitoring:` + strings.Replace(this.Monitoring.String(), "Monitoring", "Monitoring", 1) + `,`, `Provider:` + strings.Replace(strings.Replace(this.Provider.String(), "Provider", "Provider", 1), `&`, ``, 1) + `,`, `Purpose:` + valueToStringGenerated(this.Purpose) + `,`, `Region:` + fmt.Sprintf("%v", this.Region) + `,`, - `SecretBindingName:` + fmt.Sprintf("%v", this.SecretBindingName) + `,`, + `SecretBindingName:` + valueToStringGenerated(this.SecretBindingName) + `,`, `SeedName:` + valueToStringGenerated(this.SeedName) + `,`, `SeedSelector:` + strings.Replace(this.SeedSelector.String(), "SeedSelector", "SeedSelector", 1) + `,`, `Resources:` + repeatedStringForResources + `,`, @@ -20904,6 +21319,16 @@ func (this *Worker) String() string { mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) } mapStringForLabels += "}" + keysForSysctls := make([]string, 0, len(this.Sysctls)) + for k := range this.Sysctls { + keysForSysctls = append(keysForSysctls, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + mapStringForSysctls := "map[string]string{" + for _, k := range keysForSysctls { + mapStringForSysctls += fmt.Sprintf("%v: %v,", k, this.Sysctls[k]) + } + mapStringForSysctls += "}" s := strings.Join([]string{`&Worker{`, `Annotations:` + mapStringForAnnotations + `,`, `CABundle:` + valueToStringGenerated(this.CABundle) + `,`, @@ -20924,6 +21349,7 @@ func (this *Worker) String() string { `Zones:` + fmt.Sprintf("%v", this.Zones) + `,`, `SystemComponents:` + strings.Replace(this.SystemComponents.String(), "WorkerSystemComponents", "WorkerSystemComponents", 1) + `,`, `MachineControllerManagerSettings:` + strings.Replace(this.MachineControllerManagerSettings.String(), "MachineControllerManagerSettings", "MachineControllerManagerSettings", 1) + `,`, + `Sysctls:` + mapStringForSysctls + `,`, `}`, }, "") return s @@ -21277,59 +21703,9 @@ func (m *AdmissionPlugin) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.Disabled = &b - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Alerting) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Alerting: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Alerting: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EmailReceivers", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KubeconfigSecretName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -21357,7 +21733,8 @@ func (m *Alerting) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.EmailReceivers = append(m.EmailReceivers, string(dAtA[iNdEx:postIndex])) + s := string(dAtA[iNdEx:postIndex]) + m.KubeconfigSecretName = &s iNdEx = postIndex default: iNdEx = preIndex @@ -21380,7 +21757,7 @@ func (m *Alerting) Unmarshal(dAtA []byte) error { } return nil } -func (m *AuditConfig) Unmarshal(dAtA []byte) error { +func (m *Alerting) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -21403,17 +21780,17 @@ func (m *AuditConfig) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AuditConfig: wiretype end group for non-group") + return fmt.Errorf("proto: Alerting: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AuditConfig: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Alerting: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuditPolicy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EmailReceivers", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21423,27 +21800,109 @@ func (m *AuditConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.AuditPolicy == nil { - m.AuditPolicy = &AuditPolicy{} - } - if err := m.AuditPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.EmailReceivers = append(m.EmailReceivers, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AuditConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AuditConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AuditConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuditPolicy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AuditPolicy == nil { + m.AuditPolicy = &AuditPolicy{} + } + if err := m.AuditPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -26357,6 +26816,27 @@ func (m *ControllerResource) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field WorkerlessSupported", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.WorkerlessSupported = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -27503,7 +27983,7 @@ func (m *DeploymentRef) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { +func (m *ETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27526,15 +28006,15 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExpirableVersion: wiretype end group for non-group") + return fmt.Errorf("proto: ETCDEncryptionKeyRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExpirableVersion: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -27562,11 +28042,11 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExpirationDate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -27593,18 +28073,18 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ExpirationDate == nil { - m.ExpirationDate = &v11.Time{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.ExpirationDate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Classification", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -27614,24 +28094,99 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := VersionClassification(dAtA[iNdEx:postIndex]) - m.Classification = &s + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} + } + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} + } + if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -27654,7 +28209,7 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExposureClass) Unmarshal(dAtA []byte) error { +func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27677,48 +28232,15 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExposureClass: wiretype end group for non-group") + return fmt.Errorf("proto: ExpirableVersion: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExposureClass: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExpirableVersion: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Handler", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -27746,11 +28268,11 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Handler = string(dAtA[iNdEx:postIndex]) + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ExpirationDate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -27777,13 +28299,46 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Scheduling == nil { - m.Scheduling = &ExposureClassScheduling{} + if m.ExpirationDate == nil { + m.ExpirationDate = &v11.Time{} } - if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ExpirationDate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Classification", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := VersionClassification(dAtA[iNdEx:postIndex]) + m.Classification = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -27805,7 +28360,7 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExposureClassList) Unmarshal(dAtA []byte) error { +func (m *ExposureClass) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27828,15 +28383,15 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExposureClassList: wiretype end group for non-group") + return fmt.Errorf("proto: ExposureClass: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExposureClassList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExposureClass: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -27863,13 +28418,45 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Handler", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Handler = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -27896,8 +28483,10 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, ExposureClass{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Scheduling == nil { + m.Scheduling = &ExposureClassScheduling{} + } + if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -27922,7 +28511,7 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { +func (m *ExposureClassList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27945,15 +28534,15 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExposureClassScheduling: wiretype end group for non-group") + return fmt.Errorf("proto: ExposureClassList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExposureClassScheduling: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExposureClassList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SeedSelector", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -27980,16 +28569,13 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SeedSelector == nil { - m.SeedSelector = &SeedSelector{} - } - if err := m.SeedSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28016,8 +28602,8 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Tolerations = append(m.Tolerations, Toleration{}) - if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, ExposureClass{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -28042,7 +28628,7 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { } return nil } -func (m *Extension) Unmarshal(dAtA []byte) error { +func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -28065,17 +28651,17 @@ func (m *Extension) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Extension: wiretype end group for non-group") + return fmt.Errorf("proto: ExposureClassScheduling: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Extension: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExposureClassScheduling: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SeedSelector", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -28085,27 +28671,31 @@ func (m *Extension) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + if m.SeedSelector == nil { + m.SeedSelector = &SeedSelector{} + } + if err := m.SeedSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28132,34 +28722,11 @@ func (m *Extension) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ProviderConfig == nil { - m.ProviderConfig = &runtime.RawExtension{} - } - if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Tolerations = append(m.Tolerations, Toleration{}) + if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Disabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - b := bool(v != 0) - m.Disabled = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -28181,7 +28748,7 @@ func (m *Extension) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { +func (m *Extension) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -28204,15 +28771,15 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExtensionResourceState: wiretype end group for non-group") + return fmt.Errorf("proto: Extension: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExtensionResourceState: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Extension: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -28240,77 +28807,11 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Kind = string(dAtA[iNdEx:postIndex]) + m.Type = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.Name = &s - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Purpose", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.Purpose = &s - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28337,18 +28838,18 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.State == nil { - m.State = &runtime.RawExtension{} + if m.ProviderConfig == nil { + m.ProviderConfig = &runtime.RawExtension{} } - if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Disabled", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -28358,26 +28859,231 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Resources = append(m.Resources, v1beta1.NamedResourceReference{}) - if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + b := bool(v != 0) + m.Disabled = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtensionResourceState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtensionResourceState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Name = &s + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Purpose", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Purpose = &s + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.State == nil { + m.State = &runtime.RawExtension{} + } + if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, v1beta1.NamedResourceReference{}) + if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -29841,27 +30547,6 @@ func (m *KubeAPIServerConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field EnableBasicAuthentication", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - b := bool(v != 0) - m.EnableBasicAuthentication = &b case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OIDCConfig", wireType) @@ -31672,6 +32357,42 @@ func (m *KubeletConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MemorySwap", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MemorySwap == nil { + m.MemorySwap = &MemorySwapConfiguration{} + } + if err := m.MemorySwap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35191,7 +35912,8 @@ func (m *MaintenanceAutoUpdate) Unmarshal(dAtA []byte) error { break } } - m.MachineImageVersion = bool(v != 0) + b := bool(v != 0) + m.MachineImageVersion = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35327,7 +36049,7 @@ func (m *MaintenanceTimeWindow) Unmarshal(dAtA []byte) error { } return nil } -func (m *Monitoring) Unmarshal(dAtA []byte) error { +func (m *MemorySwapConfiguration) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -35350,17 +36072,17 @@ func (m *Monitoring) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Monitoring: wiretype end group for non-group") + return fmt.Errorf("proto: MemorySwapConfiguration: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Monitoring: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MemorySwapConfiguration: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alerting", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SwapBehavior", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -35370,27 +36092,24 @@ func (m *Monitoring) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Alerting == nil { - m.Alerting = &Alerting{} - } - if err := m.Alerting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + s := SwapBehavior(dAtA[iNdEx:postIndex]) + m.SwapBehavior = &s iNdEx = postIndex default: iNdEx = preIndex @@ -35413,7 +36132,7 @@ func (m *Monitoring) Unmarshal(dAtA []byte) error { } return nil } -func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { +func (m *Monitoring) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -35436,47 +36155,15 @@ func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: NamedResourceReference: wiretype end group for non-group") + return fmt.Errorf("proto: Monitoring: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: NamedResourceReference: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Monitoring: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceRef", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Alerting", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -35503,7 +36190,10 @@ func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Alerting == nil { + m.Alerting = &Alerting{} + } + if err := m.Alerting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -35528,7 +36218,7 @@ func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { } return nil } -func (m *Networking) Unmarshal(dAtA []byte) error { +func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -35551,15 +36241,15 @@ func (m *Networking) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Networking: wiretype end group for non-group") + return fmt.Errorf("proto: NamedResourceReference: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Networking: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: NamedResourceReference: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -35587,11 +36277,11 @@ func (m *Networking) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResourceRef", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -35618,82 +36308,63 @@ func (m *Networking) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ProviderConfig == nil { - m.ProviderConfig = &runtime.RawExtension{} - } - if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ResourceRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Pods = &s - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Networking) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Nodes = &s - iNdEx = postIndex - case 5: + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Networking: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Networking: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -35722,13 +36393,13 @@ func (m *Networking) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } s := string(dAtA[iNdEx:postIndex]) - m.Services = &s + m.Type = &s iNdEx = postIndex - case 6: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IPFamilies", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -35738,77 +36409,212 @@ func (m *Networking) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.IPFamilies = append(m.IPFamilies, IPFamily(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *NginxIngress) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if m.ProviderConfig == nil { + m.ProviderConfig = &runtime.RawExtension{} } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: NginxIngress: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: NginxIngress: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerSourceRanges", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Pods = &s + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Nodes = &s + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Services = &s + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IPFamilies", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IPFamilies = append(m.IPFamilies, IPFamily(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NginxIngress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NginxIngress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NginxIngress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerSourceRanges", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -39901,39 +40707,6 @@ func (m *SeedDNS) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: SeedDNS: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IngressDomain", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.IngressDomain = &s - iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Provider", wireType) @@ -40085,131 +40858,59 @@ func (m *SeedDNSProvider) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Domains", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Domains == nil { - m.Domains = &DNSIncludeExclude{} - } - if err := m.Domains.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Zones", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Zones == nil { - m.Zones = &DNSIncludeExclude{} - } - if err := m.Zones.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *SeedList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SeedList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SeedList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -40908,6 +41609,78 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Weeder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Weeder == nil { + m.Weeder = &SeedSettingDependencyWatchdogWeeder{} + } + if err := m.Weeder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prober", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Prober == nil { + m.Prober = &SeedSettingDependencyWatchdogProber{} + } + if err := m.Prober.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41069,7 +41842,7 @@ func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogProber) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41092,10 +41865,10 @@ func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -41139,7 +41912,147 @@ func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingLoadBalancerServices) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogWeeder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingLoadBalancerServices) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41765,7 +42678,7 @@ func (m *SeedSettingScheduling) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { +func (m *SeedSettingTopologyAwareRouting) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41788,10 +42701,10 @@ func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingTopologyAwareRouting: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingTopologyAwareRouting: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -41835,7 +42748,7 @@ func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettings) Unmarshal(dAtA []byte) error { +func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41858,53 +42771,17 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettings: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettings: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExcessCapacityReservation", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ExcessCapacityReservation == nil { - m.ExcessCapacityReservation = &SeedSettingExcessCapacityReservation{} - } - if err := m.ExcessCapacityReservation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41914,103 +42791,65 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Scheduling == nil { - m.Scheduling = &SeedSettingScheduling{} - } - if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Enabled = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerServices", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if m.LoadBalancerServices == nil { - m.LoadBalancerServices = &SeedSettingLoadBalancerServices{} - } - if err := m.LoadBalancerServices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VerticalPodAutoscaler", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettings) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - if m.VerticalPodAutoscaler == nil { - m.VerticalPodAutoscaler = &SeedSettingVerticalPodAutoscaler{} - } - if err := m.VerticalPodAutoscaler.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 6: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedSettings: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettings: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OwnerChecks", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ExcessCapacityReservation", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -42037,16 +42876,160 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.OwnerChecks == nil { - m.OwnerChecks = &SeedSettingOwnerChecks{} + if m.ExcessCapacityReservation == nil { + m.ExcessCapacityReservation = &SeedSettingExcessCapacityReservation{} } - if err := m.OwnerChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ExcessCapacityReservation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DependencyWatchdog", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Scheduling == nil { + m.Scheduling = &SeedSettingScheduling{} + } + if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerServices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LoadBalancerServices == nil { + m.LoadBalancerServices = &SeedSettingLoadBalancerServices{} + } + if err := m.LoadBalancerServices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VerticalPodAutoscaler", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VerticalPodAutoscaler == nil { + m.VerticalPodAutoscaler = &SeedSettingVerticalPodAutoscaler{} + } + if err := m.VerticalPodAutoscaler.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OwnerChecks == nil { + m.OwnerChecks = &SeedSettingOwnerChecks{} + } + if err := m.OwnerChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DependencyWatchdog", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -42080,6 +43063,42 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopologyAwareRouting", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TopologyAwareRouting == nil { + m.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{} + } + if err := m.TopologyAwareRouting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -43258,156 +44277,7 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { } return nil } -func (m *Shoot) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Shoot: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { +func (m *ServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -43430,47 +44300,15 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootAdvertisedAddress: wiretype end group for non-group") + return fmt.Errorf("proto: ServiceAccountKeyRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field URL", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -43498,219 +44336,11 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.URL = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootCredentials) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Rotation == nil { - m.Rotation = &ShootCredentialsRotation{} - } - if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.CertificateAuthorities == nil { - m.CertificateAuthorities = &CARotation{} - } - if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Kubeconfig == nil { - m.Kubeconfig = &ShootKubeconfigRotation{} - } - if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43737,16 +44367,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SSHKeypair == nil { - m.SSHKeypair = &ShootSSHKeypairRotation{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43773,16 +44403,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Observability == nil { - m.Observability = &ShootObservabilityRotation{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43809,16 +44439,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ServiceAccountKey == nil { - m.ServiceAccountKey = &ShootServiceAccountKeyRotation{} + if m.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} } - if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43845,10 +44475,10 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ETCDEncryptionKey == nil { - m.ETCDEncryptionKey = &ShootETCDEncryptionKeyRotation{} + if m.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} } - if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -43873,7 +44503,7 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { +func (m *Shoot) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -43896,17 +44526,17 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: wiretype end group for non-group") + return fmt.Errorf("proto: Shoot: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -43916,27 +44546,28 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43963,16 +44594,13 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} - } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43999,18 +44627,65 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ShootAdvertisedAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44020,33 +44695,29 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} - } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field URL", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44056,27 +44727,23 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} - } - if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.URL = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -44099,7 +44766,7 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { +func (m *ShootCredentials) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44122,51 +44789,15 @@ func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootKubeconfigRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootKubeconfigRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44193,10 +44824,10 @@ func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.Rotation == nil { + m.Rotation = &ShootCredentialsRotation{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -44221,7 +44852,7 @@ func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootList) Unmarshal(dAtA []byte) error { +func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44244,15 +44875,15 @@ func (m *ShootList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootList: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44279,13 +44910,52 @@ func (m *ShootList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.CertificateAuthorities == nil { + m.CertificateAuthorities = &CARotation{} + } + if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Kubeconfig == nil { + m.Kubeconfig = &ShootKubeconfigRotation{} + } + if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44312,66 +44982,18 @@ func (m *ShootList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, Shoot{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + if m.SSHKeypair == nil { + m.SSHKeypair = &ShootSSHKeypairRotation{} } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { + if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootMachineImage: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootMachineImage: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44381,27 +45003,31 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + if m.Observability == nil { + m.Observability = &ShootObservabilityRotation{} + } + if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44428,18 +45054,18 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ProviderConfig == nil { - m.ProviderConfig = &runtime.RawExtension{} + if m.ServiceAccountKey == nil { + m.ServiceAccountKey = &ServiceAccountKeyRotation{} } - if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44449,24 +45075,27 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Version = &s + if m.ETCDEncryptionKey == nil { + m.ETCDEncryptionKey = &ETCDEncryptionKeyRotation{} + } + if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -44489,7 +45118,7 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootNetworks) Unmarshal(dAtA []byte) error { +func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44512,17 +45141,17 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootNetworks: wiretype end group for non-group") + return fmt.Errorf("proto: ShootKubeconfigRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootNetworks: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootKubeconfigRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44532,30 +45161,33 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Pods = &s + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44565,24 +45197,27 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Services = &s + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -44605,7 +45240,7 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { +func (m *ShootList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44628,15 +45263,15 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootObservabilityRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootObservabilityRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44663,16 +45298,13 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44699,10 +45331,8 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} - } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, Shoot{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -44727,7 +45357,7 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { +func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44750,17 +45380,17 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootSSHKeypairRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootMachineImage: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootSSHKeypairRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootMachineImage: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44770,31 +45400,27 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44821,13 +45447,46 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.ProviderConfig == nil { + m.ProviderConfig = &runtime.RawExtension{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Version = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -44849,7 +45508,7 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { +func (m *ShootNetworks) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44872,15 +45531,48 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootServiceAccountKeyRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootNetworks: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootNetworks: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Pods = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -44908,11 +45600,62 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.Services = &s iNdEx = postIndex - case 2: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ShootObservabilityRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootObservabilityRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44939,16 +45682,16 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44975,16 +45718,66 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ShootSSHKeypairRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootSSHKeypairRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45011,16 +45804,16 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45047,10 +45840,10 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -45340,6 +46133,9 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } + if m.Networking == nil { + m.Networking = &Networking{} + } if err := m.Networking.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -45544,7 +46340,8 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretBindingName = string(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.SecretBindingName = &s iNdEx = postIndex case 14: if wireType != 2 { @@ -48589,6 +49386,133 @@ func (m *Worker) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sysctls", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Sysctls == nil { + m.Sysctls = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Sysctls[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto index 01d6edaf7..f1aaf1a7d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -62,6 +62,10 @@ message AdmissionPlugin { // Disabled specifies whether this plugin should be disabled. // +optional optional bool disabled = 3; + + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + optional string kubeconfigSecretName = 4; } // Alerting contains information about how alerting will be done (i.e. who will receive alerts and how). @@ -576,6 +580,11 @@ message ControllerResource { // Migrate: "BeforeKubeAPIServer" // +optional optional ControllerResourceLifecycle lifecycle = 6; + + // WorkerlessSupported specifies whether this ControllerResource supports Workerless Shoot clusters. + // This field is only relevant when kind is "Extension". + // +optional + optional bool workerlessSupported = 7; } // ControllerResourceLifecycle defines the lifecycle of a controller resource. @@ -693,6 +702,31 @@ message DeploymentRef { optional string name = 1; } +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +message ETCDEncryptionKeyRotation { + // Phase describes the phase of the ETCD encryption key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // ExpirableVersion contains a version and an expiration date. message ExpirableVersion { // Version is the version identifier. @@ -841,7 +875,7 @@ message HibernationSchedule { // +optional optional string end = 2; - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional optional string location = 3; } @@ -918,12 +952,6 @@ message KubeAPIServerConfig { // +optional optional AuditConfig auditConfig = 4; - // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. - // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. - optional bool enableBasicAuthentication = 5; - // OIDCConfig contains configuration settings for the OIDC provider. // +optional optional OIDCConfig oidcConfig = 6; @@ -1208,6 +1236,10 @@ message KubeletConfig { // "5m" for Kubernetes >= v1.26. // +optional optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration streamingConnectionIdleTimeout = 25; + + // MemorySwap configures swap memory available to container workloads. + // +optional + optional MemorySwapConfiguration memorySwap = 26; } // KubeletConfigEviction contains kubelet eviction thresholds supporting either a resource.Quantity or a percentage based value. @@ -1560,6 +1592,7 @@ message MaintenanceAutoUpdate { optional bool kubernetesVersion = 1; // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). + // +optional optional bool machineImageVersion = 2; } @@ -1574,6 +1607,15 @@ message MaintenanceTimeWindow { optional string end = 2; } +// MemorySwapConfiguration contains kubelet swap configuration +// For more information, please see KEP: 2400-node-swap +message MemorySwapConfiguration { + // SwapBehavior configures swap memory available to container workloads. May be one of {"LimitedSwap", "UnlimitedSwap"} + // defaults to: LimitedSwap + // +optional + optional string swapBehavior = 1; +} + // Monitoring contains information about the monitoring configuration for the shoot. message Monitoring { // Alerting contains information about the alerting configuration for the shoot cluster. @@ -1593,6 +1635,7 @@ message NamedResourceReference { // Networking defines networking parameters for the shoot cluster. message Networking { // Type identifies the type of the networking plugin. This field is immutable. + // +optional optional string type = 1; // ProviderConfig is the configuration passed to network resource. @@ -1855,6 +1898,7 @@ message Provider { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge + // +optional repeated Worker workers = 4; // WorkersSettings contains settings for all workers. @@ -2017,12 +2061,6 @@ message SeedBackup { // SeedDNS contains DNS-relevant information about this seed cluster. message SeedDNS { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. - // +optional - optional string ingressDomain = 1; - // Provider configures a DNSProvider // +optional optional SeedDNSProvider provider = 2; @@ -2035,14 +2073,6 @@ message SeedDNSProvider { // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. optional k8s.io.api.core.v1.SecretReference secretRef = 2; - - // Domains contains information about which domains shall be included/excluded for this provider. - // +optional - optional DNSIncludeExclude domains = 3; - - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // +optional - optional DNSIncludeExclude zones = 4; } // SeedList is a collection of Seeds. @@ -2109,15 +2139,26 @@ message SeedSelector { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. message SeedSettingDependencyWatchdog { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional optional SeedSettingDependencyWatchdogEndpoint endpoint = 1; // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional optional SeedSettingDependencyWatchdogProbe probe = 2; + + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogWeeder weeder = 3; + + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogProber prober = 4; } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. message SeedSettingDependencyWatchdogEndpoint { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -2126,13 +2167,30 @@ message SeedSettingDependencyWatchdogEndpoint { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. message SeedSettingDependencyWatchdogProbe { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + optional bool enabled = 1; +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogProber { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. optional bool enabled = 1; } +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogWeeder { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + optional bool enabled = 1; +} + // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. message SeedSettingExcessCapacityReservation { // Enabled controls whether the excess capacity reservation should be enabled. @@ -2176,6 +2234,10 @@ message SeedSettingLoadBalancerServicesZones { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. message SeedSettingOwnerChecks { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -2189,6 +2251,14 @@ message SeedSettingScheduling { optional bool visible = 1; } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +message SeedSettingTopologyAwareRouting { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + optional bool enabled = 1; +} + // SeedSettingVerticalPodAutoscaler controls certain settings for the vertical pod autoscaler components deployed in the // seed. message SeedSettingVerticalPodAutoscaler { @@ -2217,12 +2287,21 @@ message SeedSettings { optional SeedSettingVerticalPodAutoscaler verticalPodAutoscaler = 5; // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional optional SeedSettingOwnerChecks ownerChecks = 6; // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional optional SeedSettingDependencyWatchdog dependencyWatchdog = 7; + + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + optional SeedSettingTopologyAwareRouting topologyAwareRouting = 8; } // SeedSpec is the specification of a Seed. @@ -2362,6 +2441,31 @@ message ServiceAccountConfig { repeated string acceptedIssuers = 5; } +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +message ServiceAccountKeyRotation { + // Phase describes the phase of the service account key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // Shoot represents a Shoot cluster created and managed by Gardener. message Shoot { // Standard object metadata. @@ -2414,36 +2518,11 @@ message ShootCredentialsRotation { // ServiceAccountKey contains information about the service account key credential rotation. // +optional - optional ShootServiceAccountKeyRotation serviceAccountKey = 5; + optional ServiceAccountKeyRotation serviceAccountKey = 5; // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - optional ShootETCDEncryptionKeyRotation etcdEncryptionKey = 6; -} - -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -message ShootETCDEncryptionKeyRotation { - // Phase describes the phase of the ETCD encryption key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; + optional ETCDEncryptionKeyRotation etcdEncryptionKey = 6; } // ShootKubeconfigRotation contains information about the kubeconfig credential rotation. @@ -2516,31 +2595,6 @@ message ShootSSHKeypairRotation { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -message ShootServiceAccountKeyRotation { - // Phase describes the phase of the service account key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the service account key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; -} - // ShootSpec is the specification of a Shoot. message ShootSpec { // Addons contains information about enabled/disabled addons and their configuration. @@ -2566,6 +2620,7 @@ message ShootSpec { optional Kubernetes kubernetes = 6; // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. + // +optional optional Networking networking = 7; // Maintenance contains information about the time window for maintenance operations and which @@ -2590,6 +2645,7 @@ message ShootSpec { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. + // +optional optional string secretBindingName = 13; // SeedName is the name of the seed cluster that runs the control plane of the Shoot. @@ -2930,6 +2986,10 @@ message Worker { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional optional MachineControllerManagerSettings machineControllerManager = 19; + + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + map sysctls = 20; } // WorkerKubernetes contains configuration for Kubernetes components related to this worker pool. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go index 9f2a6ee60..d784a2454 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go index ca51ee165..ac9a1a216 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go index 504142745..807730218 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go index 425f97c6e..cadd034f3 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go index 272ba6f02..3bea89d93 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go index e216dd47b..22f12d83c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go index 6a2890d20..3b15bc836 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go index 7c2478f78..769931541 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go index d89393088..8ca400bc1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -82,6 +82,10 @@ type ControllerResource struct { // Migrate: "BeforeKubeAPIServer" // +optional Lifecycle *ControllerResourceLifecycle `json:"lifecycle,omitempty" protobuf:"bytes,6,opt,name=lifecycle"` + // WorkerlessSupported specifies whether this ControllerResource supports Workerless Shoot clusters. + // This field is only relevant when kind is "Extension". + // +optional + WorkerlessSupported *bool `json:"workerlessSupported,omitempty" protobuf:"varint,7,opt,name=workerlessSupported"` } // DeploymentRef contains information about `ControllerDeployment` references. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go index 6b53ac84a..cfad55212 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go index df2526ab6..aef29af82 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go index 55a1fbec5..38e2ce037 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go index 4be728381..790b40b2c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go index f78db4f28..122244f17 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -127,11 +127,9 @@ type SeedBackup struct { // SeedDNS contains DNS-relevant information about this seed cluster. type SeedDNS struct { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. - // +optional - IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // IngressDomain is tombstoned to show why 1 is reserved protobuf tag. + // IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // Provider configures a DNSProvider // +optional Provider *SeedDNSProvider `json:"provider,omitempty" protobuf:"bytes,2,opt,name=provider"` @@ -143,12 +141,12 @@ type SeedDNSProvider struct { Type string `json:"type" protobuf:"bytes,1,opt,name=type"` // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference `json:"secretRef" protobuf:"bytes,2,opt,name=secretRef"` - // Domains contains information about which domains shall be included/excluded for this provider. - // +optional - Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // +optional - Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` + + // Domains is tombstoned to show why 3 is reserved protobuf tag. + // Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` + + // Zones is tombstoned to show why 4 is reserved protobuf tag. + // Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` } // Ingress configures the Ingress specific settings of the Seed cluster. @@ -231,11 +229,19 @@ type SeedSettings struct { // +optional VerticalPodAutoscaler *SeedSettingVerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty" protobuf:"bytes,5,opt,name=verticalPodAutoscaler"` // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional OwnerChecks *SeedSettingOwnerChecks `json:"ownerChecks,omitempty" protobuf:"bytes,6,opt,name=ownerChecks"` // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional DependencyWatchdog *SeedSettingDependencyWatchdog `json:"dependencyWatchdog,omitempty" protobuf:"bytes,7,opt,name=dependencyWatchdog"` + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + TopologyAwareRouting *SeedSettingTopologyAwareRouting `json:"topologyAwareRouting,omitempty" protobuf:"bytes,8,opt,name=topologyAwareRouting"` } // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. @@ -293,6 +299,10 @@ type SeedSettingVerticalPodAutoscaler struct { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. type SeedSettingOwnerChecks struct { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -302,14 +312,23 @@ type SeedSettingOwnerChecks struct { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. type SeedSettingDependencyWatchdog struct { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional Endpoint *SeedSettingDependencyWatchdogEndpoint `json:"endpoint,omitempty" protobuf:"bytes,1,opt,name=endpoint"` // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional Probe *SeedSettingDependencyWatchdogProbe `json:"probe,omitempty" protobuf:"bytes,2,opt,name=probe"` + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + Weeder *SeedSettingDependencyWatchdogWeeder `json:"weeder,omitempty" protobuf:"bytes,3,opt,name=weeder"` + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + Prober *SeedSettingDependencyWatchdogProber `json:"prober,omitempty" protobuf:"bytes,4,opt,name=prober"` } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. type SeedSettingDependencyWatchdogEndpoint struct { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -318,13 +337,38 @@ type SeedSettingDependencyWatchdogEndpoint struct { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. type SeedSettingDependencyWatchdogProbe struct { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogWeeder struct { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogProber struct { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SeedSettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + // SeedTaint describes a taint on a seed. type SeedTaint struct { // Key is the taint key to be applied to a seed. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go index 3c2034e88..b9c3b1254 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -75,7 +75,8 @@ type ShootSpec struct { // Kubernetes contains the version and configuration settings of the control plane components. Kubernetes Kubernetes `json:"kubernetes" protobuf:"bytes,6,opt,name=kubernetes"` // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. - Networking Networking `json:"networking" protobuf:"bytes,7,opt,name=networking"` + // +optional + Networking *Networking `json:"networking,omitempty" protobuf:"bytes,7,opt,name=networking"` // Maintenance contains information about the time window for maintenance operations and which // operations should be performed. // +optional @@ -93,7 +94,8 @@ type ShootSpec struct { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. - SecretBindingName string `json:"secretBindingName" protobuf:"bytes,13,opt,name=secretBindingName"` + // +optional + SecretBindingName *string `json:"secretBindingName,omitempty" protobuf:"bytes,13,opt,name=secretBindingName"` // SeedName is the name of the seed cluster that runs the control plane of the Shoot. // This field is immutable when the SeedChange feature gate is disabled. // +optional @@ -223,10 +225,10 @@ type ShootCredentialsRotation struct { Observability *ShootObservabilityRotation `json:"observability,omitempty" protobuf:"bytes,4,opt,name=observability"` // ServiceAccountKey contains information about the service account key credential rotation. // +optional - ServiceAccountKey *ShootServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` + ServiceAccountKey *ServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - ETCDEncryptionKey *ShootETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` + ETCDEncryptionKey *ETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` } // CARotation contains information about the certificate authority credential rotation. @@ -280,8 +282,8 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -type ShootServiceAccountKeyRotation struct { +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +type ServiceAccountKeyRotation struct { // Phase describes the phase of the service account key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the service account key credential rotation was successfully @@ -301,8 +303,8 @@ type ShootServiceAccountKeyRotation struct { LastCompletionTriggeredTime *metav1.Time `json:"lastCompletionTriggeredTime,omitempty" protobuf:"bytes,5,opt,name=lastCompletionTriggeredTime"` } -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -type ShootETCDEncryptionKeyRotation struct { +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ETCDEncryptionKeyRotation struct { // Phase describes the phase of the ETCD encryption key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully @@ -370,9 +372,6 @@ type KubernetesDashboard struct { } const ( - // KubernetesDashboardAuthModeBasic uses basic authentication mode for auth. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. - KubernetesDashboardAuthModeBasic = "basic" // KubernetesDashboardAuthModeToken uses token-based mode for auth. KubernetesDashboardAuthModeToken = "token" ) @@ -491,7 +490,7 @@ type HibernationSchedule struct { // End is a Cron spec at which time a Shoot will be woken up. // +optional End *string `json:"end,omitempty" protobuf:"bytes,2,opt,name=end"` - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional Location *string `json:"location,omitempty" protobuf:"bytes,3,opt,name=location"` } @@ -663,11 +662,10 @@ type KubeAPIServerConfig struct { // AuditConfig contains configuration settings for the audit of the kube-apiserver. // +optional AuditConfig *AuditConfig `json:"auditConfig,omitempty" protobuf:"bytes,4,opt,name=auditConfig"` - // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. - // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. - EnableBasicAuthentication *bool `json:"enableBasicAuthentication,omitempty" protobuf:"varint,5,opt,name=enableBasicAuthentication"` + + // EnableBasicAuthentication is tombstoned to show why 5 is reserved protobuf tag. + // EnableBasicAuthentication *bool `json:"enableBasicAuthentication,omitempty" protobuf:"varint,5,opt,name=enableBasicAuthentication"` + // OIDCConfig contains configuration settings for the OIDC provider. // +optional OIDCConfig *OIDCConfig `json:"oidcConfig,omitempty" protobuf:"bytes,6,opt,name=oidcConfig"` @@ -841,6 +839,9 @@ type AdmissionPlugin struct { // Disabled specifies whether this plugin should be disabled. // +optional Disabled *bool `json:"disabled,omitempty" protobuf:"varint,3,opt,name=disabled"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + KubeconfigSecretName *string `json:"kubeconfigSecretName,omitempty" protobuf:"bytes,4,opt,name=kubeconfigSecretName"` } // WatchCacheSizes contains configuration of the API server's watch cache sizes. @@ -1101,6 +1102,9 @@ type KubeletConfig struct { // "5m" for Kubernetes >= v1.26. // +optional StreamingConnectionIdleTimeout *metav1.Duration `json:"streamingConnectionIdleTimeout,omitempty" protobuf:"bytes,25,opt,name=streamingConnectionIdleTimeout"` + // MemorySwap configures swap memory available to container workloads. + // +optional + MemorySwap *MemorySwapConfiguration `json:"memorySwap,omitempty" protobuf:"bytes,26,opt,name=memorySwap"` } // KubeletConfigEviction contains kubelet eviction thresholds supporting either a resource.Quantity or a percentage based value. @@ -1176,10 +1180,32 @@ type KubeletConfigReserved struct { PID *resource.Quantity `json:"pid,omitempty" protobuf:"bytes,4,opt,name=pid"` } +// SwapBehavior configures swap memory available to container workloads +type SwapBehavior string + +const ( + // LimitedSwap is a constant for the kubelet's swap behavior limitting the amount of swap usable for Kubernetes workloads. Workloads on the node not managed by Kubernetes can still swap. + // - cgroupsv1 host: Kubernetes workloads can use any combination of memory and swap, up to the pod's memory limit + // - cgroupsv2 host: swap is managed independently from memory. Kubernetes workloads cannot use swap memory. + LimitedSwap SwapBehavior = "LimitedSwap" + // UnlimitedSwap is a constant for the kubelet's swap behavior enabling Kubernetes workloads to use as much swap memory as required, up to the system limit (not limited by pod or container memory limits). + UnlimitedSwap SwapBehavior = "UnlimitedSwap" +) + +// MemorySwapConfiguration contains kubelet swap configuration +// For more information, please see KEP: 2400-node-swap +type MemorySwapConfiguration struct { + // SwapBehavior configures swap memory available to container workloads. May be one of {"LimitedSwap", "UnlimitedSwap"} + // defaults to: LimitedSwap + // +optional + SwapBehavior *SwapBehavior `json:"swapBehavior,omitempty" protobuf:"bytes,1,opt,name=swapBehavior"` +} + // Networking defines networking parameters for the shoot cluster. type Networking struct { // Type identifies the type of the networking plugin. This field is immutable. - Type string `json:"type" protobuf:"bytes,1,opt,name=type"` + // +optional + Type *string `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` // ProviderConfig is the configuration passed to network resource. // +optional ProviderConfig *runtime.RawExtension `json:"providerConfig,omitempty" protobuf:"bytes,2,opt,name=providerConfig"` @@ -1235,7 +1261,8 @@ type MaintenanceAutoUpdate struct { // KubernetesVersion indicates whether the patch Kubernetes version may be automatically updated (default: true). KubernetesVersion bool `json:"kubernetesVersion" protobuf:"varint,1,opt,name=kubernetesVersion"` // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). - MachineImageVersion bool `json:"machineImageVersion" protobuf:"varint,2,opt,name=machineImageVersion"` + // +optional + MachineImageVersion *bool `json:"machineImageVersion,omitempty" protobuf:"varint,2,opt,name=machineImageVersion"` } // MaintenanceTimeWindow contains information about the time window for maintenance operations. @@ -1278,7 +1305,8 @@ type Provider struct { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge - Workers []Worker `json:"workers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` + // +optional + Workers []Worker `json:"workers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` // WorkersSettings contains settings for all workers. // +optional WorkersSettings *WorkersSettings `json:"workersSettings,omitempty" protobuf:"bytes,5,opt,name=workersSettings"` @@ -1341,6 +1369,9 @@ type Worker struct { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional MachineControllerManagerSettings *MachineControllerManagerSettings `json:"machineControllerManager,omitempty" protobuf:"bytes,19,opt,name=machineControllerManager"` + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + Sysctls map[string]string `json:"sysctls,omitempty" protobuf:"bytes,20,rep,name=sysctls"` } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go index 7ec610663..9855f7886 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go index 924cd4aa0..8ee4eda01 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go index 6c7c028b6..c91984eee 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -453,6 +453,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ETCDEncryptionKeyRotation)(nil), (*core.ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(a.(*ETCDEncryptionKeyRotation), b.(*core.ETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ETCDEncryptionKeyRotation)(nil), (*ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(a.(*core.ETCDEncryptionKeyRotation), b.(*ETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ExpirableVersion)(nil), (*core.ExpirableVersion)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ExpirableVersion_To_core_ExpirableVersion(a.(*ExpirableVersion), b.(*core.ExpirableVersion), scope) }); err != nil { @@ -873,6 +883,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*MemorySwapConfiguration)(nil), (*core.MemorySwapConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(a.(*MemorySwapConfiguration), b.(*core.MemorySwapConfiguration), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.MemorySwapConfiguration)(nil), (*MemorySwapConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_MemorySwapConfiguration_To_v1alpha1_MemorySwapConfiguration(a.(*core.MemorySwapConfiguration), b.(*MemorySwapConfiguration), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*Monitoring)(nil), (*core.Monitoring)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_Monitoring_To_core_Monitoring(a.(*Monitoring), b.(*core.Monitoring), scope) }); err != nil { @@ -1183,6 +1203,26 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogProber)(nil), (*core.SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(a.(*SeedSettingDependencyWatchdogProber), b.(*core.SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogProber)(nil), (*SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(a.(*core.SeedSettingDependencyWatchdogProber), b.(*SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogWeeder)(nil), (*core.SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(a.(*SeedSettingDependencyWatchdogWeeder), b.(*core.SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogWeeder)(nil), (*SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(a.(*core.SeedSettingDependencyWatchdogWeeder), b.(*SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingExcessCapacityReservation)(nil), (*core.SeedSettingExcessCapacityReservation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(a.(*SeedSettingExcessCapacityReservation), b.(*core.SeedSettingExcessCapacityReservation), scope) }); err != nil { @@ -1233,6 +1273,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingTopologyAwareRouting)(nil), (*core.SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(a.(*SeedSettingTopologyAwareRouting), b.(*core.SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingTopologyAwareRouting)(nil), (*SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(a.(*core.SeedSettingTopologyAwareRouting), b.(*SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingVerticalPodAutoscaler)(nil), (*core.SeedSettingVerticalPodAutoscaler)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(a.(*SeedSettingVerticalPodAutoscaler), b.(*core.SeedSettingVerticalPodAutoscaler), scope) }); err != nil { @@ -1298,6 +1348,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ServiceAccountKeyRotation)(nil), (*core.ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(a.(*ServiceAccountKeyRotation), b.(*core.ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ServiceAccountKeyRotation)(nil), (*ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(a.(*core.ServiceAccountKeyRotation), b.(*ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*Shoot)(nil), (*core.Shoot)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_Shoot_To_core_Shoot(a.(*Shoot), b.(*core.Shoot), scope) }); err != nil { @@ -1338,16 +1398,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootETCDEncryptionKeyRotation)(nil), (*core.ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(a.(*ShootETCDEncryptionKeyRotation), b.(*core.ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootETCDEncryptionKeyRotation)(nil), (*ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(a.(*core.ShootETCDEncryptionKeyRotation), b.(*ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootKubeconfigRotation)(nil), (*core.ShootKubeconfigRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(a.(*ShootKubeconfigRotation), b.(*core.ShootKubeconfigRotation), scope) }); err != nil { @@ -1408,16 +1458,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootServiceAccountKeyRotation)(nil), (*core.ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(a.(*ShootServiceAccountKeyRotation), b.(*core.ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootServiceAccountKeyRotation)(nil), (*ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(a.(*core.ShootServiceAccountKeyRotation), b.(*ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootSpec)(nil), (*core.ShootSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootSpec_To_core_ShootSpec(a.(*ShootSpec), b.(*core.ShootSpec), scope) }); err != nil { @@ -1712,6 +1752,7 @@ func autoConvert_v1alpha1_AdmissionPlugin_To_core_AdmissionPlugin(in *AdmissionP out.Name = in.Name out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -1724,6 +1765,7 @@ func autoConvert_core_AdmissionPlugin_To_v1alpha1_AdmissionPlugin(in *core.Admis out.Name = in.Name out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -2575,6 +2617,7 @@ func autoConvert_v1alpha1_ControllerResource_To_core_ControllerResource(in *Cont out.ReconcileTimeout = (*metav1.Duration)(unsafe.Pointer(in.ReconcileTimeout)) out.Primary = (*bool)(unsafe.Pointer(in.Primary)) out.Lifecycle = (*core.ControllerResourceLifecycle)(unsafe.Pointer(in.Lifecycle)) + out.WorkerlessSupported = (*bool)(unsafe.Pointer(in.WorkerlessSupported)) return nil } @@ -2590,6 +2633,7 @@ func autoConvert_core_ControllerResource_To_v1alpha1_ControllerResource(in *core out.ReconcileTimeout = (*metav1.Duration)(unsafe.Pointer(in.ReconcileTimeout)) out.Primary = (*bool)(unsafe.Pointer(in.Primary)) out.Lifecycle = (*ControllerResourceLifecycle)(unsafe.Pointer(in.Lifecycle)) + out.WorkerlessSupported = (*bool)(unsafe.Pointer(in.WorkerlessSupported)) return nil } @@ -2802,6 +2846,34 @@ func Convert_core_DeploymentRef_To_v1alpha1_DeploymentRef(in *core.DeploymentRef return autoConvert_core_DeploymentRef_To_v1alpha1_DeploymentRef(in, out, s) } +func autoConvert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in, out, s) +} + +func autoConvert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(in, out, s) +} + func autoConvert_v1alpha1_ExpirableVersion_To_core_ExpirableVersion(in *ExpirableVersion, out *core.ExpirableVersion, s conversion.Scope) error { out.Version = in.Version out.ExpirationDate = (*metav1.Time)(unsafe.Pointer(in.ExpirationDate)) @@ -3179,7 +3251,6 @@ func autoConvert_v1alpha1_KubeAPIServerConfig_To_core_KubeAPIServerConfig(in *Ku } out.APIAudiences = *(*[]string)(unsafe.Pointer(&in.APIAudiences)) out.AuditConfig = (*core.AuditConfig)(unsafe.Pointer(in.AuditConfig)) - out.EnableBasicAuthentication = (*bool)(unsafe.Pointer(in.EnableBasicAuthentication)) out.OIDCConfig = (*core.OIDCConfig)(unsafe.Pointer(in.OIDCConfig)) out.RuntimeConfig = *(*map[string]bool)(unsafe.Pointer(&in.RuntimeConfig)) out.ServiceAccountConfig = (*core.ServiceAccountConfig)(unsafe.Pointer(in.ServiceAccountConfig)) @@ -3215,7 +3286,6 @@ func autoConvert_core_KubeAPIServerConfig_To_v1alpha1_KubeAPIServerConfig(in *co } out.APIAudiences = *(*[]string)(unsafe.Pointer(&in.APIAudiences)) out.AuditConfig = (*AuditConfig)(unsafe.Pointer(in.AuditConfig)) - out.EnableBasicAuthentication = (*bool)(unsafe.Pointer(in.EnableBasicAuthentication)) out.OIDCConfig = (*OIDCConfig)(unsafe.Pointer(in.OIDCConfig)) out.RuntimeConfig = *(*map[string]bool)(unsafe.Pointer(&in.RuntimeConfig)) out.ServiceAccountConfig = (*ServiceAccountConfig)(unsafe.Pointer(in.ServiceAccountConfig)) @@ -3394,6 +3464,7 @@ func autoConvert_v1alpha1_KubeletConfig_To_core_KubeletConfig(in *KubeletConfig, out.ContainerLogMaxFiles = (*int32)(unsafe.Pointer(in.ContainerLogMaxFiles)) out.ProtectKernelDefaults = (*bool)(unsafe.Pointer(in.ProtectKernelDefaults)) out.StreamingConnectionIdleTimeout = (*metav1.Duration)(unsafe.Pointer(in.StreamingConnectionIdleTimeout)) + out.MemorySwap = (*core.MemorySwapConfiguration)(unsafe.Pointer(in.MemorySwap)) return nil } @@ -3430,6 +3501,7 @@ func autoConvert_core_KubeletConfig_To_v1alpha1_KubeletConfig(in *core.KubeletCo out.SeccompDefault = (*bool)(unsafe.Pointer(in.SeccompDefault)) out.ProtectKernelDefaults = (*bool)(unsafe.Pointer(in.ProtectKernelDefaults)) out.StreamingConnectionIdleTimeout = (*metav1.Duration)(unsafe.Pointer(in.StreamingConnectionIdleTimeout)) + out.MemorySwap = (*MemorySwapConfiguration)(unsafe.Pointer(in.MemorySwap)) return nil } @@ -3968,7 +4040,7 @@ func Convert_core_Maintenance_To_v1alpha1_Maintenance(in *core.Maintenance, out func autoConvert_v1alpha1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *MaintenanceAutoUpdate, out *core.MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -3979,7 +4051,7 @@ func Convert_v1alpha1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *Ma func autoConvert_core_MaintenanceAutoUpdate_To_v1alpha1_MaintenanceAutoUpdate(in *core.MaintenanceAutoUpdate, out *MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -4010,6 +4082,26 @@ func Convert_core_MaintenanceTimeWindow_To_v1alpha1_MaintenanceTimeWindow(in *co return autoConvert_core_MaintenanceTimeWindow_To_v1alpha1_MaintenanceTimeWindow(in, out, s) } +func autoConvert_v1alpha1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(in *MemorySwapConfiguration, out *core.MemorySwapConfiguration, s conversion.Scope) error { + out.SwapBehavior = (*core.SwapBehavior)(unsafe.Pointer(in.SwapBehavior)) + return nil +} + +// Convert_v1alpha1_MemorySwapConfiguration_To_core_MemorySwapConfiguration is an autogenerated conversion function. +func Convert_v1alpha1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(in *MemorySwapConfiguration, out *core.MemorySwapConfiguration, s conversion.Scope) error { + return autoConvert_v1alpha1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(in, out, s) +} + +func autoConvert_core_MemorySwapConfiguration_To_v1alpha1_MemorySwapConfiguration(in *core.MemorySwapConfiguration, out *MemorySwapConfiguration, s conversion.Scope) error { + out.SwapBehavior = (*SwapBehavior)(unsafe.Pointer(in.SwapBehavior)) + return nil +} + +// Convert_core_MemorySwapConfiguration_To_v1alpha1_MemorySwapConfiguration is an autogenerated conversion function. +func Convert_core_MemorySwapConfiguration_To_v1alpha1_MemorySwapConfiguration(in *core.MemorySwapConfiguration, out *MemorySwapConfiguration, s conversion.Scope) error { + return autoConvert_core_MemorySwapConfiguration_To_v1alpha1_MemorySwapConfiguration(in, out, s) +} + func autoConvert_v1alpha1_Monitoring_To_core_Monitoring(in *Monitoring, out *core.Monitoring, s conversion.Scope) error { out.Alerting = (*core.Alerting)(unsafe.Pointer(in.Alerting)) return nil @@ -4053,7 +4145,7 @@ func Convert_core_NamedResourceReference_To_v1alpha1_NamedResourceReference(in * } func autoConvert_v1alpha1_Networking_To_core_Networking(in *Networking, out *core.Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4068,7 +4160,7 @@ func Convert_v1alpha1_Networking_To_core_Networking(in *Networking, out *core.Ne } func autoConvert_core_Networking_To_v1alpha1_Networking(in *core.Networking, out *Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4704,7 +4796,6 @@ func Convert_core_SeedBackup_To_v1alpha1_SeedBackup(in *core.SeedBackup, out *Se } func autoConvert_v1alpha1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*core.SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4715,7 +4806,6 @@ func Convert_v1alpha1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s } func autoConvert_core_SeedDNS_To_v1alpha1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4728,8 +4818,6 @@ func Convert_core_SeedDNS_To_v1alpha1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s func autoConvert_v1alpha1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvider, out *core.SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4741,8 +4829,6 @@ func Convert_v1alpha1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvide func autoConvert_core_SeedDNSProvider_To_v1alpha1_SeedDNSProvider(in *core.SeedDNSProvider, out *SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4863,6 +4949,8 @@ func Convert_core_SeedSelector_To_v1alpha1_SeedSelector(in *core.SeedSelector, o func autoConvert_v1alpha1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependencyWatchdog(in *SeedSettingDependencyWatchdog, out *core.SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*core.SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*core.SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*core.SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*core.SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -4874,6 +4962,8 @@ func Convert_v1alpha1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependenc func autoConvert_core_SeedSettingDependencyWatchdog_To_v1alpha1_SeedSettingDependencyWatchdog(in *core.SeedSettingDependencyWatchdog, out *SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -4922,6 +5012,46 @@ func Convert_core_SeedSettingDependencyWatchdogProbe_To_v1alpha1_SeedSettingDepe return autoConvert_core_SeedSettingDependencyWatchdogProbe_To_v1alpha1_SeedSettingDependencyWatchdogProbe(in, out, s) } +func autoConvert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + func autoConvert_v1alpha1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(in *SeedSettingExcessCapacityReservation, out *core.SeedSettingExcessCapacityReservation, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5030,6 +5160,26 @@ func Convert_core_SeedSettingScheduling_To_v1alpha1_SeedSettingScheduling(in *co return autoConvert_core_SeedSettingScheduling_To_v1alpha1_SeedSettingScheduling(in, out, s) } +func autoConvert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in, out, s) +} + +func autoConvert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(in, out, s) +} + func autoConvert_v1alpha1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(in *SeedSettingVerticalPodAutoscaler, out *core.SeedSettingVerticalPodAutoscaler, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5057,6 +5207,7 @@ func autoConvert_v1alpha1_SeedSettings_To_core_SeedSettings(in *SeedSettings, ou out.VerticalPodAutoscaler = (*core.SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*core.SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*core.SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*core.SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5072,6 +5223,7 @@ func autoConvert_core_SeedSettings_To_v1alpha1_SeedSettings(in *core.SeedSetting out.VerticalPodAutoscaler = (*SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5238,6 +5390,34 @@ func Convert_core_ServiceAccountConfig_To_v1alpha1_ServiceAccountConfig(in *core return autoConvert_core_ServiceAccountConfig_To_v1alpha1_ServiceAccountConfig(in, out, s) } +func autoConvert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in, out, s) +} + +func autoConvert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(in, out, s) +} + func autoConvert_v1alpha1_Shoot_To_core_Shoot(in *Shoot, out *core.Shoot, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta if err := Convert_v1alpha1_ShootSpec_To_core_ShootSpec(&in.Spec, &out.Spec, s); err != nil { @@ -5317,8 +5497,8 @@ func autoConvert_v1alpha1_ShootCredentialsRotation_To_core_ShootCredentialsRotat out.Kubeconfig = (*core.ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*core.ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*core.ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*core.ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*core.ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*core.ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*core.ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5332,8 +5512,8 @@ func autoConvert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotat out.Kubeconfig = (*ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5342,34 +5522,6 @@ func Convert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotation( return autoConvert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotation(in, out, s) } -func autoConvert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in, out, s) -} - -func autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in, out, s) -} - func autoConvert_v1alpha1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(in *ShootKubeconfigRotation, out *core.ShootKubeconfigRotation, s conversion.Scope) error { out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) @@ -5528,34 +5680,6 @@ func Convert_core_ShootSSHKeypairRotation_To_v1alpha1_ShootSSHKeypairRotation(in return autoConvert_core_ShootSSHKeypairRotation_To_v1alpha1_ShootSSHKeypairRotation(in, out, s) } -func autoConvert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in, out, s) -} - -func autoConvert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in, out, s) -} - func autoConvert_v1alpha1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.ShootSpec, s conversion.Scope) error { out.Addons = (*core.Addons)(unsafe.Pointer(in.Addons)) out.CloudProfileName = in.CloudProfileName @@ -5565,9 +5689,7 @@ func autoConvert_v1alpha1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.S if err := Convert_v1alpha1_Kubernetes_To_core_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_v1alpha1_Networking_To_core_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*core.Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*core.Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*core.Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_v1alpha1_Provider_To_core_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5575,7 +5697,7 @@ func autoConvert_v1alpha1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.S } out.Purpose = (*core.ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*core.SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]core.NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -5600,9 +5722,7 @@ func autoConvert_core_ShootSpec_To_v1alpha1_ShootSpec(in *core.ShootSpec, out *S if err := Convert_core_Kubernetes_To_v1alpha1_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_core_Networking_To_v1alpha1_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_core_Provider_To_v1alpha1_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5610,7 +5730,7 @@ func autoConvert_core_ShootSpec_To_v1alpha1_ShootSpec(in *core.ShootSpec, out *S } out.Purpose = (*ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -5927,6 +6047,7 @@ func autoConvert_v1alpha1_Worker_To_core_Worker(in *Worker, out *core.Worker, s out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.SystemComponents = (*core.WorkerSystemComponents)(unsafe.Pointer(in.SystemComponents)) out.MachineControllerManagerSettings = (*core.MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } @@ -5965,6 +6086,7 @@ func autoConvert_core_Worker_To_v1alpha1_Worker(in *core.Worker, out *Worker, s out.KubeletDataVolumeName = (*string)(unsafe.Pointer(in.KubeletDataVolumeName)) out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.MachineControllerManagerSettings = (*MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go index d3fed6a7f..91cad6fb8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -85,6 +85,11 @@ func (in *AdmissionPlugin) DeepCopyInto(out *AdmissionPlugin) { *out = new(bool) **out = **in } + if in.KubeconfigSecretName != nil { + in, out := &in.KubeconfigSecretName, &out.KubeconfigSecretName + *out = new(string) + **out = **in + } return } @@ -1065,6 +1070,11 @@ func (in *ControllerResource) DeepCopyInto(out *ControllerResource) { *out = new(ControllerResourceLifecycle) (*in).DeepCopyInto(*out) } + if in.WorkerlessSupported != nil { + in, out := &in.WorkerlessSupported, &out.WorkerlessSupported + *out = new(bool) + **out = **in + } return } @@ -1309,6 +1319,38 @@ func (in *DeploymentRef) DeepCopy() *DeploymentRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ETCDEncryptionKeyRotation) DeepCopyInto(out *ETCDEncryptionKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ETCDEncryptionKeyRotation. +func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ETCDEncryptionKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ExpirableVersion) DeepCopyInto(out *ExpirableVersion) { *out = *in @@ -1720,11 +1762,6 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(AuditConfig) (*in).DeepCopyInto(*out) } - if in.EnableBasicAuthentication != nil { - in, out := &in.EnableBasicAuthentication, &out.EnableBasicAuthentication - *out = new(bool) - **out = **in - } if in.OIDCConfig != nil { in, out := &in.OIDCConfig, &out.OIDCConfig *out = new(OIDCConfig) @@ -2057,6 +2094,11 @@ func (in *KubeletConfig) DeepCopyInto(out *KubeletConfig) { *out = new(metav1.Duration) **out = **in } + if in.MemorySwap != nil { + in, out := &in.MemorySwap, &out.MemorySwap + *out = new(MemorySwapConfiguration) + (*in).DeepCopyInto(*out) + } return } @@ -2617,7 +2659,7 @@ func (in *Maintenance) DeepCopyInto(out *Maintenance) { if in.AutoUpdate != nil { in, out := &in.AutoUpdate, &out.AutoUpdate *out = new(MaintenanceAutoUpdate) - **out = **in + (*in).DeepCopyInto(*out) } if in.TimeWindow != nil { in, out := &in.TimeWindow, &out.TimeWindow @@ -2645,6 +2687,11 @@ func (in *Maintenance) DeepCopy() *Maintenance { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaintenanceAutoUpdate) DeepCopyInto(out *MaintenanceAutoUpdate) { *out = *in + if in.MachineImageVersion != nil { + in, out := &in.MachineImageVersion, &out.MachineImageVersion + *out = new(bool) + **out = **in + } return } @@ -2674,6 +2721,27 @@ func (in *MaintenanceTimeWindow) DeepCopy() *MaintenanceTimeWindow { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MemorySwapConfiguration) DeepCopyInto(out *MemorySwapConfiguration) { + *out = *in + if in.SwapBehavior != nil { + in, out := &in.SwapBehavior, &out.SwapBehavior + *out = new(SwapBehavior) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemorySwapConfiguration. +func (in *MemorySwapConfiguration) DeepCopy() *MemorySwapConfiguration { + if in == nil { + return nil + } + out := new(MemorySwapConfiguration) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Monitoring) DeepCopyInto(out *Monitoring) { *out = *in @@ -2715,6 +2783,11 @@ func (in *NamedResourceReference) DeepCopy() *NamedResourceReference { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } if in.ProviderConfig != nil { in, out := &in.ProviderConfig, &out.ProviderConfig *out = new(runtime.RawExtension) @@ -3464,15 +3537,10 @@ func (in *SeedBackup) DeepCopy() *SeedBackup { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedDNS) DeepCopyInto(out *SeedDNS) { *out = *in - if in.IngressDomain != nil { - in, out := &in.IngressDomain, &out.IngressDomain - *out = new(string) - **out = **in - } if in.Provider != nil { in, out := &in.Provider, &out.Provider *out = new(SeedDNSProvider) - (*in).DeepCopyInto(*out) + **out = **in } return } @@ -3491,16 +3559,6 @@ func (in *SeedDNS) DeepCopy() *SeedDNS { func (in *SeedDNSProvider) DeepCopyInto(out *SeedDNSProvider) { *out = *in out.SecretRef = in.SecretRef - if in.Domains != nil { - in, out := &in.Domains, &out.Domains - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } - if in.Zones != nil { - in, out := &in.Zones, &out.Zones - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } return } @@ -3639,6 +3697,16 @@ func (in *SeedSettingDependencyWatchdog) DeepCopyInto(out *SeedSettingDependency *out = new(SeedSettingDependencyWatchdogProbe) **out = **in } + if in.Weeder != nil { + in, out := &in.Weeder, &out.Weeder + *out = new(SeedSettingDependencyWatchdogWeeder) + **out = **in + } + if in.Prober != nil { + in, out := &in.Prober, &out.Prober + *out = new(SeedSettingDependencyWatchdogProber) + **out = **in + } return } @@ -3684,6 +3752,38 @@ func (in *SeedSettingDependencyWatchdogProbe) DeepCopy() *SeedSettingDependencyW return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogProber) DeepCopyInto(out *SeedSettingDependencyWatchdogProber) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogProber. +func (in *SeedSettingDependencyWatchdogProber) DeepCopy() *SeedSettingDependencyWatchdogProber { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogProber) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopyInto(out *SeedSettingDependencyWatchdogWeeder) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogWeeder. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopy() *SeedSettingDependencyWatchdogWeeder { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogWeeder) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingExcessCapacityReservation) DeepCopyInto(out *SeedSettingExcessCapacityReservation) { *out = *in @@ -3795,6 +3895,22 @@ func (in *SeedSettingScheduling) DeepCopy() *SeedSettingScheduling { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingTopologyAwareRouting) DeepCopyInto(out *SeedSettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingTopologyAwareRouting. +func (in *SeedSettingTopologyAwareRouting) DeepCopy() *SeedSettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SeedSettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingVerticalPodAutoscaler) DeepCopyInto(out *SeedSettingVerticalPodAutoscaler) { *out = *in @@ -3844,6 +3960,11 @@ func (in *SeedSettings) DeepCopyInto(out *SeedSettings) { *out = new(SeedSettingDependencyWatchdog) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SeedSettingTopologyAwareRouting) + **out = **in + } return } @@ -4054,6 +4175,38 @@ func (in *ServiceAccountConfig) DeepCopy() *ServiceAccountConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountKeyRotation) DeepCopyInto(out *ServiceAccountKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountKeyRotation. +func (in *ServiceAccountKeyRotation) DeepCopy() *ServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Shoot) DeepCopyInto(out *Shoot) { *out = *in @@ -4144,12 +4297,12 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) } if in.ServiceAccountKey != nil { in, out := &in.ServiceAccountKey, &out.ServiceAccountKey - *out = new(ShootServiceAccountKeyRotation) + *out = new(ServiceAccountKeyRotation) (*in).DeepCopyInto(*out) } if in.ETCDEncryptionKey != nil { in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey - *out = new(ShootETCDEncryptionKeyRotation) + *out = new(ETCDEncryptionKeyRotation) (*in).DeepCopyInto(*out) } return @@ -4165,38 +4318,6 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. -func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { - if in == nil { - return nil - } - out := new(ShootETCDEncryptionKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4354,38 +4475,6 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. -func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { - if in == nil { - return nil - } - out := new(ShootServiceAccountKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in @@ -4412,7 +4501,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { (*in).DeepCopyInto(*out) } in.Kubernetes.DeepCopyInto(&out.Kubernetes) - in.Networking.DeepCopyInto(&out.Networking) + if in.Networking != nil { + in, out := &in.Networking, &out.Networking + *out = new(Networking) + (*in).DeepCopyInto(*out) + } if in.Maintenance != nil { in, out := &in.Maintenance, &out.Maintenance *out = new(Maintenance) @@ -4429,6 +4522,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = new(ShootPurpose) **out = **in } + if in.SecretBindingName != nil { + in, out := &in.SecretBindingName, &out.SecretBindingName + *out = new(string) + **out = **in + } if in.SeedName != nil { in, out := &in.SeedName, &out.SeedName *out = new(string) @@ -4931,6 +5029,13 @@ func (in *Worker) DeepCopyInto(out *Worker) { *out = new(MachineControllerManagerSettings) (*in).DeepCopyInto(*out) } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go index bcfdd7878..68704a853 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -145,7 +145,9 @@ func SetObjectDefaults_Shoot(in *Shoot) { if in.Spec.Kubernetes.VerticalPodAutoscaler != nil { SetDefaults_VerticalPodAutoscaler(in.Spec.Kubernetes.VerticalPodAutoscaler) } - SetDefaults_Networking(&in.Spec.Networking) + if in.Spec.Networking != nil { + SetDefaults_Networking(in.Spec.Networking) + } if in.Spec.Maintenance != nil { SetDefaults_Maintenance(in.Spec.Maintenance) } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go index d5e7c9229..76f109caa 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -104,6 +104,12 @@ const ( // DeploymentNameKubeControllerManager is a constant for the name of a Kubernetes deployment object that contains // the kube-controller-manager pod. DeploymentNameKubeControllerManager = "kube-controller-manager" + // DeploymentNameDependencyWatchdogProber is a constant for the name of a Kubernetes deployment object that contains + // the dependency-watchdog-prober pod. + DeploymentNameDependencyWatchdogProber = "dependency-watchdog-prober" + // DeploymentNameDependencyWatchdogWeeder is a constant for the name of a Kubernetes deployment object that contains + // the dependency-watchdog-weeder pod. + DeploymentNameDependencyWatchdogWeeder = "dependency-watchdog-weeder" // DeploymentNameGardenlet is a constant for the name of a Kubernetes deployment object that contains // the Gardenlet pod. DeploymentNameGardenlet = "gardenlet" @@ -118,17 +124,19 @@ const ( // DeploymentNameGardenerResourceManager is a constant for the name of a Kubernetes deployment object that contains // the gardener-resource-manager pod. DeploymentNameGardenerResourceManager = "gardener-resource-manager" - // DeploymentNameGrafanaOperators is a constant for the name of a Kubernetes deployment object that contains - // the grafana-operators pod. - DeploymentNameGrafanaOperators = "grafana-operators" - // DeploymentNameGrafanaUsers is a constant for the name of a Kubernetes deployment object that contains - // the grafana-users pod. - DeploymentNameGrafanaUsers = "grafana-users" // DeploymentNameGrafana is a constant for the name of a Kubernetes deployment object that contains the grafana pod. DeploymentNameGrafana = "grafana" + // DeploymentNamePlutono is a constant for the name of a Kubernetes deployment object that contains the plutono pod. + DeploymentNamePlutono = "plutono" // DeploymentNameEventLogger is a constant for the name of a Kubernetes deployment object that contains // the event-logger pod. DeploymentNameEventLogger = "event-logger" + // DeploymentNameFluentOperator is a constant for the name of a Kubernetes deployment object that contains + // the fluent-operator pod. + DeploymentNameFluentOperator = "fluent-operator" + // DaemonSetNameFluentBit is a constant for the name of a Kubernetes Daemonset object that contains + // the fluent-bit pod. + DaemonSetNameFluentBit = "fluent-bit" // DeploymentNameKubeStateMetrics is a constant for the name of a Kubernetes deployment object that contains // the kube-state-metrics pod. DeploymentNameKubeStateMetrics = "kube-state-metrics" @@ -167,6 +175,9 @@ const ( // StatefulSetNameLoki is a constant for the name of a Kubernetes stateful set object that contains // the loki pod. StatefulSetNameLoki = "loki" + // StatefulSetNameVali is a constant for the name of a Kubernetes stateful set object that contains + // the vali pod. + StatefulSetNameVali = "vali" // StatefulSetNamePrometheus is a constant for the name of a Kubernetes stateful set object that contains // the prometheus pod. StatefulSetNamePrometheus = "prometheus" @@ -263,10 +274,6 @@ const ( // GardenRoleExposureClassHandler is the value of the GardenRole key indicating type 'exposureclass-handler'. GardenRoleExposureClassHandler = "exposureclass-handler" - // ShootControlPlaneEnforceZone is an annotation key which is used to pin or schedule all control-plane pods - // to the very same availability zone. - // Deprecated: Only kept for removal of the label. - ShootControlPlaneEnforceZone = "control-plane.shoot.gardener.cloud/enforce-zone" // ShootUID is an annotation key for the shoot namespace in the seed cluster, // which value will be the value of `shoot.status.uid` ShootUID = "shoot.gardener.cloud/uid" @@ -398,6 +405,11 @@ const ( LabelLogging = "logging" // LabelMonitoring is a constant for a label for monitoring stack configurations LabelMonitoring = "monitoring" + // LabelKeyCustomLoggingResource is the key of the label which is used from the operator to select the CustomResources which will be imported in the FluentBit configuration. + // TODO(Kristian-ZH): the label key has to be migrated to "fluentbit.gardener.cloud/type". + LabelKeyCustomLoggingResource = "fluentbit.gardener/type" + // LabelValueCustomLoggingResource is the value of the label which is used from the operator to select the CustomResources which will be imported in the FluentBit configuration. + LabelValueCustomLoggingResource = "seed" // LabelSecretBindingReference is used to identify secrets which are referred by a SecretBinding (not necessarily in the same namespace). LabelSecretBindingReference = "reference.gardener.cloud/secretbinding" @@ -435,19 +447,8 @@ const ( // LabelNetworkPolicyToRuntimeAPIServer allows Egress from pods labeled with 'networking.gardener.cloud/to-runtime-apiserver=allowed' to runtime Kubernetes // API Server. LabelNetworkPolicyToRuntimeAPIServer = "networking.gardener.cloud/to-runtime-apiserver" - // LabelNetworkPolicyToShootAPIServer allows Egress from pods labeled with 'networking.gardener.cloud/to-shoot-apiserver=allowed' to talk to Shoot's - // Kubernetes API Server. - // Deprecated. Use `networking.resources.gardener.cloud/to-kube-apiserver-tcp-443=allowed` instead. - LabelNetworkPolicyToShootAPIServer = "networking.gardener.cloud/to-shoot-apiserver" // LabelNetworkPolicyToShootNetworks allows Egress from pods labeled with 'networking.gardener.cloud/to-shoot-networks=allowed' to IPv4 blocks belonging to the Shoot network. LabelNetworkPolicyToShootNetworks = "networking.gardener.cloud/to-shoot-networks" - // LabelNetworkPolicyToAllShootAPIServers allows Egress from pods labeled with 'networking.gardener.cloud/to-all-shoot-apiservers=allowed' to talk to all - // Shoots' Kubernetes API Servers. - LabelNetworkPolicyToAllShootAPIServers = "networking.gardener.cloud/to-all-shoot-apiservers" - // LabelNetworkPolicyFromShootAPIServer allows Egress from Shoot's Kubernetes API Server to talk to pods labeled with - // 'networking.gardener.cloud/from-shoot-apiserver=allowed'. - // Deprecated. Label `kube-apiserver` pods with `networking.resources.gardener.cloud/to--tcp-=allowed` instead. - LabelNetworkPolicyFromShootAPIServer = "networking.gardener.cloud/from-shoot-apiserver" // LabelNetworkPolicyFromPrometheus allows Ingress from Prometheus to pods labeled with 'networking.gardener.cloud/from-prometheus=allowed' and ports // named 'metrics' in the PodSpecification. // Deprecated: This label is deprecated and will be removed in a future version. Components in shoot namespaces @@ -455,10 +456,6 @@ const ( // `networking.resources.gardener.cloud/from-policy-pod-label-selector=all-scrape-targets` and // `networking.resources.gardener.cloud/from-policy-allowed-ports=[{"protocol":,"port":}]`. LabelNetworkPolicyFromPrometheus = "networking.gardener.cloud/from-prometheus" - // LabelNetworkPolicyToAggregatePrometheus allows Egress traffic to the aggregate Prometheus. - LabelNetworkPolicyToAggregatePrometheus = "networking.gardener.cloud/to-aggregate-prometheus" - // LabelNetworkPolicyToSeedPrometheus allows Egress traffic to the seed Prometheus. - LabelNetworkPolicyToSeedPrometheus = "networking.gardener.cloud/to-seed-prometheus" // LabelNetworkPolicyShootFromSeed allows Ingress traffic from the seed cluster (where the shoot's kube-apiserver // runs). LabelNetworkPolicyShootFromSeed = "networking.gardener.cloud/from-seed" @@ -472,9 +469,24 @@ const ( // which should be scraped by Prometheus. // See https://github.com/gardener/gardener/blob/master/docs/concepts/resource-manager.md#overwriting-the-pod-selector-label. LabelNetworkPolicyScrapeTargets = "all-scrape-targets" + // LabelNetworkPolicySeedScrapeTargets is a constant for pod selector label which can be used on Services for + // seed system components or extensions which should be scraped by Prometheus. + // See https://github.com/gardener/gardener/blob/master/docs/concepts/resource-manager.md#overwriting-the-pod-selector-label. + LabelNetworkPolicySeedScrapeTargets = "all-seed-scrape-targets" + // LabelNetworkPolicyWebhookTargets is a constant for pod selector label which can be used on Services for + // garden or shoot components which serve a webhook endpoint that must be reachable by the kube-apiserver. + // See https://github.com/gardener/gardener/blob/master/docs/concepts/resource-manager.md#overwriting-the-pod-selector-label. + LabelNetworkPolicyWebhookTargets = "all-webhook-targets" // LabelNetworkPolicyShootNamespaceAlias is a constant for the alias for shoot namespaces used in NetworkPolicy // labels. LabelNetworkPolicyShootNamespaceAlias = "all-shoots" + // LabelNetworkPolicyIstioIngressNamespaceAlias is a constant for the alias for shoot namespaces used in + // NetworkPolicy labels. + LabelNetworkPolicyIstioIngressNamespaceAlias = "all-istio-ingresses" + // LabelNetworkPolicyAccessTargetAPIServer is a constant for the alias for a namespace which runs components that + // need to initiate the communication with a target API server (e.g., shoot API server or virtual garden API + // server). + LabelNetworkPolicyAccessTargetAPIServer = "networking.gardener.cloud/access-target-apiserver" // LabelApp is a constant for a label key. LabelApp = "app" @@ -543,11 +555,6 @@ const ( // Kubernetes resources' step. Concretely, after the specified seconds, all the finalizers of the affected resources // are forcefully removed. AnnotationShootCleanupKubernetesResourcesFinalizeGracePeriodSeconds = "shoot.gardener.cloud/cleanup-kubernetes-resources-finalize-grace-period-seconds" - // AnnotationShootCleanupNamespaceResourcesFinalizeGracePeriodSeconds is a key for an annotation on a Shoot - // resource that declares the grace period in seconds for finalizing the resources handled in the 'cleanup shoot - // namespaces' step. Concretely, after the specified seconds, all the finalizers of the affected resources are - // forcefully removed. - AnnotationShootCleanupNamespaceResourcesFinalizeGracePeriodSeconds = "shoot.gardener.cloud/cleanup-namespaces-finalize-grace-period-seconds" // AnnotationShootInfrastructureCleanupWaitPeriodSeconds is a key for an annotation on a Shoot // resource that declares the wait period in seconds for infrastructure resources cleanup. Concretely, // Gardener will wait for the specified time after the Infrastructure extension object has been deleted to allow @@ -562,8 +569,6 @@ const ( // Note that changing this value only applies to new nodes. Existing nodes which already computed their individual // delays will not recompute it. AnnotationShootCloudConfigExecutionMaxDelaySeconds = "shoot.gardener.cloud/cloud-config-execution-max-delay-seconds" - // AnnotationShootForceRestore is a key for an annotation on a Shoot or BackupEntry resource to trigger a forceful restoration to a different seed. - AnnotationShootForceRestore = "shoot.gardener.cloud/force-restore" // AnnotationNodeLocalDNS enables a per node dns cache on the shoot cluster. AnnotationNodeLocalDNS = "alpha.featuregates.shoot.gardener.cloud/node-local-dns" // AnnotationNodeLocalDNSForceTcpToClusterDns enforces upgrade to tcp connections for communication between node local and cluster dns. @@ -590,7 +595,6 @@ const ( AnnotationSeccompAllowedProfiles = "seccomp.security.alpha.kubernetes.io/allowedProfileNames" // AnnotationSeccompAllowedProfilesRuntimeDefaultValue is the value for the default container runtime profile. AnnotationSeccompAllowedProfilesRuntimeDefaultValue = "runtime/default" - // OperatingSystemConfigUnitNameKubeletService is a constant for a unit in the operating system config that contains the kubelet service. OperatingSystemConfigUnitNameKubeletService = "kubelet.service" // OperatingSystemConfigUnitNameDockerService is a constant for a unit in the operating system config that contains the docker service. @@ -601,10 +605,10 @@ const ( OperatingSystemConfigFilePathKernelSettings = "/etc/sysctl.d/99-k8s-general.conf" // OperatingSystemConfigFilePathKubeletConfig is a constant for a path to a file in the operating system config that contains the kubelet configuration. OperatingSystemConfigFilePathKubeletConfig = "/var/lib/kubelet/config/kubelet" - // OperatingSystemConfigUnitNamePromtailService is a constant for a unit in the operating system config that contains the promtail service. - OperatingSystemConfigUnitNamePromtailService = "promtail.service" - // OperatingSystemConfigFilePathPromtailConfig is a constant for a path to a file in the operating system config that contains the kubelet configuration. - OperatingSystemConfigFilePathPromtailConfig = "/var/lib/promtail/config/config" + // OperatingSystemConfigUnitNameValitailService is a constant for a unit in the operating system config that contains the valitail service. + OperatingSystemConfigUnitNameValitailService = "valitail.service" + // OperatingSystemConfigFilePathValitailConfig is a constant for a path to a file in the operating system config that contains the kubelet configuration. + OperatingSystemConfigFilePathValitailConfig = "/var/lib/valitail/config/config" // OperatingSystemConfigFilePathBinaries is a constant for a path to a directory in the operating system config that contains the binaries. OperatingSystemConfigFilePathBinaries = "/opt/bin" @@ -616,10 +620,10 @@ const ( PrometheusConfigMapAlertingRules = "alerting_rules" // PrometheusConfigMapScrapeConfig is a constant for the Prometheus scrape config tag in provider-specific monitoring configuration PrometheusConfigMapScrapeConfig = "scrape_config" - // GrafanaConfigMapUserDashboard is a constant for the Grafana user dashboard tag in provider-specific monitoring configuration - GrafanaConfigMapUserDashboard = "dashboard_users" - // GrafanaConfigMapOperatorDashboard is a constant for the Grafana operator dashboard tag in provider-specific monitoring configuration - GrafanaConfigMapOperatorDashboard = "dashboard_operators" + // PlutonoConfigMapUserDashboard is a constant for the Plutono user dashboard tag in provider-specific monitoring configuration + PlutonoConfigMapUserDashboard = "dashboard_users" + // PlutonoConfigMapOperatorDashboard is a constant for the Plutono operator dashboard tag in provider-specific monitoring configuration + PlutonoConfigMapOperatorDashboard = "dashboard_operators" // LabelControllerRegistrationName is the key of a label on extension namespaces that indicates the controller registration name. LabelControllerRegistrationName = "controllerregistration.core.gardener.cloud/name" @@ -802,4 +806,7 @@ const ( TaintNodeCriticalComponentsNotReady = "node.gardener.cloud/critical-components-not-ready" // LabelNodeCriticalComponent is the label key for marking node-critical component pods. LabelNodeCriticalComponent = "node.gardener.cloud/critical-component" + // AnnotationWaitForCSINode is the annotation key for csi-driver-node pods, + // indicating they use the driver specified in the value. + AnnotationPrefixWaitForCSINode = "node.gardener.cloud/wait-for-csi-node-" ) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go index dadb1ce2c..d98aef2ab 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go index fa9e8a630..3514c923b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go index 2342242e5..9fb3fe703 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -71,6 +71,10 @@ func SetDefaults_Seed(obj *Seed) { if obj.Spec.Settings.DependencyWatchdog == nil { obj.Spec.Settings.DependencyWatchdog = &SeedSettingDependencyWatchdog{} } + + if obj.Spec.Settings.TopologyAwareRouting == nil { + obj.Spec.Settings.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{Enabled: false} + } } // SetDefaults_SeedNetworks sets default values for SeedNetworks objects. @@ -82,83 +86,16 @@ func SetDefaults_SeedNetworks(obj *SeedNetworks) { // SetDefaults_SeedSettingDependencyWatchdog sets defaults for SeedSettingDependencyWatchdog objects. func SetDefaults_SeedSettingDependencyWatchdog(obj *SeedSettingDependencyWatchdog) { - if obj.Endpoint == nil { - obj.Endpoint = &SeedSettingDependencyWatchdogEndpoint{Enabled: true} - } - if obj.Probe == nil { - obj.Probe = &SeedSettingDependencyWatchdogProbe{Enabled: true} - } } // SetDefaults_Shoot sets default values for Shoot objects. func SetDefaults_Shoot(obj *Shoot) { - // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. - k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") - if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { - obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) - } if obj.Spec.Kubernetes.KubeAPIServer == nil { obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{} } - if obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication = pointer.Bool(false) - } - if obj.Spec.Kubernetes.KubeAPIServer.Requests == nil { - obj.Spec.Kubernetes.KubeAPIServer.Requests = &KubeAPIServerRequests{} - } - if obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxNonMutatingInflight == nil { - obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxNonMutatingInflight = pointer.Int32(400) - } - if obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight == nil { - obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight = pointer.Int32(200) - } - if obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication = pointer.Bool(false) - } - if obj.Spec.Kubernetes.KubeAPIServer.EventTTL == nil { - obj.Spec.Kubernetes.KubeAPIServer.EventTTL = &metav1.Duration{Duration: time.Hour} - } - if obj.Spec.Kubernetes.KubeAPIServer.Logging == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging = &KubeAPIServerLogging{} - } - if obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity = pointer.Int32(2) - } - if obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds == nil { - obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds = pointer.Int64(300) - } - if obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds == nil { - obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(300) - } - if obj.Spec.Kubernetes.KubeControllerManager == nil { obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} } - if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) - } - if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} - } - - if obj.Spec.Kubernetes.KubeScheduler == nil { - obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} - } - if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { - defaultProfile := SchedulingProfileBalanced - obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile - } - - if obj.Spec.Kubernetes.KubeProxy == nil { - obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} - } - if obj.Spec.Kubernetes.KubeProxy.Mode == nil { - defaultProxyMode := ProxyModeIPTables - obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode - } - if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { - obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) - } if obj.Spec.Kubernetes.EnableStaticTokenKubeconfig == nil { // Error is ignored here because we cannot do anything meaningful with it - variable will default to "false". @@ -169,22 +106,6 @@ func SetDefaults_Shoot(obj *Shoot) { } } - if obj.Spec.Addons == nil { - obj.Spec.Addons = &Addons{} - } - if obj.Spec.Addons.KubernetesDashboard == nil { - obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} - } - if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { - var defaultAuthMode string - if *obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication { - defaultAuthMode = KubernetesDashboardAuthModeBasic - } else { - defaultAuthMode = KubernetesDashboardAuthModeToken - } - obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode - } - if obj.Spec.Purpose == nil { p := ShootPurposeEvaluation obj.Spec.Purpose = &p @@ -197,45 +118,17 @@ func SetDefaults_Shoot(obj *Shoot) { addTolerations(&obj.Spec.Tolerations, Toleration{Key: SeedTaintProtected}) } - if obj.Spec.Kubernetes.Kubelet == nil { - obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} - } - if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { - obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) - } - if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { - obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + if obj.Spec.Maintenance == nil { + obj.Spec.Maintenance = &Maintenance{} } - - var ( - kubeReservedMemory = resource.MustParse("1Gi") - kubeReservedCPU = resource.MustParse("80m") - kubeReservedPID = resource.MustParse("20k") - ) - - if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID - } else { - if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + if obj.Spec.Maintenance.AutoUpdate == nil { + obj.Spec.Maintenance.AutoUpdate = &MaintenanceAutoUpdate{ + KubernetesVersion: true, } } - if obj.Spec.Maintenance == nil { - obj.Spec.Maintenance = &Maintenance{} + if obj.Spec.Networking == nil { + obj.Spec.Networking = &Networking{} } for i, worker := range obj.Spec.Provider.Workers { @@ -257,29 +150,184 @@ func SetDefaults_Shoot(obj *Shoot) { if worker.CRI == nil { obj.Spec.Provider.Workers[i].CRI = &CRI{Name: CRINameContainerD} } - } - if obj.Spec.Provider.WorkersSettings == nil { - obj.Spec.Provider.WorkersSettings = &WorkersSettings{} + if worker.Kubernetes != nil && worker.Kubernetes.Kubelet != nil { + if worker.Kubernetes.Kubelet.FailSwapOn == nil { + obj.Spec.Provider.Workers[i].Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) + } + + if nodeSwapFeatureGateEnabled, ok := worker.Kubernetes.Kubelet.FeatureGates["NodeSwap"]; ok && nodeSwapFeatureGateEnabled && !*worker.Kubernetes.Kubelet.FailSwapOn { + if worker.Kubernetes.Kubelet.MemorySwap == nil { + obj.Spec.Provider.Workers[i].Kubernetes.Kubelet.MemorySwap = &MemorySwapConfiguration{} + } + + if worker.Kubernetes.Kubelet.MemorySwap.SwapBehavior == nil { + limitedSwap := LimitedSwap + obj.Spec.Provider.Workers[i].Kubernetes.Kubelet.MemorySwap.SwapBehavior = &limitedSwap + } + } + } } - if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { - obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} + + // these fields are relevant only for shoot with workers + if len(obj.Spec.Provider.Workers) > 0 { + // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. + k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") + if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { + obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) + } + + if obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds == nil { + obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds = pointer.Int64(300) + } + if obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds == nil { + obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(300) + } + + if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { + obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) + } + k8sLess127, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.27") + if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { + if k8sLess127 { + obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} + } else { + obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 40 * time.Second} + } + } + + if obj.Spec.Kubernetes.KubeScheduler == nil { + obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} + } + if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { + defaultProfile := SchedulingProfileBalanced + obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile + } + + if obj.Spec.Kubernetes.KubeProxy == nil { + obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} + } + if obj.Spec.Kubernetes.KubeProxy.Mode == nil { + defaultProxyMode := ProxyModeIPTables + obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode + } + if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { + obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) + } + + if obj.Spec.Addons == nil { + obj.Spec.Addons = &Addons{} + } + if obj.Spec.Addons.KubernetesDashboard == nil { + obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} + } + if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { + defaultAuthMode := KubernetesDashboardAuthModeToken + obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode + } + + if obj.Spec.Kubernetes.Kubelet == nil { + obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} + } + if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { + obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) + } + + k8sGreaterEquals122, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, ">= 1.22") + if nodeSwapFeatureGateEnabled, ok := obj.Spec.Kubernetes.Kubelet.FeatureGates["NodeSwap"]; k8sGreaterEquals122 && ok && nodeSwapFeatureGateEnabled && !*obj.Spec.Kubernetes.Kubelet.FailSwapOn { + if obj.Spec.Kubernetes.Kubelet.MemorySwap == nil { + obj.Spec.Kubernetes.Kubelet.MemorySwap = &MemorySwapConfiguration{} + } + if obj.Spec.Kubernetes.Kubelet.MemorySwap.SwapBehavior == nil { + limitedSwap := LimitedSwap + obj.Spec.Kubernetes.Kubelet.MemorySwap.SwapBehavior = &limitedSwap + } + } + if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) + } + if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) + } + if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { + obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + } + + var ( + kubeReservedMemory = resource.MustParse("1Gi") + kubeReservedCPU = resource.MustParse("80m") + kubeReservedPID = resource.MustParse("20k") + ) + + if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } else { + if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } + } + + if obj.Spec.Maintenance.AutoUpdate.MachineImageVersion == nil { + obj.Spec.Maintenance.AutoUpdate.MachineImageVersion = pointer.Bool(true) + } + + if obj.Spec.Provider.WorkersSettings == nil { + obj.Spec.Provider.WorkersSettings = &WorkersSettings{} + } + if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { + obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} + } + + if obj.Spec.SystemComponents == nil { + obj.Spec.SystemComponents = &SystemComponents{} + } + if obj.Spec.SystemComponents.CoreDNS == nil { + obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { + obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { + obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + } } +} - if obj.Spec.SystemComponents == nil { - obj.Spec.SystemComponents = &SystemComponents{} +// SetDefaults_KubeAPIServerConfig sets default values for KubeAPIServerConfig objects. +func SetDefaults_KubeAPIServerConfig(obj *KubeAPIServerConfig) { + if obj.Requests == nil { + obj.Requests = &KubeAPIServerRequests{} + } + if obj.Requests.MaxNonMutatingInflight == nil { + obj.Requests.MaxNonMutatingInflight = pointer.Int32(400) } - if obj.Spec.SystemComponents.CoreDNS == nil { - obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} + if obj.Requests.MaxMutatingInflight == nil { + obj.Requests.MaxMutatingInflight = pointer.Int32(200) } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { - obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} + if obj.EnableAnonymousAuthentication == nil { + obj.EnableAnonymousAuthentication = pointer.Bool(false) } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { - obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + if obj.EventTTL == nil { + obj.EventTTL = &metav1.Duration{Duration: time.Hour} + } + if obj.Logging == nil { + obj.Logging = &KubeAPIServerLogging{} + } + if obj.Logging.Verbosity == nil { + obj.Logging.Verbosity = pointer.Int32(2) } } +// SetDefaults_KubeControllerManagerConfig sets default values for KubeControllerManagerConfig objects. +func SetDefaults_KubeControllerManagerConfig(obj *KubeControllerManagerConfig) {} + // SetDefaults_Networking sets default values for Networking objects. func SetDefaults_Networking(obj *Networking) { if len(obj.IPFamilies) == 0 { @@ -289,13 +337,6 @@ func SetDefaults_Networking(obj *Networking) { // SetDefaults_Maintenance sets default values for Maintenance objects. func SetDefaults_Maintenance(obj *Maintenance) { - if obj.AutoUpdate == nil { - obj.AutoUpdate = &MaintenanceAutoUpdate{ - KubernetesVersion: true, - MachineImageVersion: true, - } - } - if obj.TimeWindow == nil { mt := timewindow.RandomMaintenanceTimeWindow() obj.TimeWindow = &MaintenanceTimeWindow{ diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go index 4de4421b9..5b9bd84a2 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go index 2951c848e..4dfc92774 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go index 2f08284e8..5df107a3d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go index 05dd4594f..2bf3a697d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go index d65538470..2b7045092 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1313,10 +1313,38 @@ func (m *DeploymentRef) XXX_DiscardUnknown() { var xxx_messageInfo_DeploymentRef proto.InternalMessageInfo +func (m *ETCDEncryptionKeyRotation) Reset() { *m = ETCDEncryptionKeyRotation{} } +func (*ETCDEncryptionKeyRotation) ProtoMessage() {} +func (*ETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{45} +} +func (m *ETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ETCDEncryptionKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ETCDEncryptionKeyRotation.Merge(m, src) +} +func (m *ETCDEncryptionKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ETCDEncryptionKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ETCDEncryptionKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ETCDEncryptionKeyRotation proto.InternalMessageInfo + func (m *ExpirableVersion) Reset() { *m = ExpirableVersion{} } func (*ExpirableVersion) ProtoMessage() {} func (*ExpirableVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{45} + return fileDescriptor_ca37af0df9a5bbd2, []int{46} } func (m *ExpirableVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1344,7 +1372,7 @@ var xxx_messageInfo_ExpirableVersion proto.InternalMessageInfo func (m *ExposureClass) Reset() { *m = ExposureClass{} } func (*ExposureClass) ProtoMessage() {} func (*ExposureClass) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{46} + return fileDescriptor_ca37af0df9a5bbd2, []int{47} } func (m *ExposureClass) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1372,7 +1400,7 @@ var xxx_messageInfo_ExposureClass proto.InternalMessageInfo func (m *ExposureClassList) Reset() { *m = ExposureClassList{} } func (*ExposureClassList) ProtoMessage() {} func (*ExposureClassList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{47} + return fileDescriptor_ca37af0df9a5bbd2, []int{48} } func (m *ExposureClassList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1400,7 +1428,7 @@ var xxx_messageInfo_ExposureClassList proto.InternalMessageInfo func (m *ExposureClassScheduling) Reset() { *m = ExposureClassScheduling{} } func (*ExposureClassScheduling) ProtoMessage() {} func (*ExposureClassScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{48} + return fileDescriptor_ca37af0df9a5bbd2, []int{49} } func (m *ExposureClassScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1428,7 +1456,7 @@ var xxx_messageInfo_ExposureClassScheduling proto.InternalMessageInfo func (m *Extension) Reset() { *m = Extension{} } func (*Extension) ProtoMessage() {} func (*Extension) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{49} + return fileDescriptor_ca37af0df9a5bbd2, []int{50} } func (m *Extension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1456,7 +1484,7 @@ var xxx_messageInfo_Extension proto.InternalMessageInfo func (m *ExtensionResourceState) Reset() { *m = ExtensionResourceState{} } func (*ExtensionResourceState) ProtoMessage() {} func (*ExtensionResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{50} + return fileDescriptor_ca37af0df9a5bbd2, []int{51} } func (m *ExtensionResourceState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1484,7 +1512,7 @@ var xxx_messageInfo_ExtensionResourceState proto.InternalMessageInfo func (m *FailureTolerance) Reset() { *m = FailureTolerance{} } func (*FailureTolerance) ProtoMessage() {} func (*FailureTolerance) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{51} + return fileDescriptor_ca37af0df9a5bbd2, []int{52} } func (m *FailureTolerance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1512,7 +1540,7 @@ var xxx_messageInfo_FailureTolerance proto.InternalMessageInfo func (m *Gardener) Reset() { *m = Gardener{} } func (*Gardener) ProtoMessage() {} func (*Gardener) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{52} + return fileDescriptor_ca37af0df9a5bbd2, []int{53} } func (m *Gardener) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1540,7 +1568,7 @@ var xxx_messageInfo_Gardener proto.InternalMessageInfo func (m *GardenerResourceData) Reset() { *m = GardenerResourceData{} } func (*GardenerResourceData) ProtoMessage() {} func (*GardenerResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{53} + return fileDescriptor_ca37af0df9a5bbd2, []int{54} } func (m *GardenerResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1568,7 +1596,7 @@ var xxx_messageInfo_GardenerResourceData proto.InternalMessageInfo func (m *Hibernation) Reset() { *m = Hibernation{} } func (*Hibernation) ProtoMessage() {} func (*Hibernation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{54} + return fileDescriptor_ca37af0df9a5bbd2, []int{55} } func (m *Hibernation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1596,7 +1624,7 @@ var xxx_messageInfo_Hibernation proto.InternalMessageInfo func (m *HibernationSchedule) Reset() { *m = HibernationSchedule{} } func (*HibernationSchedule) ProtoMessage() {} func (*HibernationSchedule) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{55} + return fileDescriptor_ca37af0df9a5bbd2, []int{56} } func (m *HibernationSchedule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1624,7 +1652,7 @@ var xxx_messageInfo_HibernationSchedule proto.InternalMessageInfo func (m *HighAvailability) Reset() { *m = HighAvailability{} } func (*HighAvailability) ProtoMessage() {} func (*HighAvailability) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{56} + return fileDescriptor_ca37af0df9a5bbd2, []int{57} } func (m *HighAvailability) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1652,7 +1680,7 @@ var xxx_messageInfo_HighAvailability proto.InternalMessageInfo func (m *HorizontalPodAutoscalerConfig) Reset() { *m = HorizontalPodAutoscalerConfig{} } func (*HorizontalPodAutoscalerConfig) ProtoMessage() {} func (*HorizontalPodAutoscalerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{57} + return fileDescriptor_ca37af0df9a5bbd2, []int{58} } func (m *HorizontalPodAutoscalerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1680,7 +1708,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerConfig proto.InternalMessageInfo func (m *Ingress) Reset() { *m = Ingress{} } func (*Ingress) ProtoMessage() {} func (*Ingress) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{58} + return fileDescriptor_ca37af0df9a5bbd2, []int{59} } func (m *Ingress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1708,7 +1736,7 @@ var xxx_messageInfo_Ingress proto.InternalMessageInfo func (m *IngressController) Reset() { *m = IngressController{} } func (*IngressController) ProtoMessage() {} func (*IngressController) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{59} + return fileDescriptor_ca37af0df9a5bbd2, []int{60} } func (m *IngressController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1736,7 +1764,7 @@ var xxx_messageInfo_IngressController proto.InternalMessageInfo func (m *KubeAPIServerConfig) Reset() { *m = KubeAPIServerConfig{} } func (*KubeAPIServerConfig) ProtoMessage() {} func (*KubeAPIServerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{60} + return fileDescriptor_ca37af0df9a5bbd2, []int{61} } func (m *KubeAPIServerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1764,7 +1792,7 @@ var xxx_messageInfo_KubeAPIServerConfig proto.InternalMessageInfo func (m *KubeAPIServerLogging) Reset() { *m = KubeAPIServerLogging{} } func (*KubeAPIServerLogging) ProtoMessage() {} func (*KubeAPIServerLogging) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{61} + return fileDescriptor_ca37af0df9a5bbd2, []int{62} } func (m *KubeAPIServerLogging) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1792,7 +1820,7 @@ var xxx_messageInfo_KubeAPIServerLogging proto.InternalMessageInfo func (m *KubeAPIServerRequests) Reset() { *m = KubeAPIServerRequests{} } func (*KubeAPIServerRequests) ProtoMessage() {} func (*KubeAPIServerRequests) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{62} + return fileDescriptor_ca37af0df9a5bbd2, []int{63} } func (m *KubeAPIServerRequests) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1820,7 +1848,7 @@ var xxx_messageInfo_KubeAPIServerRequests proto.InternalMessageInfo func (m *KubeControllerManagerConfig) Reset() { *m = KubeControllerManagerConfig{} } func (*KubeControllerManagerConfig) ProtoMessage() {} func (*KubeControllerManagerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{63} + return fileDescriptor_ca37af0df9a5bbd2, []int{64} } func (m *KubeControllerManagerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1848,7 +1876,7 @@ var xxx_messageInfo_KubeControllerManagerConfig proto.InternalMessageInfo func (m *KubeProxyConfig) Reset() { *m = KubeProxyConfig{} } func (*KubeProxyConfig) ProtoMessage() {} func (*KubeProxyConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{64} + return fileDescriptor_ca37af0df9a5bbd2, []int{65} } func (m *KubeProxyConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1876,7 +1904,7 @@ var xxx_messageInfo_KubeProxyConfig proto.InternalMessageInfo func (m *KubeSchedulerConfig) Reset() { *m = KubeSchedulerConfig{} } func (*KubeSchedulerConfig) ProtoMessage() {} func (*KubeSchedulerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{65} + return fileDescriptor_ca37af0df9a5bbd2, []int{66} } func (m *KubeSchedulerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1904,7 +1932,7 @@ var xxx_messageInfo_KubeSchedulerConfig proto.InternalMessageInfo func (m *KubeletConfig) Reset() { *m = KubeletConfig{} } func (*KubeletConfig) ProtoMessage() {} func (*KubeletConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{66} + return fileDescriptor_ca37af0df9a5bbd2, []int{67} } func (m *KubeletConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1932,7 +1960,7 @@ var xxx_messageInfo_KubeletConfig proto.InternalMessageInfo func (m *KubeletConfigEviction) Reset() { *m = KubeletConfigEviction{} } func (*KubeletConfigEviction) ProtoMessage() {} func (*KubeletConfigEviction) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{67} + return fileDescriptor_ca37af0df9a5bbd2, []int{68} } func (m *KubeletConfigEviction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1960,7 +1988,7 @@ var xxx_messageInfo_KubeletConfigEviction proto.InternalMessageInfo func (m *KubeletConfigEvictionMinimumReclaim) Reset() { *m = KubeletConfigEvictionMinimumReclaim{} } func (*KubeletConfigEvictionMinimumReclaim) ProtoMessage() {} func (*KubeletConfigEvictionMinimumReclaim) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{68} + return fileDescriptor_ca37af0df9a5bbd2, []int{69} } func (m *KubeletConfigEvictionMinimumReclaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1988,7 +2016,7 @@ var xxx_messageInfo_KubeletConfigEvictionMinimumReclaim proto.InternalMessageInf func (m *KubeletConfigEvictionSoftGracePeriod) Reset() { *m = KubeletConfigEvictionSoftGracePeriod{} } func (*KubeletConfigEvictionSoftGracePeriod) ProtoMessage() {} func (*KubeletConfigEvictionSoftGracePeriod) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{69} + return fileDescriptor_ca37af0df9a5bbd2, []int{70} } func (m *KubeletConfigEvictionSoftGracePeriod) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2016,7 +2044,7 @@ var xxx_messageInfo_KubeletConfigEvictionSoftGracePeriod proto.InternalMessageIn func (m *KubeletConfigReserved) Reset() { *m = KubeletConfigReserved{} } func (*KubeletConfigReserved) ProtoMessage() {} func (*KubeletConfigReserved) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{70} + return fileDescriptor_ca37af0df9a5bbd2, []int{71} } func (m *KubeletConfigReserved) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2044,7 +2072,7 @@ var xxx_messageInfo_KubeletConfigReserved proto.InternalMessageInfo func (m *Kubernetes) Reset() { *m = Kubernetes{} } func (*Kubernetes) ProtoMessage() {} func (*Kubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{71} + return fileDescriptor_ca37af0df9a5bbd2, []int{72} } func (m *Kubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2072,7 +2100,7 @@ var xxx_messageInfo_Kubernetes proto.InternalMessageInfo func (m *KubernetesConfig) Reset() { *m = KubernetesConfig{} } func (*KubernetesConfig) ProtoMessage() {} func (*KubernetesConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{72} + return fileDescriptor_ca37af0df9a5bbd2, []int{73} } func (m *KubernetesConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2100,7 +2128,7 @@ var xxx_messageInfo_KubernetesConfig proto.InternalMessageInfo func (m *KubernetesDashboard) Reset() { *m = KubernetesDashboard{} } func (*KubernetesDashboard) ProtoMessage() {} func (*KubernetesDashboard) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{73} + return fileDescriptor_ca37af0df9a5bbd2, []int{74} } func (m *KubernetesDashboard) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2128,7 +2156,7 @@ var xxx_messageInfo_KubernetesDashboard proto.InternalMessageInfo func (m *KubernetesSettings) Reset() { *m = KubernetesSettings{} } func (*KubernetesSettings) ProtoMessage() {} func (*KubernetesSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{74} + return fileDescriptor_ca37af0df9a5bbd2, []int{75} } func (m *KubernetesSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2156,7 +2184,7 @@ var xxx_messageInfo_KubernetesSettings proto.InternalMessageInfo func (m *LastError) Reset() { *m = LastError{} } func (*LastError) ProtoMessage() {} func (*LastError) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{75} + return fileDescriptor_ca37af0df9a5bbd2, []int{76} } func (m *LastError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2184,7 +2212,7 @@ var xxx_messageInfo_LastError proto.InternalMessageInfo func (m *LastMaintenance) Reset() { *m = LastMaintenance{} } func (*LastMaintenance) ProtoMessage() {} func (*LastMaintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{76} + return fileDescriptor_ca37af0df9a5bbd2, []int{77} } func (m *LastMaintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2212,7 +2240,7 @@ var xxx_messageInfo_LastMaintenance proto.InternalMessageInfo func (m *LastOperation) Reset() { *m = LastOperation{} } func (*LastOperation) ProtoMessage() {} func (*LastOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{77} + return fileDescriptor_ca37af0df9a5bbd2, []int{78} } func (m *LastOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2240,7 +2268,7 @@ var xxx_messageInfo_LastOperation proto.InternalMessageInfo func (m *Machine) Reset() { *m = Machine{} } func (*Machine) ProtoMessage() {} func (*Machine) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{78} + return fileDescriptor_ca37af0df9a5bbd2, []int{79} } func (m *Machine) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2268,7 +2296,7 @@ var xxx_messageInfo_Machine proto.InternalMessageInfo func (m *MachineControllerManagerSettings) Reset() { *m = MachineControllerManagerSettings{} } func (*MachineControllerManagerSettings) ProtoMessage() {} func (*MachineControllerManagerSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{79} + return fileDescriptor_ca37af0df9a5bbd2, []int{80} } func (m *MachineControllerManagerSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2296,7 +2324,7 @@ var xxx_messageInfo_MachineControllerManagerSettings proto.InternalMessageInfo func (m *MachineImage) Reset() { *m = MachineImage{} } func (*MachineImage) ProtoMessage() {} func (*MachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{80} + return fileDescriptor_ca37af0df9a5bbd2, []int{81} } func (m *MachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2324,7 +2352,7 @@ var xxx_messageInfo_MachineImage proto.InternalMessageInfo func (m *MachineImageVersion) Reset() { *m = MachineImageVersion{} } func (*MachineImageVersion) ProtoMessage() {} func (*MachineImageVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{81} + return fileDescriptor_ca37af0df9a5bbd2, []int{82} } func (m *MachineImageVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2352,7 +2380,7 @@ var xxx_messageInfo_MachineImageVersion proto.InternalMessageInfo func (m *MachineType) Reset() { *m = MachineType{} } func (*MachineType) ProtoMessage() {} func (*MachineType) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{82} + return fileDescriptor_ca37af0df9a5bbd2, []int{83} } func (m *MachineType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2380,7 +2408,7 @@ var xxx_messageInfo_MachineType proto.InternalMessageInfo func (m *MachineTypeStorage) Reset() { *m = MachineTypeStorage{} } func (*MachineTypeStorage) ProtoMessage() {} func (*MachineTypeStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{83} + return fileDescriptor_ca37af0df9a5bbd2, []int{84} } func (m *MachineTypeStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2408,7 +2436,7 @@ var xxx_messageInfo_MachineTypeStorage proto.InternalMessageInfo func (m *Maintenance) Reset() { *m = Maintenance{} } func (*Maintenance) ProtoMessage() {} func (*Maintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{84} + return fileDescriptor_ca37af0df9a5bbd2, []int{85} } func (m *Maintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2436,7 +2464,7 @@ var xxx_messageInfo_Maintenance proto.InternalMessageInfo func (m *MaintenanceAutoUpdate) Reset() { *m = MaintenanceAutoUpdate{} } func (*MaintenanceAutoUpdate) ProtoMessage() {} func (*MaintenanceAutoUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{85} + return fileDescriptor_ca37af0df9a5bbd2, []int{86} } func (m *MaintenanceAutoUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2492,7 @@ var xxx_messageInfo_MaintenanceAutoUpdate proto.InternalMessageInfo func (m *MaintenanceTimeWindow) Reset() { *m = MaintenanceTimeWindow{} } func (*MaintenanceTimeWindow) ProtoMessage() {} func (*MaintenanceTimeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{86} + return fileDescriptor_ca37af0df9a5bbd2, []int{87} } func (m *MaintenanceTimeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2489,10 +2517,38 @@ func (m *MaintenanceTimeWindow) XXX_DiscardUnknown() { var xxx_messageInfo_MaintenanceTimeWindow proto.InternalMessageInfo +func (m *MemorySwapConfiguration) Reset() { *m = MemorySwapConfiguration{} } +func (*MemorySwapConfiguration) ProtoMessage() {} +func (*MemorySwapConfiguration) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{88} +} +func (m *MemorySwapConfiguration) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MemorySwapConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *MemorySwapConfiguration) XXX_Merge(src proto.Message) { + xxx_messageInfo_MemorySwapConfiguration.Merge(m, src) +} +func (m *MemorySwapConfiguration) XXX_Size() int { + return m.Size() +} +func (m *MemorySwapConfiguration) XXX_DiscardUnknown() { + xxx_messageInfo_MemorySwapConfiguration.DiscardUnknown(m) +} + +var xxx_messageInfo_MemorySwapConfiguration proto.InternalMessageInfo + func (m *Monitoring) Reset() { *m = Monitoring{} } func (*Monitoring) ProtoMessage() {} func (*Monitoring) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{87} + return fileDescriptor_ca37af0df9a5bbd2, []int{89} } func (m *Monitoring) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2576,7 @@ var xxx_messageInfo_Monitoring proto.InternalMessageInfo func (m *NamedResourceReference) Reset() { *m = NamedResourceReference{} } func (*NamedResourceReference) ProtoMessage() {} func (*NamedResourceReference) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{88} + return fileDescriptor_ca37af0df9a5bbd2, []int{90} } func (m *NamedResourceReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2548,7 +2604,7 @@ var xxx_messageInfo_NamedResourceReference proto.InternalMessageInfo func (m *Networking) Reset() { *m = Networking{} } func (*Networking) ProtoMessage() {} func (*Networking) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{89} + return fileDescriptor_ca37af0df9a5bbd2, []int{91} } func (m *Networking) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2576,7 +2632,7 @@ var xxx_messageInfo_Networking proto.InternalMessageInfo func (m *NginxIngress) Reset() { *m = NginxIngress{} } func (*NginxIngress) ProtoMessage() {} func (*NginxIngress) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{90} + return fileDescriptor_ca37af0df9a5bbd2, []int{92} } func (m *NginxIngress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2604,7 +2660,7 @@ var xxx_messageInfo_NginxIngress proto.InternalMessageInfo func (m *NodeLocalDNS) Reset() { *m = NodeLocalDNS{} } func (*NodeLocalDNS) ProtoMessage() {} func (*NodeLocalDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{91} + return fileDescriptor_ca37af0df9a5bbd2, []int{93} } func (m *NodeLocalDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2632,7 +2688,7 @@ var xxx_messageInfo_NodeLocalDNS proto.InternalMessageInfo func (m *OIDCConfig) Reset() { *m = OIDCConfig{} } func (*OIDCConfig) ProtoMessage() {} func (*OIDCConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{92} + return fileDescriptor_ca37af0df9a5bbd2, []int{94} } func (m *OIDCConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2660,7 +2716,7 @@ var xxx_messageInfo_OIDCConfig proto.InternalMessageInfo func (m *OpenIDConnectClientAuthentication) Reset() { *m = OpenIDConnectClientAuthentication{} } func (*OpenIDConnectClientAuthentication) ProtoMessage() {} func (*OpenIDConnectClientAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{93} + return fileDescriptor_ca37af0df9a5bbd2, []int{95} } func (m *OpenIDConnectClientAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2688,7 +2744,7 @@ var xxx_messageInfo_OpenIDConnectClientAuthentication proto.InternalMessageInfo func (m *Project) Reset() { *m = Project{} } func (*Project) ProtoMessage() {} func (*Project) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{94} + return fileDescriptor_ca37af0df9a5bbd2, []int{96} } func (m *Project) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2716,7 +2772,7 @@ var xxx_messageInfo_Project proto.InternalMessageInfo func (m *ProjectList) Reset() { *m = ProjectList{} } func (*ProjectList) ProtoMessage() {} func (*ProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{95} + return fileDescriptor_ca37af0df9a5bbd2, []int{97} } func (m *ProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2800,7 @@ var xxx_messageInfo_ProjectList proto.InternalMessageInfo func (m *ProjectMember) Reset() { *m = ProjectMember{} } func (*ProjectMember) ProtoMessage() {} func (*ProjectMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{96} + return fileDescriptor_ca37af0df9a5bbd2, []int{98} } func (m *ProjectMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2772,7 +2828,7 @@ var xxx_messageInfo_ProjectMember proto.InternalMessageInfo func (m *ProjectSpec) Reset() { *m = ProjectSpec{} } func (*ProjectSpec) ProtoMessage() {} func (*ProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{97} + return fileDescriptor_ca37af0df9a5bbd2, []int{99} } func (m *ProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2800,7 +2856,7 @@ var xxx_messageInfo_ProjectSpec proto.InternalMessageInfo func (m *ProjectStatus) Reset() { *m = ProjectStatus{} } func (*ProjectStatus) ProtoMessage() {} func (*ProjectStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{98} + return fileDescriptor_ca37af0df9a5bbd2, []int{100} } func (m *ProjectStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2828,7 +2884,7 @@ var xxx_messageInfo_ProjectStatus proto.InternalMessageInfo func (m *ProjectTolerations) Reset() { *m = ProjectTolerations{} } func (*ProjectTolerations) ProtoMessage() {} func (*ProjectTolerations) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{99} + return fileDescriptor_ca37af0df9a5bbd2, []int{101} } func (m *ProjectTolerations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2856,7 +2912,7 @@ var xxx_messageInfo_ProjectTolerations proto.InternalMessageInfo func (m *Provider) Reset() { *m = Provider{} } func (*Provider) ProtoMessage() {} func (*Provider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{100} + return fileDescriptor_ca37af0df9a5bbd2, []int{102} } func (m *Provider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +2940,7 @@ var xxx_messageInfo_Provider proto.InternalMessageInfo func (m *Quota) Reset() { *m = Quota{} } func (*Quota) ProtoMessage() {} func (*Quota) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{101} + return fileDescriptor_ca37af0df9a5bbd2, []int{103} } func (m *Quota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,7 +2968,7 @@ var xxx_messageInfo_Quota proto.InternalMessageInfo func (m *QuotaList) Reset() { *m = QuotaList{} } func (*QuotaList) ProtoMessage() {} func (*QuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{102} + return fileDescriptor_ca37af0df9a5bbd2, []int{104} } func (m *QuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2996,7 @@ var xxx_messageInfo_QuotaList proto.InternalMessageInfo func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } func (*QuotaSpec) ProtoMessage() {} func (*QuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{103} + return fileDescriptor_ca37af0df9a5bbd2, []int{105} } func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2968,7 +3024,7 @@ var xxx_messageInfo_QuotaSpec proto.InternalMessageInfo func (m *Region) Reset() { *m = Region{} } func (*Region) ProtoMessage() {} func (*Region) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{104} + return fileDescriptor_ca37af0df9a5bbd2, []int{106} } func (m *Region) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2996,7 +3052,7 @@ var xxx_messageInfo_Region proto.InternalMessageInfo func (m *ResourceData) Reset() { *m = ResourceData{} } func (*ResourceData) ProtoMessage() {} func (*ResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{105} + return fileDescriptor_ca37af0df9a5bbd2, []int{107} } func (m *ResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3024,7 +3080,7 @@ var xxx_messageInfo_ResourceData proto.InternalMessageInfo func (m *ResourceWatchCacheSize) Reset() { *m = ResourceWatchCacheSize{} } func (*ResourceWatchCacheSize) ProtoMessage() {} func (*ResourceWatchCacheSize) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{106} + return fileDescriptor_ca37af0df9a5bbd2, []int{108} } func (m *ResourceWatchCacheSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3052,7 +3108,7 @@ var xxx_messageInfo_ResourceWatchCacheSize proto.InternalMessageInfo func (m *SSHAccess) Reset() { *m = SSHAccess{} } func (*SSHAccess) ProtoMessage() {} func (*SSHAccess) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{107} + return fileDescriptor_ca37af0df9a5bbd2, []int{109} } func (m *SSHAccess) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3080,7 +3136,7 @@ var xxx_messageInfo_SSHAccess proto.InternalMessageInfo func (m *SecretBinding) Reset() { *m = SecretBinding{} } func (*SecretBinding) ProtoMessage() {} func (*SecretBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{108} + return fileDescriptor_ca37af0df9a5bbd2, []int{110} } func (m *SecretBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3164,7 @@ var xxx_messageInfo_SecretBinding proto.InternalMessageInfo func (m *SecretBindingList) Reset() { *m = SecretBindingList{} } func (*SecretBindingList) ProtoMessage() {} func (*SecretBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{109} + return fileDescriptor_ca37af0df9a5bbd2, []int{111} } func (m *SecretBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3136,7 +3192,7 @@ var xxx_messageInfo_SecretBindingList proto.InternalMessageInfo func (m *SecretBindingProvider) Reset() { *m = SecretBindingProvider{} } func (*SecretBindingProvider) ProtoMessage() {} func (*SecretBindingProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{110} + return fileDescriptor_ca37af0df9a5bbd2, []int{112} } func (m *SecretBindingProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3164,7 +3220,7 @@ var xxx_messageInfo_SecretBindingProvider proto.InternalMessageInfo func (m *Seed) Reset() { *m = Seed{} } func (*Seed) ProtoMessage() {} func (*Seed) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{111} + return fileDescriptor_ca37af0df9a5bbd2, []int{113} } func (m *Seed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3248,7 @@ var xxx_messageInfo_Seed proto.InternalMessageInfo func (m *SeedBackup) Reset() { *m = SeedBackup{} } func (*SeedBackup) ProtoMessage() {} func (*SeedBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{112} + return fileDescriptor_ca37af0df9a5bbd2, []int{114} } func (m *SeedBackup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3220,7 +3276,7 @@ var xxx_messageInfo_SeedBackup proto.InternalMessageInfo func (m *SeedDNS) Reset() { *m = SeedDNS{} } func (*SeedDNS) ProtoMessage() {} func (*SeedDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{113} + return fileDescriptor_ca37af0df9a5bbd2, []int{115} } func (m *SeedDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3248,7 +3304,7 @@ var xxx_messageInfo_SeedDNS proto.InternalMessageInfo func (m *SeedDNSProvider) Reset() { *m = SeedDNSProvider{} } func (*SeedDNSProvider) ProtoMessage() {} func (*SeedDNSProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{114} + return fileDescriptor_ca37af0df9a5bbd2, []int{116} } func (m *SeedDNSProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3276,7 +3332,7 @@ var xxx_messageInfo_SeedDNSProvider proto.InternalMessageInfo func (m *SeedList) Reset() { *m = SeedList{} } func (*SeedList) ProtoMessage() {} func (*SeedList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{115} + return fileDescriptor_ca37af0df9a5bbd2, []int{117} } func (m *SeedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3304,7 +3360,7 @@ var xxx_messageInfo_SeedList proto.InternalMessageInfo func (m *SeedNetworks) Reset() { *m = SeedNetworks{} } func (*SeedNetworks) ProtoMessage() {} func (*SeedNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{116} + return fileDescriptor_ca37af0df9a5bbd2, []int{118} } func (m *SeedNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3332,7 +3388,7 @@ var xxx_messageInfo_SeedNetworks proto.InternalMessageInfo func (m *SeedProvider) Reset() { *m = SeedProvider{} } func (*SeedProvider) ProtoMessage() {} func (*SeedProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{117} + return fileDescriptor_ca37af0df9a5bbd2, []int{119} } func (m *SeedProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3360,7 +3416,7 @@ var xxx_messageInfo_SeedProvider proto.InternalMessageInfo func (m *SeedSelector) Reset() { *m = SeedSelector{} } func (*SeedSelector) ProtoMessage() {} func (*SeedSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{118} + return fileDescriptor_ca37af0df9a5bbd2, []int{120} } func (m *SeedSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3388,7 +3444,7 @@ var xxx_messageInfo_SeedSelector proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdog) Reset() { *m = SeedSettingDependencyWatchdog{} } func (*SeedSettingDependencyWatchdog) ProtoMessage() {} func (*SeedSettingDependencyWatchdog) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{119} + return fileDescriptor_ca37af0df9a5bbd2, []int{121} } func (m *SeedSettingDependencyWatchdog) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3416,7 +3472,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdog proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdogEndpoint) Reset() { *m = SeedSettingDependencyWatchdogEndpoint{} } func (*SeedSettingDependencyWatchdogEndpoint) ProtoMessage() {} func (*SeedSettingDependencyWatchdogEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{120} + return fileDescriptor_ca37af0df9a5bbd2, []int{122} } func (m *SeedSettingDependencyWatchdogEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3444,7 +3500,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogEndpoint proto.InternalMessageI func (m *SeedSettingDependencyWatchdogProbe) Reset() { *m = SeedSettingDependencyWatchdogProbe{} } func (*SeedSettingDependencyWatchdogProbe) ProtoMessage() {} func (*SeedSettingDependencyWatchdogProbe) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{121} + return fileDescriptor_ca37af0df9a5bbd2, []int{123} } func (m *SeedSettingDependencyWatchdogProbe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3469,10 +3525,66 @@ func (m *SeedSettingDependencyWatchdogProbe) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo +func (m *SeedSettingDependencyWatchdogProber) Reset() { *m = SeedSettingDependencyWatchdogProber{} } +func (*SeedSettingDependencyWatchdogProber) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogProber) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{124} +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogProber) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogProber proto.InternalMessageInfo + +func (m *SeedSettingDependencyWatchdogWeeder) Reset() { *m = SeedSettingDependencyWatchdogWeeder{} } +func (*SeedSettingDependencyWatchdogWeeder) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogWeeder) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{125} +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogWeeder proto.InternalMessageInfo + func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{122} + return fileDescriptor_ca37af0df9a5bbd2, []int{126} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3500,7 +3612,7 @@ var xxx_messageInfo_SeedSettingExcessCapacityReservation proto.InternalMessageIn func (m *SeedSettingLoadBalancerServices) Reset() { *m = SeedSettingLoadBalancerServices{} } func (*SeedSettingLoadBalancerServices) ProtoMessage() {} func (*SeedSettingLoadBalancerServices) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{123} + return fileDescriptor_ca37af0df9a5bbd2, []int{127} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3528,7 +3640,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingLoadBalancerServicesZones) Reset() { *m = SeedSettingLoadBalancerServicesZones{} } func (*SeedSettingLoadBalancerServicesZones) ProtoMessage() {} func (*SeedSettingLoadBalancerServicesZones) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{124} + return fileDescriptor_ca37af0df9a5bbd2, []int{128} } func (m *SeedSettingLoadBalancerServicesZones) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3556,7 +3668,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServicesZones proto.InternalMessageIn func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{125} + return fileDescriptor_ca37af0df9a5bbd2, []int{129} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3584,7 +3696,7 @@ var xxx_messageInfo_SeedSettingOwnerChecks proto.InternalMessageInfo func (m *SeedSettingScheduling) Reset() { *m = SeedSettingScheduling{} } func (*SeedSettingScheduling) ProtoMessage() {} func (*SeedSettingScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{126} + return fileDescriptor_ca37af0df9a5bbd2, []int{130} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3609,10 +3721,38 @@ func (m *SeedSettingScheduling) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo +func (m *SeedSettingTopologyAwareRouting) Reset() { *m = SeedSettingTopologyAwareRouting{} } +func (*SeedSettingTopologyAwareRouting) ProtoMessage() {} +func (*SeedSettingTopologyAwareRouting) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{131} +} +func (m *SeedSettingTopologyAwareRouting) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingTopologyAwareRouting) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingTopologyAwareRouting) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingTopologyAwareRouting.Merge(m, src) +} +func (m *SeedSettingTopologyAwareRouting) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingTopologyAwareRouting) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingTopologyAwareRouting.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingTopologyAwareRouting proto.InternalMessageInfo + func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{127} + return fileDescriptor_ca37af0df9a5bbd2, []int{132} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3780,7 @@ var xxx_messageInfo_SeedSettingVerticalPodAutoscaler proto.InternalMessageInfo func (m *SeedSettings) Reset() { *m = SeedSettings{} } func (*SeedSettings) ProtoMessage() {} func (*SeedSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{128} + return fileDescriptor_ca37af0df9a5bbd2, []int{133} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3668,7 +3808,7 @@ var xxx_messageInfo_SeedSettings proto.InternalMessageInfo func (m *SeedSpec) Reset() { *m = SeedSpec{} } func (*SeedSpec) ProtoMessage() {} func (*SeedSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{129} + return fileDescriptor_ca37af0df9a5bbd2, []int{134} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3696,7 +3836,7 @@ var xxx_messageInfo_SeedSpec proto.InternalMessageInfo func (m *SeedStatus) Reset() { *m = SeedStatus{} } func (*SeedStatus) ProtoMessage() {} func (*SeedStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{130} + return fileDescriptor_ca37af0df9a5bbd2, []int{135} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3724,7 +3864,7 @@ var xxx_messageInfo_SeedStatus proto.InternalMessageInfo func (m *SeedTaint) Reset() { *m = SeedTaint{} } func (*SeedTaint) ProtoMessage() {} func (*SeedTaint) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{131} + return fileDescriptor_ca37af0df9a5bbd2, []int{136} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3752,7 +3892,7 @@ var xxx_messageInfo_SeedTaint proto.InternalMessageInfo func (m *SeedTemplate) Reset() { *m = SeedTemplate{} } func (*SeedTemplate) ProtoMessage() {} func (*SeedTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{132} + return fileDescriptor_ca37af0df9a5bbd2, []int{137} } func (m *SeedTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3780,7 +3920,7 @@ var xxx_messageInfo_SeedTemplate proto.InternalMessageInfo func (m *SeedVolume) Reset() { *m = SeedVolume{} } func (*SeedVolume) ProtoMessage() {} func (*SeedVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{133} + return fileDescriptor_ca37af0df9a5bbd2, []int{138} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3808,7 +3948,7 @@ var xxx_messageInfo_SeedVolume proto.InternalMessageInfo func (m *SeedVolumeProvider) Reset() { *m = SeedVolumeProvider{} } func (*SeedVolumeProvider) ProtoMessage() {} func (*SeedVolumeProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{134} + return fileDescriptor_ca37af0df9a5bbd2, []int{139} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3836,7 +3976,7 @@ var xxx_messageInfo_SeedVolumeProvider proto.InternalMessageInfo func (m *ServiceAccountConfig) Reset() { *m = ServiceAccountConfig{} } func (*ServiceAccountConfig) ProtoMessage() {} func (*ServiceAccountConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{135} + return fileDescriptor_ca37af0df9a5bbd2, []int{140} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3861,10 +4001,38 @@ func (m *ServiceAccountConfig) XXX_DiscardUnknown() { var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo +func (m *ServiceAccountKeyRotation) Reset() { *m = ServiceAccountKeyRotation{} } +func (*ServiceAccountKeyRotation) ProtoMessage() {} +func (*ServiceAccountKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{141} +} +func (m *ServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceAccountKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ServiceAccountKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceAccountKeyRotation.Merge(m, src) +} +func (m *ServiceAccountKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ServiceAccountKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceAccountKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ServiceAccountKeyRotation proto.InternalMessageInfo + func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{136} + return fileDescriptor_ca37af0df9a5bbd2, []int{142} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3892,7 +4060,7 @@ var xxx_messageInfo_Shoot proto.InternalMessageInfo func (m *ShootAdvertisedAddress) Reset() { *m = ShootAdvertisedAddress{} } func (*ShootAdvertisedAddress) ProtoMessage() {} func (*ShootAdvertisedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{137} + return fileDescriptor_ca37af0df9a5bbd2, []int{143} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3920,7 +4088,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{138} + return fileDescriptor_ca37af0df9a5bbd2, []int{144} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3948,7 +4116,7 @@ var xxx_messageInfo_ShootCredentials proto.InternalMessageInfo func (m *ShootCredentialsRotation) Reset() { *m = ShootCredentialsRotation{} } func (*ShootCredentialsRotation) ProtoMessage() {} func (*ShootCredentialsRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{139} + return fileDescriptor_ca37af0df9a5bbd2, []int{145} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3973,38 +4141,10 @@ func (m *ShootCredentialsRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo -func (m *ShootETCDEncryptionKeyRotation) Reset() { *m = ShootETCDEncryptionKeyRotation{} } -func (*ShootETCDEncryptionKeyRotation) ProtoMessage() {} -func (*ShootETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{140} -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.Merge(m, src) -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootETCDEncryptionKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootETCDEncryptionKeyRotation proto.InternalMessageInfo - func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{141} + return fileDescriptor_ca37af0df9a5bbd2, []int{146} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4032,7 +4172,7 @@ var xxx_messageInfo_ShootKubeconfigRotation proto.InternalMessageInfo func (m *ShootList) Reset() { *m = ShootList{} } func (*ShootList) ProtoMessage() {} func (*ShootList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{142} + return fileDescriptor_ca37af0df9a5bbd2, []int{147} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4060,7 +4200,7 @@ var xxx_messageInfo_ShootList proto.InternalMessageInfo func (m *ShootMachineImage) Reset() { *m = ShootMachineImage{} } func (*ShootMachineImage) ProtoMessage() {} func (*ShootMachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{143} + return fileDescriptor_ca37af0df9a5bbd2, []int{148} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4088,7 +4228,7 @@ var xxx_messageInfo_ShootMachineImage proto.InternalMessageInfo func (m *ShootNetworks) Reset() { *m = ShootNetworks{} } func (*ShootNetworks) ProtoMessage() {} func (*ShootNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{144} + return fileDescriptor_ca37af0df9a5bbd2, []int{149} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4116,7 +4256,7 @@ var xxx_messageInfo_ShootNetworks proto.InternalMessageInfo func (m *ShootObservabilityRotation) Reset() { *m = ShootObservabilityRotation{} } func (*ShootObservabilityRotation) ProtoMessage() {} func (*ShootObservabilityRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{145} + return fileDescriptor_ca37af0df9a5bbd2, []int{150} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4144,7 +4284,7 @@ var xxx_messageInfo_ShootObservabilityRotation proto.InternalMessageInfo func (m *ShootSSHKeypairRotation) Reset() { *m = ShootSSHKeypairRotation{} } func (*ShootSSHKeypairRotation) ProtoMessage() {} func (*ShootSSHKeypairRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{146} + return fileDescriptor_ca37af0df9a5bbd2, []int{151} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4169,38 +4309,10 @@ func (m *ShootSSHKeypairRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo -func (m *ShootServiceAccountKeyRotation) Reset() { *m = ShootServiceAccountKeyRotation{} } -func (*ShootServiceAccountKeyRotation) ProtoMessage() {} -func (*ShootServiceAccountKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{147} -} -func (m *ShootServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootServiceAccountKeyRotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *ShootServiceAccountKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootServiceAccountKeyRotation.Merge(m, src) -} -func (m *ShootServiceAccountKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootServiceAccountKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootServiceAccountKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootServiceAccountKeyRotation proto.InternalMessageInfo - func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{148} + return fileDescriptor_ca37af0df9a5bbd2, []int{152} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4228,7 +4340,7 @@ var xxx_messageInfo_ShootSpec proto.InternalMessageInfo func (m *ShootState) Reset() { *m = ShootState{} } func (*ShootState) ProtoMessage() {} func (*ShootState) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{149} + return fileDescriptor_ca37af0df9a5bbd2, []int{153} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4256,7 +4368,7 @@ var xxx_messageInfo_ShootState proto.InternalMessageInfo func (m *ShootStateList) Reset() { *m = ShootStateList{} } func (*ShootStateList) ProtoMessage() {} func (*ShootStateList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{150} + return fileDescriptor_ca37af0df9a5bbd2, []int{154} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4284,7 +4396,7 @@ var xxx_messageInfo_ShootStateList proto.InternalMessageInfo func (m *ShootStateSpec) Reset() { *m = ShootStateSpec{} } func (*ShootStateSpec) ProtoMessage() {} func (*ShootStateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{151} + return fileDescriptor_ca37af0df9a5bbd2, []int{155} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4312,7 +4424,7 @@ var xxx_messageInfo_ShootStateSpec proto.InternalMessageInfo func (m *ShootStatus) Reset() { *m = ShootStatus{} } func (*ShootStatus) ProtoMessage() {} func (*ShootStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{152} + return fileDescriptor_ca37af0df9a5bbd2, []int{156} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4340,7 +4452,7 @@ var xxx_messageInfo_ShootStatus proto.InternalMessageInfo func (m *ShootTemplate) Reset() { *m = ShootTemplate{} } func (*ShootTemplate) ProtoMessage() {} func (*ShootTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{153} + return fileDescriptor_ca37af0df9a5bbd2, []int{157} } func (m *ShootTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4368,7 +4480,7 @@ var xxx_messageInfo_ShootTemplate proto.InternalMessageInfo func (m *SystemComponents) Reset() { *m = SystemComponents{} } func (*SystemComponents) ProtoMessage() {} func (*SystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{154} + return fileDescriptor_ca37af0df9a5bbd2, []int{158} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4396,7 +4508,7 @@ var xxx_messageInfo_SystemComponents proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{155} + return fileDescriptor_ca37af0df9a5bbd2, []int{159} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4424,7 +4536,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *VerticalPodAutoscaler) Reset() { *m = VerticalPodAutoscaler{} } func (*VerticalPodAutoscaler) ProtoMessage() {} func (*VerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{156} + return fileDescriptor_ca37af0df9a5bbd2, []int{160} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4452,7 +4564,7 @@ var xxx_messageInfo_VerticalPodAutoscaler proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{157} + return fileDescriptor_ca37af0df9a5bbd2, []int{161} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4480,7 +4592,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeType) Reset() { *m = VolumeType{} } func (*VolumeType) ProtoMessage() {} func (*VolumeType) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{158} + return fileDescriptor_ca37af0df9a5bbd2, []int{162} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4508,7 +4620,7 @@ var xxx_messageInfo_VolumeType proto.InternalMessageInfo func (m *WatchCacheSizes) Reset() { *m = WatchCacheSizes{} } func (*WatchCacheSizes) ProtoMessage() {} func (*WatchCacheSizes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{159} + return fileDescriptor_ca37af0df9a5bbd2, []int{163} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4536,7 +4648,7 @@ var xxx_messageInfo_WatchCacheSizes proto.InternalMessageInfo func (m *Worker) Reset() { *m = Worker{} } func (*Worker) ProtoMessage() {} func (*Worker) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{160} + return fileDescriptor_ca37af0df9a5bbd2, []int{164} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4564,7 +4676,7 @@ var xxx_messageInfo_Worker proto.InternalMessageInfo func (m *WorkerKubernetes) Reset() { *m = WorkerKubernetes{} } func (*WorkerKubernetes) ProtoMessage() {} func (*WorkerKubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{161} + return fileDescriptor_ca37af0df9a5bbd2, []int{165} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4592,7 +4704,7 @@ var xxx_messageInfo_WorkerKubernetes proto.InternalMessageInfo func (m *WorkerSystemComponents) Reset() { *m = WorkerSystemComponents{} } func (*WorkerSystemComponents) ProtoMessage() {} func (*WorkerSystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{162} + return fileDescriptor_ca37af0df9a5bbd2, []int{166} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4620,7 +4732,7 @@ var xxx_messageInfo_WorkerSystemComponents proto.InternalMessageInfo func (m *WorkersSettings) Reset() { *m = WorkersSettings{} } func (*WorkersSettings) ProtoMessage() {} func (*WorkersSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{163} + return fileDescriptor_ca37af0df9a5bbd2, []int{167} } func (m *WorkersSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4691,6 +4803,7 @@ func init() { proto.RegisterType((*DNSProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DNSProvider") proto.RegisterType((*DataVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DataVolume") proto.RegisterType((*DeploymentRef)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DeploymentRef") + proto.RegisterType((*ETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ETCDEncryptionKeyRotation") proto.RegisterType((*ExpirableVersion)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExpirableVersion") proto.RegisterType((*ExposureClass)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExposureClass") proto.RegisterType((*ExposureClassList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExposureClassList") @@ -4736,6 +4849,7 @@ func init() { proto.RegisterType((*Maintenance)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Maintenance") proto.RegisterType((*MaintenanceAutoUpdate)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.MaintenanceAutoUpdate") proto.RegisterType((*MaintenanceTimeWindow)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.MaintenanceTimeWindow") + proto.RegisterType((*MemorySwapConfiguration)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.MemorySwapConfiguration") proto.RegisterType((*Monitoring)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Monitoring") proto.RegisterType((*NamedResourceReference)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.NamedResourceReference") proto.RegisterType((*Networking)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Networking") @@ -4776,6 +4890,8 @@ func init() { proto.RegisterType((*SeedSettingDependencyWatchdog)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdog") proto.RegisterType((*SeedSettingDependencyWatchdogEndpoint)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogEndpoint") proto.RegisterType((*SeedSettingDependencyWatchdogProbe)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogProbe") + proto.RegisterType((*SeedSettingDependencyWatchdogProber)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogProber") + proto.RegisterType((*SeedSettingDependencyWatchdogWeeder)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogWeeder") proto.RegisterType((*SeedSettingExcessCapacityReservation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingExcessCapacityReservation") proto.RegisterType((*SeedSettingLoadBalancerServices)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingLoadBalancerServices") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingLoadBalancerServices.AnnotationsEntry") @@ -4783,6 +4899,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingLoadBalancerServicesZones.AnnotationsEntry") proto.RegisterType((*SeedSettingOwnerChecks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingOwnerChecks") proto.RegisterType((*SeedSettingScheduling)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingScheduling") + proto.RegisterType((*SeedSettingTopologyAwareRouting)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingTopologyAwareRouting") proto.RegisterType((*SeedSettingVerticalPodAutoscaler)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingVerticalPodAutoscaler") proto.RegisterType((*SeedSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettings") proto.RegisterType((*SeedSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSpec") @@ -4794,18 +4911,17 @@ func init() { proto.RegisterType((*SeedVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedVolume") proto.RegisterType((*SeedVolumeProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedVolumeProvider") proto.RegisterType((*ServiceAccountConfig)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ServiceAccountConfig") + proto.RegisterType((*ServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ServiceAccountKeyRotation") proto.RegisterType((*Shoot)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Shoot") proto.RegisterType((*ShootAdvertisedAddress)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootAdvertisedAddress") proto.RegisterType((*ShootCredentials)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootCredentials") proto.RegisterType((*ShootCredentialsRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootCredentialsRotation") - proto.RegisterType((*ShootETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootETCDEncryptionKeyRotation") proto.RegisterType((*ShootKubeconfigRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootKubeconfigRotation") proto.RegisterType((*ShootList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootList") proto.RegisterType((*ShootMachineImage)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootMachineImage") proto.RegisterType((*ShootNetworks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootNetworks") proto.RegisterType((*ShootObservabilityRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootObservabilityRotation") proto.RegisterType((*ShootSSHKeypairRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootSSHKeypairRotation") - proto.RegisterType((*ShootServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootServiceAccountKeyRotation") proto.RegisterType((*ShootSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootSpec") proto.RegisterType((*ShootState)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootState") proto.RegisterType((*ShootStateList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootStateList") @@ -4821,6 +4937,7 @@ func init() { proto.RegisterType((*Worker)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker.AnnotationsEntry") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker.LabelsEntry") + proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker.SysctlsEntry") proto.RegisterType((*WorkerKubernetes)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.WorkerKubernetes") proto.RegisterType((*WorkerSystemComponents)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.WorkerSystemComponents") proto.RegisterType((*WorkersSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.WorkersSettings") @@ -4831,727 +4948,740 @@ func init() { } var fileDescriptor_ca37af0df9a5bbd2 = []byte{ - // 11515 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x6c, 0x25, 0xd7, - 0x79, 0x98, 0xe7, 0xf2, 0x75, 0xf9, 0xf1, 0xb1, 0xdc, 0xb3, 0x0f, 0x51, 0x5c, 0x69, 0xef, 0x7a, - 0x24, 0xbb, 0x52, 0xed, 0x70, 0x23, 0x59, 0x8e, 0x2d, 0x39, 0xb2, 0x4c, 0xde, 0xcb, 0xdd, 0xbd, - 0x59, 0x92, 0x4b, 0x9d, 0xbb, 0x2b, 0xc9, 0x4a, 0xaa, 0x66, 0x38, 0x73, 0x78, 0x39, 0xe2, 0xdc, - 0x99, 0xab, 0x99, 0xb9, 0x5c, 0x52, 0xb2, 0xeb, 0xd8, 0xf5, 0x23, 0x56, 0xe2, 0xc0, 0x30, 0x90, - 0x0a, 0xb6, 0xd3, 0xc6, 0x41, 0x90, 0xc6, 0x45, 0x0b, 0x27, 0x7d, 0x38, 0x40, 0x1a, 0xb4, 0x08, - 0x0c, 0x14, 0xb1, 0x83, 0x34, 0x70, 0x9d, 0x06, 0x75, 0x81, 0x86, 0xae, 0xd9, 0xd4, 0x2e, 0xd0, - 0x22, 0x28, 0x10, 0x14, 0x05, 0xb6, 0xf9, 0x51, 0x9c, 0xc7, 0x9c, 0x39, 0xf3, 0xba, 0x24, 0xe7, - 0x92, 0xb4, 0x84, 0xe4, 0x17, 0x79, 0xcf, 0xe3, 0xfb, 0xce, 0x9c, 0xc7, 0x77, 0xbe, 0xef, 0x3b, - 0xdf, 0x03, 0x16, 0xdb, 0x76, 0xb8, 0xd9, 0x5b, 0x9f, 0x37, 0xbd, 0xce, 0xd5, 0xb6, 0xe1, 0x5b, - 0xc4, 0x25, 0x7e, 0xfc, 0x4f, 0x77, 0xab, 0x7d, 0xd5, 0xe8, 0xda, 0xc1, 0x55, 0xd3, 0xf3, 0xc9, - 0xd5, 0xed, 0xc7, 0xd6, 0x49, 0x68, 0x3c, 0x76, 0xb5, 0x4d, 0xeb, 0x8c, 0x90, 0x58, 0xf3, 0x5d, - 0xdf, 0x0b, 0x3d, 0xf4, 0x78, 0x0c, 0x63, 0x3e, 0xea, 0x1a, 0xff, 0xd3, 0xdd, 0x6a, 0xcf, 0x53, - 0x18, 0xf3, 0x14, 0xc6, 0xbc, 0x80, 0x31, 0xf7, 0x63, 0x2a, 0x5e, 0xaf, 0xed, 0x5d, 0x65, 0xa0, - 0xd6, 0x7b, 0x1b, 0xec, 0x17, 0xfb, 0xc1, 0xfe, 0xe3, 0x28, 0xe6, 0x1e, 0xdd, 0x7a, 0x7f, 0x30, - 0x6f, 0x7b, 0x74, 0x30, 0x57, 0x8d, 0x5e, 0xe8, 0x05, 0xa6, 0xe1, 0xd8, 0x6e, 0xfb, 0xea, 0x76, - 0x66, 0x34, 0x73, 0xba, 0xd2, 0x54, 0x0c, 0xbb, 0x6f, 0x1b, 0x7f, 0xdd, 0x30, 0xf3, 0xda, 0x3c, - 0x11, 0xb7, 0xe9, 0x18, 0xe6, 0xa6, 0xed, 0x12, 0x7f, 0x37, 0x9a, 0x90, 0xab, 0x3e, 0x09, 0xbc, - 0x9e, 0x6f, 0x92, 0x23, 0xf5, 0x0a, 0xae, 0x76, 0x48, 0x68, 0xe4, 0xe1, 0xba, 0x5a, 0xd4, 0xcb, - 0xef, 0xb9, 0xa1, 0xdd, 0xc9, 0xa2, 0xf9, 0x89, 0x83, 0x3a, 0x04, 0xe6, 0x26, 0xe9, 0x18, 0x99, - 0x7e, 0xef, 0x29, 0xea, 0xd7, 0x0b, 0x6d, 0xe7, 0xaa, 0xed, 0x86, 0x41, 0xe8, 0xa7, 0x3b, 0xe9, - 0x8f, 0xc3, 0xc8, 0x82, 0x65, 0x79, 0x2e, 0x7a, 0x14, 0xc6, 0x88, 0x6b, 0xac, 0x3b, 0xc4, 0x9a, - 0xd5, 0xae, 0x68, 0x8f, 0x54, 0x17, 0xcf, 0x7c, 0x73, 0xaf, 0xf6, 0xb6, 0xfd, 0xbd, 0xda, 0xd8, - 0x12, 0x2f, 0xc6, 0x51, 0xbd, 0xfe, 0xcb, 0x15, 0x18, 0x65, 0x9d, 0x02, 0xf4, 0x05, 0x0d, 0xce, - 0x6d, 0xf5, 0xd6, 0x89, 0xef, 0x92, 0x90, 0x04, 0x0d, 0x23, 0xd8, 0x5c, 0xf7, 0x0c, 0x9f, 0x83, - 0x98, 0x78, 0xfc, 0xfa, 0xfc, 0xd1, 0x77, 0xcf, 0xfc, 0xcd, 0x2c, 0xb8, 0xc5, 0xfb, 0xf6, 0xf7, - 0x6a, 0xe7, 0x72, 0x2a, 0x70, 0x1e, 0x72, 0xb4, 0x0d, 0x93, 0x6e, 0xdb, 0x76, 0x77, 0x9a, 0x6e, - 0xdb, 0x27, 0x41, 0x30, 0x5b, 0x61, 0x83, 0xf9, 0x50, 0x99, 0xc1, 0xac, 0x2a, 0x70, 0x16, 0x67, - 0xf6, 0xf7, 0x6a, 0x93, 0x6a, 0x09, 0x4e, 0xe0, 0xd1, 0x7f, 0x5b, 0x83, 0x33, 0x0b, 0x56, 0xc7, - 0x0e, 0x02, 0xdb, 0x73, 0xd7, 0x9c, 0x5e, 0xdb, 0x76, 0xd1, 0x15, 0x18, 0x76, 0x8d, 0x0e, 0x61, - 0x13, 0x32, 0xbe, 0x38, 0x29, 0xe6, 0x74, 0x78, 0xd5, 0xe8, 0x10, 0xcc, 0x6a, 0xd0, 0xb3, 0x30, - 0x6a, 0x7a, 0xee, 0x86, 0xdd, 0x16, 0xe3, 0xfc, 0xb1, 0x79, 0xbe, 0x8e, 0xf3, 0xea, 0x3a, 0xb2, - 0xe1, 0x89, 0xf5, 0x9f, 0xc7, 0xc6, 0xdd, 0xa5, 0x9d, 0x90, 0xb8, 0x14, 0xcd, 0x22, 0xec, 0xef, - 0xd5, 0x46, 0xeb, 0x0c, 0x00, 0x16, 0x80, 0xd0, 0x23, 0x50, 0xb5, 0xec, 0x80, 0x2f, 0xe6, 0x10, - 0x5b, 0xcc, 0xc9, 0xfd, 0xbd, 0x5a, 0xb5, 0x21, 0xca, 0xb0, 0xac, 0xd5, 0xaf, 0x41, 0x75, 0xc1, - 0x21, 0x7e, 0x68, 0xbb, 0x6d, 0xf4, 0x14, 0x4c, 0x93, 0x8e, 0x61, 0x3b, 0x98, 0x98, 0xc4, 0xde, - 0x26, 0x7e, 0x30, 0xab, 0x5d, 0x19, 0x7a, 0x64, 0x7c, 0x11, 0xed, 0xef, 0xd5, 0xa6, 0x97, 0x12, - 0x35, 0x38, 0xd5, 0x52, 0xff, 0xb8, 0x06, 0x13, 0x0b, 0x3d, 0xcb, 0x0e, 0xf9, 0x48, 0x90, 0x0f, - 0x13, 0x06, 0xfd, 0xb9, 0xe6, 0x39, 0xb6, 0xb9, 0x2b, 0xb6, 0xc3, 0x33, 0x65, 0x56, 0x60, 0x21, - 0x06, 0xb3, 0x78, 0x66, 0x7f, 0xaf, 0x36, 0xa1, 0x14, 0x60, 0x15, 0x89, 0xbe, 0x09, 0x6a, 0x1d, - 0xfa, 0x30, 0x4c, 0xf2, 0xe9, 0x58, 0x31, 0xba, 0x98, 0x6c, 0x88, 0x31, 0x3c, 0xa4, 0xcc, 0x6e, - 0x84, 0x68, 0xfe, 0xd6, 0xfa, 0xcb, 0xc4, 0x0c, 0x31, 0xd9, 0x20, 0x3e, 0x71, 0x4d, 0xc2, 0x17, - 0xba, 0xae, 0x74, 0xc6, 0x09, 0x50, 0xfa, 0xf7, 0x34, 0x98, 0x59, 0xd8, 0x36, 0x6c, 0xc7, 0x58, - 0xb7, 0x1d, 0x3b, 0xdc, 0x7d, 0xd1, 0x73, 0xc9, 0x21, 0x56, 0xfa, 0x0e, 0xdc, 0xd7, 0x73, 0x0d, - 0xde, 0xcf, 0x21, 0x2b, 0x7c, 0x6d, 0x6f, 0xef, 0x76, 0x09, 0xdd, 0xa2, 0x74, 0xa6, 0x2f, 0xed, - 0xef, 0xd5, 0xee, 0xbb, 0x93, 0xdf, 0x04, 0x17, 0xf5, 0x45, 0x18, 0x2e, 0x2a, 0x55, 0xcf, 0x79, - 0x4e, 0xaf, 0x23, 0xa0, 0x0e, 0x31, 0xa8, 0x73, 0xfb, 0x7b, 0xb5, 0x8b, 0x77, 0x72, 0x5b, 0xe0, - 0x82, 0x9e, 0xfa, 0x37, 0x2b, 0x30, 0xb9, 0x68, 0x98, 0x5b, 0xbd, 0xee, 0x62, 0xcf, 0xdc, 0x22, - 0x21, 0xfa, 0x59, 0xa8, 0x52, 0x02, 0x67, 0x19, 0xa1, 0x21, 0x66, 0xf2, 0xc7, 0x0b, 0xf7, 0x29, - 0x5b, 0x44, 0xda, 0x3a, 0x9e, 0xdb, 0x15, 0x12, 0x1a, 0x8b, 0x48, 0xcc, 0x09, 0xc4, 0x65, 0x58, - 0x42, 0x45, 0x1b, 0x30, 0x1c, 0x74, 0x89, 0x29, 0x4e, 0x41, 0xa3, 0xcc, 0x5e, 0x51, 0x47, 0xdc, - 0xea, 0x12, 0x33, 0x5e, 0x05, 0xfa, 0x0b, 0x33, 0xf8, 0xc8, 0x85, 0xd1, 0x20, 0x34, 0xc2, 0x5e, - 0xc0, 0x8e, 0xc6, 0xc4, 0xe3, 0xd7, 0x06, 0xc6, 0xc4, 0xa0, 0x2d, 0x4e, 0x0b, 0x5c, 0xa3, 0xfc, - 0x37, 0x16, 0x58, 0xf4, 0xff, 0xa4, 0xc1, 0x8c, 0xda, 0x7c, 0xd9, 0x0e, 0x42, 0xf4, 0x33, 0x99, - 0xe9, 0x9c, 0x3f, 0xdc, 0x74, 0xd2, 0xde, 0x6c, 0x32, 0x67, 0x04, 0xba, 0x6a, 0x54, 0xa2, 0x4c, - 0x25, 0x81, 0x11, 0x3b, 0x24, 0x1d, 0xbe, 0xad, 0x4a, 0x52, 0x3e, 0x75, 0xc8, 0x8b, 0x53, 0x02, - 0xd9, 0x48, 0x93, 0x82, 0xc5, 0x1c, 0xba, 0xfe, 0xb3, 0x70, 0x5e, 0x6d, 0xb5, 0xe6, 0x7b, 0xdb, - 0xb6, 0x45, 0x7c, 0x7a, 0x12, 0xc2, 0xdd, 0x6e, 0xe6, 0x24, 0xd0, 0x9d, 0x85, 0x59, 0x0d, 0x7a, - 0x27, 0x8c, 0xfa, 0xa4, 0x6d, 0x7b, 0x2e, 0x5b, 0xed, 0xf1, 0x78, 0xee, 0x30, 0x2b, 0xc5, 0xa2, - 0x56, 0xff, 0x3f, 0x95, 0xe4, 0xdc, 0xd1, 0x65, 0x44, 0xdb, 0x50, 0xed, 0x0a, 0x54, 0x62, 0xee, - 0x6e, 0x0c, 0xfa, 0x81, 0xd1, 0xd0, 0xe3, 0x59, 0x8d, 0x4a, 0xb0, 0xc4, 0x85, 0x6c, 0x98, 0x8e, - 0xfe, 0xaf, 0x0f, 0x40, 0xb0, 0x19, 0x39, 0x5d, 0x4b, 0x00, 0xc2, 0x29, 0xc0, 0xe8, 0x36, 0x8c, - 0x07, 0xc4, 0xf4, 0x09, 0xa5, 0x49, 0x62, 0x9b, 0xe6, 0x12, 0xae, 0x56, 0xd4, 0x48, 0x10, 0xae, - 0xb3, 0x62, 0xf8, 0xe3, 0xb2, 0x02, 0xc7, 0x80, 0xe8, 0xb5, 0x10, 0x10, 0x62, 0x51, 0x8a, 0x34, - 0x3b, 0xcc, 0xd7, 0x86, 0x7e, 0x6a, 0x4b, 0x94, 0x61, 0x59, 0xab, 0x7f, 0x65, 0x18, 0x50, 0x76, - 0x8b, 0xab, 0x33, 0xc0, 0x4b, 0xc4, 0xfc, 0x0f, 0x32, 0x03, 0xe2, 0xb4, 0xa4, 0x00, 0xa3, 0x57, - 0x61, 0xca, 0x31, 0x82, 0xf0, 0x56, 0x97, 0x72, 0x2b, 0xd1, 0x46, 0x99, 0x78, 0x7c, 0xa1, 0xcc, - 0x4a, 0x2f, 0xab, 0x80, 0x16, 0xcf, 0xee, 0xef, 0xd5, 0xa6, 0x12, 0x45, 0x38, 0x89, 0x0a, 0xbd, - 0x0c, 0xe3, 0xb4, 0x60, 0xc9, 0xf7, 0x3d, 0x5f, 0xcc, 0xfe, 0xd3, 0x65, 0xf1, 0x32, 0x20, 0x8b, - 0x53, 0x74, 0x4d, 0xe4, 0x4f, 0x1c, 0x83, 0x47, 0x3f, 0x05, 0xc8, 0x5b, 0x0f, 0x88, 0xbf, 0x4d, - 0xac, 0xeb, 0x9c, 0x35, 0xa3, 0x1f, 0x4b, 0x57, 0x67, 0x68, 0x71, 0x4e, 0xac, 0x26, 0xba, 0x95, - 0x69, 0x81, 0x73, 0x7a, 0xa1, 0x2d, 0x40, 0x92, 0xbd, 0x93, 0x1b, 0x60, 0x76, 0xe4, 0xf0, 0xdb, - 0xe7, 0x22, 0x45, 0x76, 0x3d, 0x03, 0x02, 0xe7, 0x80, 0xd5, 0xff, 0x5d, 0x05, 0x26, 0xf8, 0x16, - 0x59, 0x72, 0x43, 0x7f, 0xf7, 0x14, 0x2e, 0x08, 0x92, 0xb8, 0x20, 0xea, 0xe5, 0xcf, 0x3c, 0x1b, - 0x70, 0xe1, 0xfd, 0xd0, 0x49, 0xdd, 0x0f, 0x4b, 0x83, 0x22, 0xea, 0x7f, 0x3d, 0xfc, 0xa9, 0x06, - 0x67, 0x94, 0xd6, 0xa7, 0x70, 0x3b, 0x58, 0xc9, 0xdb, 0xe1, 0x99, 0x01, 0xbf, 0xaf, 0xe0, 0x72, - 0xf0, 0x12, 0x9f, 0xc5, 0x08, 0xf7, 0xe3, 0x00, 0xeb, 0x8c, 0x9c, 0xac, 0xc6, 0x7c, 0x92, 0x5c, - 0xf2, 0x45, 0x59, 0x83, 0x95, 0x56, 0x09, 0x9a, 0x55, 0xe9, 0x4b, 0xb3, 0xfe, 0xfb, 0x10, 0x9c, - 0xcd, 0x4c, 0x7b, 0x96, 0x8e, 0x68, 0x3f, 0x22, 0x3a, 0x52, 0xf9, 0x51, 0xd0, 0x91, 0xa1, 0x52, - 0x74, 0xe4, 0xd0, 0xf7, 0x04, 0xf2, 0x01, 0x75, 0xec, 0x36, 0xef, 0xd6, 0x0a, 0x0d, 0x3f, 0xbc, - 0x6d, 0x77, 0x88, 0xa0, 0x38, 0x7f, 0xfb, 0x70, 0x5b, 0x96, 0xf6, 0xe0, 0x84, 0x67, 0x25, 0x03, - 0x09, 0xe7, 0x40, 0xd7, 0xbf, 0x33, 0x0c, 0x50, 0x5f, 0xc0, 0x5e, 0xc8, 0x07, 0xfb, 0x0c, 0x8c, - 0x74, 0x37, 0x8d, 0x20, 0xda, 0x4f, 0x8f, 0x46, 0x9b, 0x71, 0x8d, 0x16, 0xde, 0xdb, 0xab, 0xcd, - 0xd6, 0x7d, 0x62, 0x11, 0x37, 0xb4, 0x0d, 0x27, 0x88, 0x3a, 0xb1, 0x3a, 0xcc, 0xfb, 0xd1, 0x6f, - 0xa0, 0xd3, 0x58, 0xf7, 0x3a, 0x5d, 0x87, 0xd0, 0x5a, 0xf6, 0x0d, 0x95, 0x72, 0xdf, 0xb0, 0x9c, - 0x81, 0x84, 0x73, 0xa0, 0x47, 0x38, 0x9b, 0xae, 0x1d, 0xda, 0x86, 0xc4, 0x39, 0x54, 0x1e, 0x67, - 0x12, 0x12, 0xce, 0x81, 0x8e, 0x5e, 0xd7, 0x60, 0x2e, 0x59, 0x7c, 0xcd, 0x76, 0xed, 0x60, 0x93, - 0x58, 0x0c, 0xf9, 0xf0, 0x91, 0x91, 0x5f, 0xde, 0xdf, 0xab, 0xcd, 0x2d, 0x17, 0x42, 0xc4, 0x7d, - 0xb0, 0xa1, 0xcf, 0x69, 0x70, 0x29, 0x35, 0x2f, 0xbe, 0xdd, 0x6e, 0x13, 0x5f, 0x8c, 0xe6, 0xe8, - 0x5b, 0xa8, 0xb6, 0xbf, 0x57, 0xbb, 0xb4, 0x5c, 0x0c, 0x12, 0xf7, 0xc3, 0xa7, 0x7f, 0x43, 0x83, - 0xa1, 0x3a, 0x6e, 0xa2, 0x77, 0x25, 0x84, 0xb8, 0xfb, 0x54, 0x21, 0xee, 0xde, 0x5e, 0x6d, 0xac, - 0x8e, 0x9b, 0x8a, 0x3c, 0xf7, 0x39, 0x0d, 0xce, 0x9a, 0x9e, 0x1b, 0x1a, 0x74, 0x5c, 0x98, 0x73, - 0x3a, 0x11, 0x55, 0x2d, 0x25, 0xbf, 0xd4, 0x53, 0xc0, 0x16, 0xef, 0x17, 0x03, 0x38, 0x9b, 0xae, - 0x09, 0x70, 0x16, 0xb3, 0xfe, 0x5d, 0x0d, 0x26, 0xeb, 0x8e, 0xd7, 0xb3, 0xd6, 0x7c, 0x6f, 0xc3, - 0x76, 0xc8, 0x5b, 0x43, 0x68, 0x53, 0x47, 0x5c, 0x74, 0x29, 0x33, 0x21, 0x4a, 0x6d, 0xf8, 0x16, - 0x11, 0xa2, 0xd4, 0x21, 0x17, 0xdc, 0x93, 0xbf, 0x3c, 0x96, 0xfc, 0x32, 0x76, 0x53, 0x3e, 0x02, - 0x55, 0xd3, 0x58, 0xec, 0xb9, 0x96, 0x23, 0xa5, 0x28, 0x3a, 0xca, 0xfa, 0x02, 0x2f, 0xc3, 0xb2, - 0x16, 0xbd, 0x0a, 0x10, 0xab, 0xc0, 0xc4, 0x32, 0x5c, 0x1b, 0x4c, 0xed, 0xd6, 0x22, 0x61, 0x68, - 0xbb, 0xed, 0x20, 0x5e, 0xfa, 0xb8, 0x0e, 0x2b, 0xd8, 0xd0, 0x47, 0x61, 0x4a, 0x4c, 0x72, 0xb3, - 0x63, 0xb4, 0x85, 0xbe, 0xa1, 0xe4, 0x4c, 0xad, 0x28, 0x80, 0x16, 0x2f, 0x08, 0xc4, 0x53, 0x6a, - 0x69, 0x80, 0x93, 0xd8, 0xd0, 0x2e, 0x4c, 0x76, 0x54, 0x1d, 0xca, 0x70, 0x79, 0x76, 0x46, 0xd1, - 0xa7, 0x2c, 0x9e, 0x17, 0xc8, 0x27, 0x13, 0xda, 0x97, 0x04, 0xaa, 0x1c, 0x51, 0x70, 0xe4, 0xa4, - 0x44, 0x41, 0x02, 0x63, 0x5c, 0x18, 0x0e, 0x66, 0x47, 0xd9, 0x07, 0x3e, 0x55, 0xe6, 0x03, 0xb9, - 0x5c, 0x1d, 0xeb, 0x74, 0xf9, 0xef, 0x00, 0x47, 0xb0, 0xd1, 0x36, 0x4c, 0xd2, 0x5b, 0xbd, 0x45, - 0x1c, 0x62, 0x86, 0x9e, 0x3f, 0x3b, 0x56, 0x5e, 0x67, 0xda, 0x52, 0xe0, 0x70, 0x55, 0x9a, 0x5a, - 0x82, 0x13, 0x78, 0xa4, 0xae, 0xa0, 0x5a, 0xa8, 0x2b, 0xe8, 0xc1, 0xc4, 0xb6, 0xa2, 0xd3, 0x1a, - 0x67, 0x93, 0xf0, 0xc1, 0x32, 0x03, 0x8b, 0x15, 0x5c, 0x8b, 0xe7, 0x04, 0xa2, 0x09, 0x55, 0x19, - 0xa6, 0xe2, 0xd1, 0xf7, 0xaa, 0x70, 0xb6, 0xee, 0xf4, 0x82, 0x90, 0xf8, 0x0b, 0xe2, 0x51, 0x82, - 0xf8, 0xe8, 0x13, 0x1a, 0x5c, 0x64, 0xff, 0x36, 0xbc, 0xbb, 0x6e, 0x83, 0x38, 0xc6, 0xee, 0xc2, - 0x06, 0x6d, 0x61, 0x59, 0x47, 0xa3, 0x40, 0x8d, 0x9e, 0xe0, 0x22, 0x99, 0x72, 0xae, 0x95, 0x0b, - 0x11, 0x17, 0x60, 0x42, 0xbf, 0xa0, 0xc1, 0xfd, 0x39, 0x55, 0x0d, 0xe2, 0x90, 0x30, 0xe2, 0x5c, - 0x8e, 0x3a, 0x8e, 0x07, 0xf7, 0xf7, 0x6a, 0xf7, 0xb7, 0x8a, 0x80, 0xe2, 0x62, 0x7c, 0xe8, 0x97, - 0x34, 0x98, 0xcb, 0xa9, 0xbd, 0x66, 0xd8, 0x4e, 0xcf, 0x8f, 0x98, 0x9a, 0xa3, 0x0e, 0x87, 0xf1, - 0x16, 0xad, 0x42, 0xa8, 0xb8, 0x0f, 0x46, 0xf4, 0x31, 0xb8, 0x20, 0x6b, 0xef, 0xb8, 0x2e, 0x21, - 0x56, 0x82, 0xc5, 0x39, 0xea, 0x50, 0xee, 0xdf, 0xdf, 0xab, 0x5d, 0x68, 0xe5, 0x01, 0xc4, 0xf9, - 0x78, 0x50, 0x1b, 0x1e, 0x8c, 0x2b, 0x42, 0xdb, 0xb1, 0x5f, 0xe5, 0x5c, 0xd8, 0xa6, 0x4f, 0x82, - 0x4d, 0xcf, 0xb1, 0x18, 0xb1, 0xd0, 0x16, 0xdf, 0xbe, 0xbf, 0x57, 0x7b, 0xb0, 0xd5, 0xaf, 0x21, - 0xee, 0x0f, 0x07, 0x59, 0x30, 0x19, 0x98, 0x86, 0xdb, 0x74, 0x43, 0xe2, 0x6f, 0x1b, 0xce, 0xec, - 0x68, 0xa9, 0x0f, 0xe4, 0x47, 0x54, 0x81, 0x83, 0x13, 0x50, 0xd1, 0xfb, 0xa1, 0x4a, 0x76, 0xba, - 0x86, 0x6b, 0x11, 0x4e, 0x16, 0xc6, 0x17, 0x1f, 0xa0, 0x97, 0xd1, 0x92, 0x28, 0xbb, 0xb7, 0x57, - 0x9b, 0x8c, 0xfe, 0x5f, 0xf1, 0x2c, 0x82, 0x65, 0x6b, 0xf4, 0x11, 0x38, 0xdf, 0x31, 0x76, 0x56, - 0x3d, 0x8b, 0x30, 0x22, 0x17, 0x44, 0x8c, 0x6e, 0xb5, 0xd4, 0x38, 0x67, 0xf7, 0xf7, 0x6a, 0xe7, - 0x57, 0x72, 0xe0, 0xe1, 0x5c, 0x2c, 0x74, 0x19, 0x3a, 0xc6, 0xce, 0x75, 0xdf, 0x30, 0xc9, 0x46, - 0xcf, 0xb9, 0x4d, 0xfc, 0x8e, 0xed, 0x72, 0x59, 0x82, 0x98, 0x9e, 0x6b, 0x51, 0x52, 0xa2, 0x3d, - 0x32, 0xc2, 0x97, 0x61, 0xa5, 0x5f, 0x43, 0xdc, 0x1f, 0x0e, 0x7a, 0x02, 0x26, 0xed, 0xb6, 0xeb, - 0xf9, 0xe4, 0xb6, 0x61, 0xbb, 0x61, 0x30, 0x0b, 0x4c, 0xed, 0xce, 0xa6, 0xb5, 0xa9, 0x94, 0xe3, - 0x44, 0x2b, 0x7d, 0x6f, 0x08, 0xc6, 0xeb, 0x9e, 0x6b, 0xd9, 0x4c, 0x8c, 0x79, 0x2c, 0xa1, 0x33, - 0x7d, 0x50, 0xa5, 0x83, 0xf7, 0xf6, 0x6a, 0x53, 0xb2, 0xa1, 0x42, 0x18, 0x9f, 0x94, 0x8a, 0x0a, - 0x2e, 0x18, 0xbf, 0x3d, 0xa9, 0x61, 0xb8, 0xb7, 0x57, 0x3b, 0x23, 0xbb, 0x25, 0x95, 0x0e, 0x68, - 0x9b, 0xcb, 0x1f, 0xb7, 0x7d, 0xc3, 0x0d, 0xec, 0x01, 0xe4, 0x0f, 0x29, 0x59, 0x2e, 0x67, 0xa0, - 0xe1, 0x1c, 0x0c, 0xe8, 0x65, 0x98, 0xa6, 0xa5, 0x77, 0xba, 0x96, 0x11, 0x92, 0x92, 0x62, 0xc7, - 0x45, 0x81, 0x73, 0x7a, 0x39, 0x01, 0x09, 0xa7, 0x20, 0x73, 0x1d, 0xb3, 0x11, 0x78, 0x2e, 0x3b, - 0x6e, 0x09, 0x1d, 0x33, 0x2d, 0xc5, 0xa2, 0x16, 0x3d, 0x0a, 0x63, 0x1d, 0x12, 0x04, 0x46, 0x9b, - 0xb0, 0xf3, 0x33, 0x1e, 0x5f, 0x92, 0x2b, 0xbc, 0x18, 0x47, 0xf5, 0xe8, 0xdd, 0x30, 0x62, 0x7a, - 0x16, 0x09, 0x66, 0xc7, 0xd8, 0x0a, 0x53, 0xe9, 0x6b, 0xa4, 0x4e, 0x0b, 0xee, 0xed, 0xd5, 0xc6, - 0x99, 0x1c, 0x4e, 0x7f, 0x61, 0xde, 0x48, 0xff, 0x55, 0xca, 0xb3, 0xa6, 0x98, 0xf4, 0x43, 0xe8, - 0xc6, 0x4f, 0x4f, 0xcd, 0xac, 0xbf, 0x41, 0x05, 0x06, 0xcf, 0x0d, 0x7d, 0xcf, 0x59, 0x73, 0x0c, - 0x97, 0xa0, 0x4f, 0x6b, 0x30, 0xb3, 0x69, 0xb7, 0x37, 0xd5, 0xc7, 0x2d, 0x71, 0xb1, 0x95, 0xe2, - 0xed, 0x6f, 0xa4, 0x60, 0x2d, 0x9e, 0xdf, 0xdf, 0xab, 0xcd, 0xa4, 0x4b, 0x71, 0x06, 0xa7, 0xfe, - 0xd9, 0x0a, 0x9c, 0x17, 0x23, 0x73, 0xe8, 0x4d, 0xd3, 0x75, 0xbc, 0xdd, 0x0e, 0x71, 0x4f, 0xe3, - 0x1d, 0x2a, 0x5a, 0xa1, 0x4a, 0xe1, 0x0a, 0x75, 0x32, 0x2b, 0x34, 0x54, 0x66, 0x85, 0xe4, 0x46, - 0x3e, 0x60, 0x95, 0x7e, 0xa8, 0xc1, 0x6c, 0xde, 0x5c, 0x9c, 0x82, 0x0c, 0xd4, 0x49, 0xca, 0x40, - 0x37, 0xca, 0x0a, 0xb5, 0xe9, 0xa1, 0x17, 0xc8, 0x42, 0x3f, 0xa8, 0xc0, 0xc5, 0xb8, 0x79, 0xd3, - 0x0d, 0x42, 0xc3, 0x71, 0xb8, 0x9a, 0xe7, 0xe4, 0xd7, 0xbd, 0x9b, 0x10, 0x65, 0x57, 0x07, 0xfb, - 0x54, 0x75, 0xec, 0x85, 0x9a, 0xe6, 0x9d, 0x94, 0xa6, 0x79, 0xed, 0x18, 0x71, 0xf6, 0x57, 0x3a, - 0xff, 0x4f, 0x0d, 0xe6, 0xf2, 0x3b, 0x9e, 0xc2, 0xa6, 0xf2, 0x92, 0x9b, 0xea, 0xa7, 0x8e, 0xef, - 0xab, 0x0b, 0xb6, 0xd5, 0xbf, 0xa8, 0x14, 0x7d, 0x2d, 0x13, 0xb6, 0x37, 0xe0, 0x0c, 0x95, 0x82, - 0x82, 0x50, 0xa8, 0x44, 0x8f, 0x66, 0x2b, 0x10, 0xe9, 0x88, 0xce, 0xe0, 0x24, 0x0c, 0x9c, 0x06, - 0x8a, 0x56, 0x61, 0x8c, 0x8a, 0x3e, 0x14, 0x7e, 0xe5, 0xf0, 0xf0, 0xe5, 0x6d, 0xd4, 0xe2, 0x7d, - 0x71, 0x04, 0x04, 0xfd, 0x0c, 0x4c, 0x59, 0xf2, 0x44, 0x1d, 0xf0, 0x50, 0x98, 0x86, 0xca, 0x94, - 0xd7, 0x0d, 0xb5, 0x37, 0x4e, 0x02, 0xd3, 0xff, 0x4a, 0x83, 0x07, 0xfa, 0xed, 0x2d, 0xf4, 0x0a, - 0x80, 0x19, 0xb1, 0x17, 0xdc, 0x54, 0xa4, 0xa4, 0x7a, 0x5b, 0x32, 0x29, 0xf1, 0x01, 0x95, 0x45, - 0x01, 0x56, 0x90, 0xe4, 0xbc, 0x3f, 0x56, 0x4e, 0xe8, 0xfd, 0x51, 0xff, 0x5f, 0x9a, 0x4a, 0x8a, - 0xd4, 0xb5, 0x7d, 0xab, 0x91, 0x22, 0x75, 0xec, 0x85, 0xfa, 0xb5, 0x3f, 0xa9, 0xc0, 0x95, 0xfc, - 0x2e, 0xca, 0xdd, 0xfb, 0x21, 0x18, 0xed, 0x72, 0x7b, 0x9e, 0x21, 0x76, 0x37, 0x3e, 0x42, 0x29, - 0x0b, 0xb7, 0xb6, 0xb9, 0xb7, 0x57, 0x9b, 0xcb, 0x23, 0xf4, 0xc2, 0x4e, 0x47, 0xf4, 0x43, 0x76, - 0x4a, 0xcb, 0xc0, 0xb9, 0xbf, 0xf7, 0x1c, 0x92, 0xb8, 0x18, 0xeb, 0xc4, 0x39, 0xb4, 0x62, 0xe1, - 0xe3, 0x1a, 0x4c, 0x27, 0x76, 0x74, 0x30, 0x3b, 0xc2, 0xf6, 0x68, 0xa9, 0xa7, 0x9f, 0xc4, 0x51, - 0x89, 0x6f, 0xee, 0x44, 0x71, 0x80, 0x53, 0x08, 0x53, 0x64, 0x56, 0x9d, 0xd5, 0xb7, 0x1c, 0x99, - 0x55, 0x07, 0x5f, 0x40, 0x66, 0x7f, 0xa5, 0x52, 0xf4, 0xb5, 0x8c, 0xcc, 0xde, 0x85, 0xf1, 0xc8, - 0xb2, 0x32, 0x22, 0x17, 0xd7, 0x06, 0x1d, 0x13, 0x07, 0x17, 0x9b, 0x3d, 0x44, 0x25, 0x01, 0x8e, - 0x71, 0xa1, 0x4f, 0x6a, 0x00, 0xf1, 0xc2, 0x88, 0x43, 0x75, 0xfb, 0xf8, 0xa6, 0x43, 0x61, 0x6b, - 0xa6, 0xe9, 0x91, 0x56, 0x36, 0x85, 0x82, 0x57, 0xff, 0xda, 0x10, 0xa0, 0xec, 0xd8, 0x29, 0xbb, - 0xb9, 0x65, 0xbb, 0x56, 0x5a, 0x20, 0xb8, 0x69, 0xbb, 0x16, 0x66, 0x35, 0x87, 0x60, 0x48, 0x9f, - 0x86, 0x33, 0x6d, 0xc7, 0x5b, 0x37, 0x1c, 0x67, 0x57, 0x18, 0x6b, 0x0a, 0xb3, 0xbf, 0x73, 0xf4, - 0x62, 0xba, 0x9e, 0xac, 0xc2, 0xe9, 0xb6, 0xa8, 0x0b, 0x33, 0x3e, 0x15, 0x65, 0x4d, 0xdb, 0x61, - 0xa2, 0x93, 0xd7, 0x0b, 0x4b, 0xea, 0x4a, 0x18, 0x7b, 0x8f, 0x53, 0xb0, 0x70, 0x06, 0x3a, 0x7a, - 0x07, 0x8c, 0x75, 0x7d, 0xbb, 0x63, 0xf8, 0xbb, 0x4c, 0x38, 0xab, 0x2e, 0x4e, 0xd0, 0x1b, 0x6e, - 0x8d, 0x17, 0xe1, 0xa8, 0x0e, 0x7d, 0x04, 0xc6, 0x1d, 0x7b, 0x83, 0x98, 0xbb, 0xa6, 0x43, 0x84, - 0x72, 0xe3, 0xd6, 0xf1, 0x6c, 0x99, 0xe5, 0x08, 0xac, 0x78, 0x52, 0x8d, 0x7e, 0xe2, 0x18, 0xa1, - 0xfe, 0x7a, 0x05, 0x2e, 0xf5, 0xe9, 0x89, 0x30, 0xdd, 0xd0, 0xe2, 0xc3, 0xc4, 0xf2, 0x3d, 0xc1, - 0x37, 0xa1, 0x28, 0xbc, 0xb7, 0x57, 0x7b, 0xa8, 0x0f, 0x80, 0x16, 0xdd, 0x3f, 0xa4, 0xbd, 0x8b, - 0x63, 0x30, 0xa8, 0x09, 0xa3, 0x56, 0xac, 0xc6, 0x1b, 0x5f, 0x7c, 0x8c, 0x92, 0x58, 0xae, 0x68, - 0x3b, 0x2c, 0x34, 0x01, 0x00, 0x2d, 0xc3, 0x18, 0x7f, 0x3d, 0x25, 0x82, 0x5c, 0x3f, 0xce, 0x64, - 0x5a, 0x5e, 0x74, 0x58, 0x60, 0x11, 0x08, 0xfd, 0xff, 0x6a, 0x30, 0x56, 0xf7, 0x7c, 0xd2, 0x58, - 0x6d, 0xa1, 0x5d, 0x98, 0x50, 0xec, 0xb4, 0x05, 0xe9, 0x2a, 0x79, 0x96, 0x19, 0xc4, 0x85, 0x18, - 0x5a, 0x64, 0xe3, 0x29, 0x0b, 0xb0, 0x8a, 0x0b, 0xbd, 0x42, 0xe7, 0xfc, 0xae, 0x6f, 0x87, 0x14, - 0xf1, 0x20, 0x8f, 0x4e, 0x1c, 0x31, 0x8e, 0x60, 0xf1, 0x6d, 0x20, 0x7f, 0xe2, 0x18, 0x8b, 0xbe, - 0x46, 0x8f, 0x6d, 0x7a, 0x98, 0xe8, 0x29, 0x18, 0xee, 0x78, 0x56, 0xb4, 0xee, 0xef, 0x8c, 0x0e, - 0xe5, 0x8a, 0x67, 0xd1, 0xb9, 0xbd, 0x98, 0xed, 0xc1, 0x54, 0x63, 0xac, 0x8f, 0xbe, 0x0a, 0x33, - 0x69, 0xfc, 0xe8, 0x29, 0x98, 0x36, 0xbd, 0x4e, 0xc7, 0x73, 0x5b, 0xbd, 0x8d, 0x0d, 0x7b, 0x87, - 0x24, 0x8c, 0x6f, 0xeb, 0x89, 0x1a, 0x9c, 0x6a, 0xa9, 0x7f, 0x59, 0x83, 0x21, 0xba, 0x2e, 0x3a, - 0x8c, 0x5a, 0x5e, 0xc7, 0xb0, 0x5d, 0x31, 0x2a, 0x66, 0x1a, 0xdc, 0x60, 0x25, 0x58, 0xd4, 0xa0, - 0x2e, 0x8c, 0x47, 0x9c, 0xce, 0x40, 0x06, 0x20, 0x8d, 0xd5, 0x96, 0x34, 0x9a, 0x93, 0xe4, 0x37, - 0x2a, 0x09, 0x70, 0x8c, 0x44, 0x37, 0xe0, 0x6c, 0x63, 0xb5, 0xd5, 0x74, 0x4d, 0xa7, 0x67, 0x91, - 0xa5, 0x1d, 0xf6, 0x87, 0x12, 0x00, 0x9b, 0x97, 0x88, 0xef, 0x64, 0x04, 0x40, 0x34, 0xc2, 0x51, - 0x1d, 0x6d, 0x46, 0x78, 0x0f, 0x61, 0x21, 0xcb, 0x9a, 0x09, 0x20, 0x38, 0xaa, 0xd3, 0xbf, 0x5b, - 0x81, 0x09, 0x65, 0x40, 0xc8, 0x81, 0x31, 0xfe, 0xb9, 0x91, 0x81, 0xda, 0x52, 0xc9, 0x4f, 0x4c, - 0x8e, 0x9a, 0x63, 0xe7, 0x13, 0x1a, 0xe0, 0x08, 0x85, 0x4a, 0xcc, 0x2a, 0x7d, 0x88, 0xd9, 0x3c, - 0x00, 0x37, 0xc5, 0x63, 0x76, 0x15, 0xfc, 0x48, 0xb2, 0xfb, 0xa2, 0x25, 0x4b, 0xb1, 0xd2, 0x02, - 0x3d, 0x20, 0xc8, 0x3e, 0xb7, 0xc0, 0xa8, 0xa6, 0x48, 0xfe, 0x06, 0x8c, 0xbc, 0xea, 0xb9, 0x24, - 0x10, 0x0f, 0x4f, 0xc7, 0xf4, 0x81, 0xe3, 0xf4, 0x52, 0x7f, 0x91, 0xc2, 0xc5, 0x1c, 0xbc, 0xfe, - 0x6b, 0x1a, 0x40, 0xc3, 0x08, 0x0d, 0xfe, 0x4e, 0x72, 0x08, 0x23, 0xe7, 0x07, 0x12, 0xb7, 0x55, - 0x35, 0x63, 0xf8, 0x39, 0x1c, 0xd8, 0xaf, 0x46, 0x9f, 0x2f, 0xb9, 0x60, 0x0e, 0xbd, 0x65, 0xbf, - 0x4a, 0x30, 0xab, 0x47, 0xef, 0x82, 0x71, 0xe2, 0x9a, 0xfe, 0x6e, 0x37, 0x24, 0x16, 0x9b, 0x81, - 0x2a, 0x3f, 0xa1, 0x4b, 0x51, 0x21, 0x8e, 0xeb, 0xf5, 0xc7, 0x20, 0x29, 0xca, 0x1c, 0x3c, 0x4a, - 0xfd, 0x9e, 0x06, 0x33, 0x4b, 0x3b, 0x5d, 0xdb, 0x67, 0x86, 0xcf, 0xc4, 0xa7, 0x72, 0x01, 0x7a, - 0x14, 0xc6, 0xb6, 0xf9, 0xbf, 0xa2, 0xa7, 0x94, 0xbd, 0x44, 0x0b, 0x1c, 0xd5, 0xa3, 0x0d, 0x98, - 0x26, 0xac, 0x3b, 0x63, 0x00, 0x8c, 0xb0, 0x8c, 0xc1, 0x08, 0xb7, 0xab, 0x4f, 0x40, 0xc1, 0x29, - 0xa8, 0xa8, 0x05, 0xd3, 0xa6, 0x63, 0x04, 0x81, 0xbd, 0x61, 0x9b, 0xb1, 0x49, 0xcf, 0xf8, 0xe2, - 0xbb, 0x18, 0x59, 0x48, 0xd4, 0xdc, 0xdb, 0xab, 0x5d, 0x10, 0xe3, 0x4c, 0x56, 0xe0, 0x14, 0x08, - 0xfd, 0x8b, 0x15, 0x98, 0x5a, 0xda, 0xe9, 0x7a, 0x41, 0xcf, 0x27, 0xac, 0xe9, 0x29, 0x88, 0x34, - 0x8f, 0xc2, 0xd8, 0xa6, 0xe1, 0x5a, 0x0e, 0xf1, 0xc5, 0xce, 0x90, 0x73, 0x7b, 0x83, 0x17, 0xe3, - 0xa8, 0x1e, 0xbd, 0x06, 0x10, 0x98, 0x9b, 0xc4, 0xea, 0xb1, 0xdb, 0x85, 0x0b, 0xb5, 0x37, 0xcb, - 0xec, 0xef, 0xc4, 0x37, 0xb6, 0x24, 0x48, 0x71, 0xea, 0xe4, 0x6f, 0xac, 0xa0, 0xd3, 0xff, 0xb3, - 0x06, 0x67, 0x13, 0xfd, 0x4e, 0x81, 0x53, 0xdf, 0x48, 0x72, 0xea, 0x0b, 0x03, 0x7f, 0x6b, 0x01, - 0x83, 0xfe, 0xf3, 0x15, 0xb8, 0xaf, 0x60, 0x4e, 0x32, 0xef, 0xbf, 0xda, 0x29, 0xbd, 0xff, 0xf6, - 0x60, 0x22, 0xf4, 0x1c, 0x61, 0x79, 0x16, 0xcd, 0x40, 0xa9, 0xd7, 0xdd, 0xdb, 0x12, 0x4c, 0xfc, - 0xba, 0x1b, 0x97, 0x05, 0x58, 0xc5, 0xa3, 0x7f, 0x43, 0x83, 0x71, 0xa9, 0x10, 0x78, 0x53, 0x29, - 0xe5, 0x8f, 0xe0, 0xbc, 0xf3, 0x47, 0x15, 0xb8, 0x28, 0x61, 0x47, 0x3c, 0x5c, 0x2b, 0xa4, 0x74, - 0xe3, 0x60, 0xa9, 0xe2, 0x01, 0x41, 0x23, 0x15, 0x3a, 0xad, 0x50, 0x71, 0x7a, 0xa7, 0xf5, 0xfc, - 0xae, 0x17, 0x44, 0xa4, 0x9a, 0xdf, 0x69, 0xbc, 0x08, 0x47, 0x75, 0x68, 0x15, 0x46, 0x02, 0x8a, - 0x4f, 0x88, 0x0b, 0x47, 0x9c, 0x0d, 0x76, 0xdb, 0xb0, 0xf1, 0x62, 0x0e, 0x06, 0xbd, 0xa6, 0xca, - 0x88, 0x23, 0xe5, 0xe5, 0x56, 0xfa, 0x25, 0x56, 0x34, 0x23, 0x39, 0xe6, 0xf1, 0x79, 0x72, 0xa2, - 0xbe, 0x0c, 0x33, 0xe2, 0x09, 0x99, 0x6f, 0x1b, 0xd7, 0x24, 0xe8, 0xfd, 0x89, 0x9d, 0xf1, 0x70, - 0xea, 0x59, 0xee, 0x7c, 0xba, 0x7d, 0xbc, 0x63, 0xf4, 0x00, 0xaa, 0xd7, 0xc5, 0x20, 0xd1, 0x1c, - 0x54, 0xec, 0x68, 0x2d, 0x40, 0xc0, 0xa8, 0x34, 0x1b, 0xb8, 0x62, 0x5b, 0xf2, 0xae, 0xaa, 0x14, - 0xde, 0xa8, 0xca, 0xb5, 0x34, 0xd4, 0xff, 0x5a, 0xd2, 0xff, 0xbc, 0x02, 0xe7, 0x23, 0xac, 0xd1, - 0x37, 0x36, 0xc4, 0xa3, 0xc6, 0x01, 0xf7, 0xf6, 0xc1, 0x52, 0xe6, 0x2d, 0x18, 0x66, 0x04, 0xb0, - 0xd4, 0x63, 0x87, 0x04, 0x48, 0x87, 0x83, 0x19, 0x20, 0xf4, 0x11, 0x18, 0x75, 0x8c, 0x75, 0xe2, - 0x44, 0xa6, 0x3b, 0xa5, 0x64, 0xf2, 0xbc, 0xcf, 0xe5, 0xaa, 0xa2, 0x80, 0x9b, 0x27, 0x4b, 0x1d, - 0x38, 0x2f, 0xc4, 0x02, 0xe7, 0xdc, 0x93, 0x30, 0xa1, 0x34, 0x43, 0x33, 0x30, 0xb4, 0x45, 0xf8, - 0x63, 0xd7, 0x38, 0xa6, 0xff, 0xa2, 0xf3, 0x30, 0xb2, 0x6d, 0x38, 0x3d, 0x31, 0x25, 0x98, 0xff, - 0x78, 0xaa, 0xf2, 0x7e, 0x4d, 0xff, 0x9a, 0x06, 0x13, 0x37, 0xec, 0x75, 0xe2, 0xf3, 0x77, 0x60, - 0xc6, 0xa6, 0x26, 0x7c, 0x27, 0x27, 0xf2, 0xfc, 0x26, 0xd1, 0x0e, 0x8c, 0x8b, 0x9b, 0x46, 0x9a, - 0x09, 0x5e, 0x2f, 0xf7, 0xaa, 0x26, 0x51, 0x0b, 0x0a, 0xae, 0x7a, 0x7e, 0x44, 0x18, 0x70, 0x8c, - 0x4c, 0x7f, 0x0d, 0xce, 0xe5, 0x74, 0x42, 0x35, 0x76, 0x7c, 0xfd, 0x50, 0x6c, 0x8b, 0xe8, 0x3c, - 0xfa, 0x21, 0xe6, 0xe5, 0xe8, 0x7e, 0x18, 0x22, 0xae, 0x25, 0xf6, 0xc4, 0xd8, 0xfe, 0x5e, 0x6d, - 0x68, 0xc9, 0xb5, 0x30, 0x2d, 0xa3, 0x64, 0xca, 0xf1, 0x12, 0x3c, 0x09, 0x23, 0x53, 0xcb, 0xa2, - 0x0c, 0xcb, 0x5a, 0xf6, 0x0e, 0x9a, 0x7e, 0xf2, 0x43, 0xaf, 0x6b, 0x30, 0xb3, 0x91, 0x3a, 0x3d, - 0x83, 0xbc, 0x34, 0xa6, 0x4f, 0xe2, 0xe2, 0xac, 0x98, 0x90, 0xcc, 0x99, 0xc6, 0x19, 0xbc, 0xfa, - 0xbf, 0x1e, 0x86, 0x07, 0x6f, 0x78, 0xbe, 0xfd, 0xaa, 0xe7, 0x86, 0x86, 0xb3, 0xe6, 0x59, 0xb1, - 0xc5, 0x8f, 0x20, 0xca, 0x9f, 0xd2, 0xe0, 0x3e, 0xb3, 0xdb, 0xe3, 0xd6, 0xac, 0x91, 0x21, 0xc6, - 0x1a, 0xf1, 0x6d, 0xaf, 0xac, 0xe1, 0x0f, 0xf3, 0xf5, 0xab, 0xaf, 0xdd, 0xc9, 0x03, 0x89, 0x8b, - 0x70, 0x31, 0xfb, 0x23, 0xcb, 0xbb, 0xeb, 0xb2, 0xc1, 0xb5, 0x42, 0x36, 0x9b, 0xaf, 0xc6, 0x8b, - 0x50, 0xd2, 0xfe, 0xa8, 0x91, 0x0b, 0x11, 0x17, 0x60, 0x42, 0x1f, 0x83, 0x0b, 0x36, 0x1f, 0x1c, - 0x26, 0x86, 0x65, 0xbb, 0x24, 0x08, 0x98, 0x15, 0xce, 0x20, 0x06, 0x36, 0xcd, 0x3c, 0x80, 0x38, - 0x1f, 0x0f, 0x7a, 0x09, 0x20, 0xd8, 0x75, 0x4d, 0x31, 0xff, 0x23, 0xa5, 0xb0, 0x72, 0x26, 0x50, - 0x42, 0xc1, 0x0a, 0x44, 0x2a, 0x7d, 0x84, 0x72, 0x53, 0x8e, 0x32, 0x63, 0x1d, 0x26, 0x7d, 0xc4, - 0x7b, 0x28, 0xae, 0xd7, 0xff, 0x99, 0x06, 0x63, 0xc2, 0x03, 0x18, 0xbd, 0x33, 0x25, 0x81, 0x4b, - 0xda, 0x93, 0x92, 0xc2, 0x77, 0xd9, 0xdb, 0x89, 0xd0, 0xbe, 0x08, 0x56, 0xa2, 0x94, 0x08, 0x27, - 0x10, 0xc7, 0xaa, 0x9c, 0xc4, 0x1b, 0x4a, 0xa4, 0xde, 0x51, 0x90, 0xe9, 0x5f, 0xd1, 0xe0, 0x6c, - 0xa6, 0xd7, 0x21, 0xf8, 0x85, 0x53, 0x34, 0x4b, 0xf8, 0xfa, 0x34, 0x30, 0x67, 0xef, 0x85, 0xb5, - 0x66, 0x8b, 0xf8, 0xdb, 0xf2, 0x10, 0x52, 0x9a, 0x11, 0x9b, 0x9f, 0x8a, 0x51, 0x0c, 0x40, 0x33, - 0x6e, 0xa6, 0x60, 0xc5, 0x34, 0x23, 0x5d, 0x83, 0x33, 0x78, 0xd1, 0x67, 0x35, 0x98, 0x31, 0x92, - 0xce, 0xde, 0x11, 0x51, 0x2f, 0xe5, 0x9a, 0x94, 0x72, 0x1c, 0x8f, 0xc7, 0x92, 0xaa, 0x08, 0x70, - 0x06, 0x2d, 0x7a, 0x02, 0x26, 0x8d, 0xae, 0xbd, 0xd0, 0xb3, 0x6c, 0xca, 0xe6, 0x44, 0x7e, 0xbf, - 0x8c, 0xf5, 0x5e, 0x58, 0x6b, 0xca, 0x72, 0x9c, 0x68, 0x25, 0x7d, 0xb4, 0xc5, 0x44, 0x0e, 0x0f, - 0xe8, 0xa3, 0x2d, 0xe6, 0x30, 0xf6, 0xd1, 0x16, 0x53, 0xa7, 0x22, 0x41, 0x3f, 0x0d, 0xf7, 0xf3, - 0xdb, 0x70, 0xd1, 0x08, 0x6c, 0x73, 0xa1, 0x17, 0x6e, 0x12, 0x37, 0x8c, 0x44, 0x5b, 0xae, 0x0a, - 0x66, 0x96, 0x88, 0x4b, 0x45, 0x8d, 0x70, 0x71, 0x7f, 0xe4, 0x02, 0x78, 0xb6, 0x65, 0x8a, 0xef, - 0xe1, 0xfa, 0xe2, 0x52, 0xa2, 0xc4, 0xad, 0x66, 0xa3, 0x2e, 0x3e, 0x87, 0x91, 0x89, 0xf8, 0x37, - 0x56, 0x30, 0xa0, 0x37, 0x34, 0x98, 0x12, 0x9b, 0x5c, 0xe0, 0x1c, 0x63, 0xeb, 0xff, 0x62, 0xd9, - 0xcd, 0x98, 0xda, 0xf0, 0xf3, 0x58, 0x05, 0xce, 0xb9, 0x19, 0x69, 0x1a, 0x9d, 0xa8, 0xc3, 0xc9, - 0x71, 0xa0, 0x7f, 0xa0, 0xc1, 0xf9, 0x80, 0xf8, 0xdb, 0xb6, 0x49, 0x16, 0x4c, 0xd3, 0xeb, 0xb9, - 0xd1, 0x22, 0x57, 0xcb, 0xfb, 0xcb, 0xb6, 0x72, 0xe0, 0x71, 0x9b, 0xbc, 0xbc, 0x1a, 0x9c, 0x8b, - 0x9f, 0xde, 0x5f, 0x67, 0xee, 0x1a, 0xa1, 0xb9, 0x59, 0x37, 0xcc, 0x4d, 0xa6, 0xf0, 0xe1, 0x66, - 0x78, 0x25, 0x0f, 0xcd, 0xf3, 0x49, 0x50, 0xfc, 0xbd, 0x23, 0x55, 0x88, 0xd3, 0x08, 0x51, 0x00, - 0x55, 0x9f, 0xbc, 0xd2, 0x23, 0x01, 0xb3, 0xd5, 0xa3, 0xc8, 0x9b, 0x03, 0xaf, 0x18, 0x16, 0x00, - 0x39, 0x17, 0x14, 0xfd, 0xc2, 0x12, 0x11, 0x6a, 0xc3, 0x83, 0x7c, 0xe7, 0x2e, 0xb8, 0x9e, 0xbb, - 0xdb, 0xf1, 0x7a, 0x41, 0x6a, 0xf7, 0x4f, 0xb0, 0xdd, 0xcf, 0xac, 0x11, 0x97, 0xfa, 0x35, 0xc4, - 0xfd, 0xe1, 0xa0, 0x17, 0xa0, 0x4a, 0xb6, 0x89, 0x1b, 0xde, 0xbe, 0xbd, 0x3c, 0x3b, 0x59, 0xea, - 0x6a, 0x64, 0x9f, 0xb0, 0x24, 0x60, 0x60, 0x09, 0x0d, 0x79, 0x30, 0xe6, 0x78, 0xed, 0xb6, 0xed, - 0xb6, 0x67, 0xa7, 0xca, 0xef, 0xa3, 0xc4, 0xb4, 0x2d, 0x73, 0x78, 0x9c, 0x61, 0x16, 0x3f, 0x70, - 0x84, 0x05, 0x75, 0xe1, 0x8a, 0x45, 0x36, 0x8c, 0x9e, 0x13, 0xae, 0x7a, 0x21, 0xe5, 0x01, 0x76, - 0x63, 0x81, 0x3e, 0x32, 0xe2, 0x9c, 0x66, 0x2e, 0x6e, 0x0f, 0xef, 0xef, 0xd5, 0xae, 0x34, 0x0e, - 0x68, 0x8b, 0x0f, 0x84, 0x86, 0x76, 0xe1, 0x21, 0xd1, 0xe6, 0x8e, 0xeb, 0x13, 0xc3, 0xdc, 0xa4, - 0x33, 0x9d, 0x45, 0x7a, 0x86, 0x21, 0xfd, 0x5b, 0xfb, 0x7b, 0xb5, 0x87, 0x1a, 0x07, 0x37, 0xc7, - 0x87, 0x81, 0x39, 0xf7, 0x21, 0x40, 0xd9, 0xf3, 0x7e, 0x90, 0x58, 0x52, 0x55, 0xc5, 0x92, 0x5f, - 0xd2, 0xe0, 0x7c, 0xde, 0xec, 0x52, 0x7e, 0x66, 0x9b, 0xf8, 0xeb, 0x5e, 0x10, 0x99, 0xf3, 0x8d, - 0x70, 0x7e, 0xe6, 0xb9, 0xa8, 0x10, 0xc7, 0xf5, 0xa8, 0x09, 0xe7, 0x36, 0xc3, 0xb0, 0xbb, 0x60, - 0x9a, 0x24, 0x08, 0x64, 0x0b, 0x86, 0x6d, 0x84, 0x07, 0x62, 0xb9, 0x71, 0xfb, 0xf6, 0x5a, 0xaa, - 0x1a, 0xe7, 0xf5, 0xd1, 0x7f, 0x47, 0x83, 0x0b, 0xb9, 0xa7, 0x04, 0x61, 0xb8, 0xc8, 0x6c, 0x76, - 0xdd, 0x95, 0x5e, 0x68, 0x84, 0xb6, 0xdb, 0x6e, 0xba, 0x1b, 0x8e, 0xdd, 0xde, 0x0c, 0xc5, 0xf0, - 0x18, 0x5b, 0xba, 0x92, 0xdb, 0x02, 0x17, 0xf4, 0xa4, 0x03, 0xef, 0x18, 0x3b, 0x19, 0x80, 0xca, - 0xc0, 0x57, 0xb2, 0xd5, 0x38, 0xaf, 0x8f, 0xfe, 0xa5, 0x11, 0xb8, 0x44, 0x07, 0x1e, 0x73, 0x48, - 0x2b, 0x86, 0x6b, 0xb4, 0xdf, 0x9c, 0x9c, 0xc8, 0xd7, 0x34, 0xb8, 0x6f, 0x33, 0x5f, 0x7a, 0x11, - 0x3c, 0xda, 0xb3, 0xa5, 0xa4, 0xcc, 0x7e, 0x02, 0x11, 0xa7, 0x53, 0x7d, 0x9b, 0xe0, 0xa2, 0x41, - 0xa1, 0x0f, 0xc1, 0x8c, 0xeb, 0x59, 0xa4, 0xde, 0x6c, 0xe0, 0x15, 0x23, 0xd8, 0x6a, 0x45, 0x0f, - 0x02, 0x23, 0xfc, 0xfd, 0x78, 0x35, 0x55, 0x87, 0x33, 0xad, 0xd1, 0x36, 0xa0, 0xae, 0x67, 0x2d, - 0x6d, 0xdb, 0x66, 0x64, 0x5a, 0x5c, 0xfe, 0xcd, 0x9a, 0xf9, 0x50, 0xae, 0x65, 0xa0, 0xe1, 0x1c, - 0x0c, 0x4c, 0xfc, 0xa2, 0x83, 0x59, 0xf1, 0x5c, 0x3b, 0xf4, 0x7c, 0x66, 0x13, 0x3e, 0x90, 0x14, - 0xc2, 0xf6, 0xf9, 0x6a, 0x2e, 0x44, 0x5c, 0x80, 0x49, 0xff, 0xdf, 0x1a, 0x9c, 0xa1, 0xdb, 0x62, - 0xcd, 0xf7, 0x76, 0x76, 0xdf, 0x8c, 0x1b, 0xf2, 0x51, 0xf1, 0x36, 0xca, 0xd5, 0x06, 0x17, 0x94, - 0x77, 0xd1, 0x71, 0x36, 0xe6, 0xf8, 0x29, 0x54, 0xd5, 0x9c, 0x0c, 0x15, 0x6b, 0x4e, 0xf4, 0x37, - 0x2a, 0x5c, 0x22, 0x88, 0x34, 0x17, 0x6f, 0xca, 0x73, 0xf8, 0x3e, 0x98, 0xa2, 0x65, 0x2b, 0xc6, - 0xce, 0x5a, 0xe3, 0x39, 0xcf, 0x89, 0xcc, 0xf2, 0x99, 0xa9, 0xdd, 0x4d, 0xb5, 0x02, 0x27, 0xdb, - 0xa1, 0xa7, 0x60, 0xac, 0xcb, 0x9d, 0xff, 0x84, 0x26, 0xe5, 0x0a, 0x7f, 0x40, 0x64, 0x45, 0xf7, - 0xf6, 0x6a, 0x67, 0x63, 0x3d, 0xbd, 0x28, 0xc4, 0x51, 0x07, 0xfd, 0xf3, 0xe7, 0x81, 0x01, 0x77, - 0x48, 0xf8, 0x66, 0x9c, 0x93, 0xc7, 0x60, 0xc2, 0xec, 0xf6, 0xea, 0xd7, 0x5a, 0xcf, 0xf6, 0xbc, - 0xd0, 0x10, 0xef, 0xa3, 0x4c, 0x44, 0xa8, 0xaf, 0xdd, 0x89, 0x8a, 0xb1, 0xda, 0x86, 0x52, 0x07, - 0xb3, 0xdb, 0x13, 0xf4, 0x76, 0x4d, 0xb5, 0x37, 0x63, 0xd4, 0xa1, 0xbe, 0x76, 0x27, 0x51, 0x87, - 0x33, 0xad, 0xd1, 0xc7, 0x60, 0x92, 0x88, 0x83, 0x7b, 0xc3, 0xf0, 0x2d, 0x41, 0x17, 0x4a, 0xf3, - 0x78, 0x72, 0x6a, 0x23, 0x6a, 0xc0, 0x25, 0xab, 0x25, 0x05, 0x05, 0x4e, 0x20, 0x64, 0x52, 0x8e, - 0xf8, 0x4d, 0x57, 0xd9, 0xb3, 0xd2, 0x84, 0x62, 0x44, 0x48, 0x39, 0x45, 0x8d, 0x70, 0x71, 0x7f, - 0xf4, 0x4f, 0x35, 0xb8, 0x28, 0x6b, 0x6d, 0xd7, 0xee, 0xf4, 0x3a, 0x98, 0x98, 0x8e, 0x61, 0x77, - 0x84, 0xc8, 0xf3, 0xfc, 0xb1, 0x7d, 0x68, 0x12, 0x3c, 0x27, 0x56, 0xf9, 0x75, 0xb8, 0x60, 0x48, - 0xe8, 0x2b, 0x1a, 0x5c, 0x89, 0xaa, 0xd6, 0x7c, 0x12, 0x04, 0x3d, 0x9f, 0xc4, 0x4e, 0x21, 0x62, - 0x4a, 0xc6, 0x4a, 0xd1, 0x4e, 0xc6, 0xf3, 0x2d, 0x1d, 0x00, 0x1b, 0x1f, 0x88, 0x5d, 0xdd, 0x2e, - 0x2d, 0x6f, 0x23, 0x14, 0x32, 0xd2, 0x49, 0x6d, 0x17, 0x8a, 0x02, 0x27, 0x10, 0xa2, 0xdf, 0xd2, - 0xe0, 0x3e, 0xb5, 0x40, 0xdd, 0x2d, 0x5c, 0x38, 0x7a, 0xe1, 0xd8, 0x06, 0x93, 0x82, 0xcf, 0xd5, - 0x90, 0x05, 0x95, 0xb8, 0x68, 0x54, 0x94, 0x6c, 0x77, 0xd8, 0xc6, 0xe4, 0x02, 0xd4, 0x08, 0x27, - 0xdb, 0x7c, 0xaf, 0x06, 0x38, 0xaa, 0x43, 0x4f, 0xc0, 0x64, 0xd7, 0xb3, 0xd6, 0x6c, 0x2b, 0x58, - 0xb6, 0x3b, 0x76, 0xc8, 0x44, 0x9c, 0x21, 0x3e, 0x1d, 0x6b, 0x9e, 0xb5, 0xd6, 0x6c, 0xf0, 0x72, - 0x9c, 0x68, 0xc5, 0xdc, 0x1b, 0xed, 0x8e, 0xd1, 0x26, 0x6b, 0x3d, 0xc7, 0x59, 0xf3, 0x3d, 0xa6, - 0xab, 0x6a, 0x10, 0xc3, 0x72, 0x6c, 0x97, 0x94, 0x14, 0x69, 0xd8, 0x71, 0x6b, 0x16, 0x01, 0xc5, - 0xc5, 0xf8, 0xd0, 0x3c, 0xc0, 0x86, 0x61, 0x3b, 0xad, 0xbb, 0x46, 0xf7, 0x96, 0xcb, 0xe4, 0x9e, - 0x2a, 0x57, 0x0a, 0x5c, 0x93, 0xa5, 0x58, 0x69, 0x41, 0x77, 0x13, 0xa5, 0x82, 0x98, 0xf0, 0xb0, - 0x1a, 0x4c, 0x3e, 0x39, 0x8e, 0xdd, 0x14, 0x01, 0xe4, 0xd3, 0x77, 0x53, 0x41, 0x81, 0x13, 0x08, - 0xd1, 0xa7, 0x34, 0x98, 0x0e, 0x76, 0x83, 0x90, 0x74, 0xe4, 0x18, 0xce, 0x1c, 0xf7, 0x18, 0x98, - 0x16, 0xaf, 0x95, 0x40, 0x82, 0x53, 0x48, 0x91, 0x01, 0x97, 0xd8, 0xac, 0x5e, 0xaf, 0xdf, 0xb0, - 0xdb, 0x9b, 0xd2, 0x69, 0x71, 0x8d, 0xf8, 0x26, 0x71, 0xc3, 0xd9, 0x19, 0xb6, 0x6f, 0x58, 0xd4, - 0x86, 0x66, 0x71, 0x33, 0xdc, 0x0f, 0x06, 0x7a, 0x09, 0xe6, 0x44, 0xf5, 0xb2, 0x77, 0x37, 0x83, - 0xe1, 0x2c, 0xc3, 0xc0, 0x3c, 0x49, 0x9b, 0x85, 0xad, 0x70, 0x1f, 0x08, 0x54, 0xa2, 0x08, 0x88, - 0xcf, 0x94, 0xf0, 0x44, 0x6e, 0x9e, 0x60, 0x16, 0xb1, 0x4d, 0xc0, 0x24, 0x8a, 0x56, 0xb6, 0x1a, - 0xe7, 0xf5, 0x41, 0x4f, 0x4b, 0x27, 0x83, 0x5d, 0x5a, 0xf0, 0xec, 0x5a, 0x6b, 0xf6, 0x1c, 0x1b, - 0xdf, 0x39, 0xc5, 0x77, 0x20, 0xaa, 0xc2, 0xe9, 0xb6, 0x94, 0xb7, 0x88, 0x8a, 0x16, 0x7b, 0x7e, - 0x10, 0xce, 0x9e, 0x67, 0x9d, 0x19, 0x6f, 0x81, 0xd5, 0x0a, 0x9c, 0x6c, 0x87, 0x9e, 0x82, 0xe9, - 0x80, 0x98, 0xa6, 0xd7, 0xe9, 0x0a, 0x41, 0x75, 0xf6, 0x02, 0x1b, 0x3d, 0x5f, 0xc1, 0x44, 0x0d, - 0x4e, 0xb5, 0x44, 0xbb, 0x70, 0x4e, 0x06, 0x99, 0x58, 0xf6, 0xda, 0x2b, 0xc6, 0x0e, 0x63, 0xd5, - 0x2f, 0x1e, 0x7c, 0x02, 0xe7, 0xa3, 0x57, 0xd5, 0xf9, 0x67, 0x7b, 0x86, 0x1b, 0xda, 0xe1, 0x2e, - 0x9f, 0xae, 0x7a, 0x16, 0x1c, 0xce, 0xc3, 0x81, 0x96, 0xe1, 0x7c, 0xaa, 0xf8, 0x9a, 0xed, 0x90, - 0x60, 0xf6, 0x3e, 0xf6, 0xd9, 0x4c, 0xeb, 0x54, 0xcf, 0xa9, 0xc7, 0xb9, 0xbd, 0xd0, 0x2d, 0xb8, - 0xd0, 0xf5, 0xbd, 0x90, 0x98, 0xe1, 0x4d, 0xca, 0x9e, 0x38, 0xe2, 0x03, 0x83, 0xd9, 0x59, 0x36, - 0x17, 0xec, 0x01, 0x62, 0x2d, 0xaf, 0x01, 0xce, 0xef, 0x87, 0xbe, 0xa4, 0xc1, 0xe5, 0x20, 0xf4, - 0x89, 0xd1, 0xb1, 0xdd, 0x76, 0xdd, 0x73, 0x5d, 0xc2, 0xc8, 0x64, 0xd3, 0x8a, 0x0d, 0x68, 0xef, - 0x2f, 0x45, 0xa7, 0xf4, 0xfd, 0xbd, 0xda, 0xe5, 0x56, 0x5f, 0xc8, 0xf8, 0x00, 0xcc, 0xfa, 0x5e, - 0x85, 0x4b, 0xdd, 0x19, 0xda, 0x4f, 0x37, 0x61, 0x87, 0x74, 0x3c, 0x7f, 0x77, 0x21, 0x8a, 0xf9, - 0x28, 0x14, 0xfe, 0x6c, 0x13, 0xae, 0x24, 0xab, 0x70, 0xba, 0x2d, 0xe5, 0xcc, 0xd8, 0x61, 0xb9, - 0xd6, 0x8a, 0xfb, 0x57, 0x62, 0xce, 0xac, 0x99, 0xaa, 0xc3, 0x99, 0xd6, 0xa8, 0x0e, 0x67, 0x45, - 0x59, 0x93, 0x0a, 0x37, 0xc1, 0x35, 0x9f, 0x44, 0x3c, 0x2f, 0x15, 0x13, 0xce, 0x36, 0xd3, 0x95, - 0x38, 0xdb, 0x9e, 0x7e, 0x05, 0xfd, 0xa1, 0x8e, 0x62, 0x38, 0xfe, 0x8a, 0xd5, 0x64, 0x15, 0x4e, - 0xb7, 0x8d, 0xa4, 0xcf, 0xc4, 0x10, 0x46, 0xe2, 0xaf, 0x58, 0x4d, 0xd5, 0xe1, 0x4c, 0x6b, 0xfd, - 0xbf, 0x0c, 0xc3, 0x43, 0x87, 0xe0, 0x97, 0x50, 0x27, 0x7f, 0xba, 0x8f, 0x7e, 0x76, 0x0e, 0xb7, - 0x3c, 0xdd, 0x82, 0xe5, 0x39, 0x3a, 0xbe, 0xc3, 0x2e, 0x67, 0x50, 0xb4, 0x9c, 0x47, 0x47, 0x79, - 0xf8, 0xe5, 0xef, 0xe4, 0x2f, 0x7f, 0xc9, 0x59, 0x3d, 0x70, 0xbb, 0x74, 0x0b, 0xb6, 0x4b, 0xc9, - 0x59, 0x3d, 0xc4, 0xf6, 0xfa, 0xb3, 0x61, 0x78, 0xf8, 0x30, 0xbc, 0x5b, 0xc9, 0xfd, 0x95, 0x43, - 0x75, 0x4e, 0x74, 0x7f, 0x15, 0xb9, 0x09, 0x9c, 0xe0, 0xfe, 0xca, 0x41, 0x79, 0xd2, 0xfb, 0xab, - 0x68, 0x56, 0x4f, 0x6a, 0x7f, 0x15, 0xcd, 0xea, 0x21, 0xf6, 0xd7, 0x5f, 0xa6, 0xef, 0x07, 0xc9, - 0xb2, 0x35, 0x61, 0xc8, 0xec, 0xf6, 0x4a, 0x12, 0x29, 0x66, 0x1e, 0x52, 0x5f, 0xbb, 0x83, 0x29, - 0x0c, 0x84, 0x61, 0x94, 0xef, 0x9f, 0x92, 0x24, 0x88, 0xd9, 0xae, 0xf3, 0x2d, 0x89, 0x05, 0x24, - 0x3a, 0x55, 0xa4, 0xbb, 0x49, 0x3a, 0xc4, 0x37, 0x9c, 0x56, 0xe8, 0xf9, 0x46, 0xbb, 0x2c, 0xb5, - 0x61, 0x53, 0xb5, 0x94, 0x82, 0x85, 0x33, 0xd0, 0xe9, 0x84, 0x74, 0x6d, 0xab, 0x24, 0x7d, 0x61, - 0x13, 0xb2, 0xd6, 0x6c, 0x60, 0x0a, 0x43, 0xff, 0xc7, 0xe3, 0xa0, 0xc4, 0x51, 0x42, 0x3f, 0x0d, - 0xf7, 0x1b, 0x8e, 0xe3, 0xdd, 0x5d, 0xf3, 0xed, 0x6d, 0xdb, 0x21, 0x6d, 0x62, 0x49, 0x7e, 0x26, - 0x10, 0x46, 0x44, 0x4c, 0x66, 0x59, 0x28, 0x6a, 0x84, 0x8b, 0xfb, 0xa3, 0xd7, 0x35, 0x38, 0x6b, - 0xa6, 0x63, 0xd7, 0x0c, 0x62, 0x66, 0x90, 0x09, 0x84, 0xc3, 0xcf, 0x53, 0xa6, 0x18, 0x67, 0xd1, - 0xa2, 0x9f, 0xd3, 0xb8, 0x5e, 0x4c, 0x3e, 0x02, 0x88, 0x35, 0xbb, 0x7e, 0x4c, 0xaf, 0xa4, 0xb1, - 0x82, 0x2d, 0x7e, 0x66, 0x48, 0x22, 0x44, 0x5f, 0xd1, 0xe0, 0xc2, 0x56, 0x9e, 0x3a, 0x5f, 0xac, - 0xec, 0xad, 0xb2, 0x43, 0x29, 0x78, 0x1f, 0xe0, 0x1c, 0x65, 0x6e, 0x03, 0x9c, 0x3f, 0x10, 0x39, - 0x4b, 0x52, 0xc3, 0x29, 0x88, 0x40, 0xe9, 0x59, 0x4a, 0xa9, 0x4a, 0xe3, 0x59, 0x92, 0x15, 0x38, - 0x89, 0x10, 0x75, 0x61, 0x7c, 0x2b, 0x52, 0x2b, 0x0b, 0x55, 0x52, 0xbd, 0x2c, 0x76, 0x45, 0x37, - 0xcd, 0x9f, 0x9a, 0x64, 0x21, 0x8e, 0x91, 0xa0, 0x4d, 0x18, 0xdb, 0xe2, 0x84, 0x48, 0xa8, 0x80, - 0x16, 0x06, 0x16, 0x51, 0xb9, 0x26, 0x42, 0x14, 0xe1, 0x08, 0xbc, 0x6a, 0x43, 0x59, 0x3d, 0xc0, - 0xb4, 0xff, 0x4b, 0x1a, 0x5c, 0xd8, 0x26, 0x7e, 0x68, 0x9b, 0xe9, 0xc7, 0x94, 0xf1, 0xf2, 0x62, - 0xf4, 0x73, 0x79, 0x00, 0xf9, 0x36, 0xc9, 0xad, 0xc2, 0xf9, 0x43, 0xa0, 0x42, 0x35, 0xd7, 0x89, - 0xb7, 0x42, 0x23, 0xb4, 0xcd, 0xdb, 0xde, 0x16, 0x71, 0xe9, 0xc7, 0x8a, 0x0c, 0x02, 0xc0, 0x08, - 0x07, 0x13, 0xaa, 0x97, 0x8a, 0x9b, 0xe1, 0x7e, 0x30, 0xf4, 0x1f, 0x68, 0x90, 0xd1, 0xec, 0xa2, - 0xcf, 0x6b, 0x30, 0xb9, 0x41, 0x8c, 0xb0, 0xe7, 0x93, 0xeb, 0x46, 0x28, 0x1d, 0x38, 0x9f, 0x3b, - 0x0e, 0x85, 0xf2, 0xfc, 0x35, 0x05, 0x30, 0xb7, 0x72, 0x90, 0x31, 0xd8, 0xd4, 0x2a, 0x9c, 0x18, - 0xc1, 0xdc, 0x33, 0x70, 0x36, 0xd3, 0xf1, 0x48, 0xcf, 0xa5, 0xff, 0x46, 0x83, 0xbc, 0x9c, 0x12, - 0xe8, 0x25, 0x18, 0x31, 0x2c, 0x4b, 0x86, 0x9c, 0x7e, 0xb2, 0x9c, 0x35, 0x8f, 0xa5, 0xfa, 0xc9, - 0xb2, 0x9f, 0x98, 0x83, 0x45, 0xd7, 0x00, 0x19, 0x89, 0x27, 0xfb, 0x95, 0xd8, 0x91, 0x8c, 0x3d, - 0x46, 0x2d, 0x64, 0x6a, 0x71, 0x4e, 0x0f, 0xfd, 0xe7, 0x35, 0x40, 0xd9, 0xa8, 0x7d, 0xc8, 0x87, - 0xaa, 0xd8, 0xca, 0xd1, 0x2a, 0x35, 0x4a, 0x3a, 0x14, 0x24, 0xbc, 0x63, 0x62, 0x0f, 0x06, 0x51, - 0x10, 0x60, 0x89, 0x47, 0xff, 0x2b, 0x0d, 0xe2, 0xb0, 0xb4, 0xe8, 0xbd, 0x30, 0x61, 0x91, 0xc0, - 0xf4, 0xed, 0x6e, 0x18, 0xfb, 0xd2, 0x48, 0x9b, 0xfc, 0x46, 0x5c, 0x85, 0xd5, 0x76, 0x48, 0x87, - 0xd1, 0xd0, 0x08, 0xb6, 0x9a, 0x0d, 0x21, 0x54, 0x32, 0x16, 0xe0, 0x36, 0x2b, 0xc1, 0xa2, 0x26, - 0x8e, 0xc0, 0x33, 0x74, 0x88, 0x08, 0x3c, 0x68, 0xe3, 0x18, 0xc2, 0x0d, 0xa1, 0x83, 0x43, 0x0d, - 0xe9, 0xbf, 0x51, 0x81, 0x33, 0xb4, 0xc9, 0x8a, 0x61, 0xbb, 0x21, 0x71, 0x99, 0xe5, 0x78, 0xc9, - 0x49, 0x68, 0xc3, 0x54, 0x98, 0x88, 0x84, 0x7a, 0x74, 0xbf, 0x22, 0x69, 0x22, 0x94, 0x8c, 0x7f, - 0x9a, 0x84, 0x8b, 0x9e, 0x8c, 0x4c, 0xf7, 0xb9, 0xf8, 0xfd, 0x50, 0xb4, 0x55, 0x99, 0x3d, 0xfe, - 0x3d, 0x11, 0xd2, 0x49, 0xc6, 0x32, 0x4e, 0x58, 0xe9, 0xbf, 0x0f, 0xa6, 0x84, 0x09, 0x2d, 0x0f, - 0xa5, 0x24, 0xc4, 0x6f, 0x76, 0xc3, 0x5c, 0x53, 0x2b, 0x70, 0xb2, 0x9d, 0xfe, 0x9d, 0x0a, 0x24, - 0x23, 0x26, 0x97, 0x9d, 0xa5, 0x6c, 0x1c, 0xa9, 0xca, 0x89, 0xc5, 0x91, 0x7a, 0x37, 0x4b, 0x37, - 0xc0, 0x33, 0xc9, 0xf0, 0x57, 0x6a, 0x35, 0x49, 0x00, 0xcf, 0x03, 0x23, 0x5b, 0xc4, 0xd3, 0x3a, - 0x7c, 0xe4, 0x69, 0x7d, 0xaf, 0xb0, 0xc0, 0x1f, 0x49, 0x44, 0xf3, 0x8a, 0x7c, 0x0d, 0xce, 0x26, - 0x3a, 0x2a, 0x8e, 0x06, 0xdf, 0xd2, 0x60, 0x4c, 0x84, 0xaa, 0x3c, 0x84, 0x23, 0xcb, 0x06, 0x8c, - 0x30, 0x91, 0x67, 0x10, 0x6e, 0xb0, 0xb5, 0xe9, 0x79, 0x61, 0x22, 0x60, 0x27, 0xb3, 0x1c, 0x67, - 0xff, 0x62, 0x0e, 0x9e, 0x99, 0x24, 0xfa, 0xe6, 0xa6, 0x1d, 0x12, 0x33, 0x8c, 0xc2, 0x00, 0x46, - 0x26, 0x89, 0x4a, 0x39, 0x4e, 0xb4, 0xd2, 0xbf, 0x3c, 0x0c, 0x57, 0x04, 0xe0, 0x0c, 0x8b, 0x24, - 0x09, 0xdc, 0x2e, 0x9c, 0x13, 0x6b, 0xdb, 0xf0, 0x0d, 0x5b, 0xbe, 0xfe, 0x97, 0x13, 0x7d, 0x85, - 0x5d, 0x48, 0x06, 0x1c, 0xce, 0xc3, 0xc1, 0x03, 0xda, 0xb1, 0xe2, 0x1b, 0xc4, 0x70, 0xc2, 0xcd, - 0x08, 0x77, 0x65, 0x90, 0x80, 0x76, 0x59, 0x78, 0x38, 0x17, 0x0b, 0xb3, 0x3e, 0x10, 0x15, 0x75, - 0x9f, 0x18, 0xaa, 0xe9, 0xc3, 0x00, 0xc6, 0xdf, 0x2b, 0xb9, 0x10, 0x71, 0x01, 0x26, 0xa6, 0x43, - 0x34, 0x76, 0x98, 0x4a, 0x02, 0x93, 0xd0, 0xb7, 0x59, 0xe0, 0x55, 0xa9, 0xc8, 0x5e, 0x49, 0x56, - 0xe1, 0x74, 0x5b, 0xf4, 0x14, 0x4c, 0x33, 0x6b, 0x8e, 0x38, 0x72, 0xcc, 0x48, 0xec, 0xe7, 0xbc, - 0x9a, 0xa8, 0xc1, 0xa9, 0x96, 0xfa, 0x6f, 0x6a, 0x30, 0xa9, 0x6e, 0xbb, 0x43, 0x78, 0xb5, 0xf4, - 0x94, 0xcb, 0x70, 0x00, 0x8f, 0x0b, 0x15, 0xeb, 0x61, 0xee, 0xc3, 0xcf, 0x0d, 0xc1, 0xb9, 0x9c, - 0x3e, 0xec, 0x6d, 0x9e, 0xa4, 0x2e, 0xd6, 0x41, 0xde, 0xe6, 0x33, 0x97, 0xb4, 0x7c, 0x9b, 0x4f, - 0xd7, 0xe0, 0x0c, 0x5e, 0xf4, 0x1c, 0x0c, 0x99, 0xbe, 0x2d, 0xa6, 0xe5, 0x7d, 0xa5, 0xc4, 0x42, - 0xdc, 0x5c, 0x9c, 0x10, 0x18, 0x87, 0xea, 0xb8, 0x89, 0x29, 0x40, 0x7a, 0x3d, 0xa8, 0x87, 0x3a, - 0xba, 0xab, 0xd9, 0xf5, 0xa0, 0x9e, 0xfd, 0x00, 0x27, 0xdb, 0xa1, 0x17, 0x60, 0x56, 0xf0, 0xeb, - 0x91, 0x1f, 0xab, 0xe7, 0x06, 0x21, 0x3d, 0x7f, 0xa1, 0x20, 0xa7, 0x0f, 0xec, 0xef, 0xd5, 0x66, - 0x6f, 0x16, 0xb4, 0xc1, 0x85, 0xbd, 0xf5, 0xbf, 0x18, 0x82, 0x09, 0x25, 0x9c, 0x2f, 0x5a, 0x19, - 0x44, 0xd1, 0x11, 0x7f, 0x71, 0xa4, 0xec, 0x58, 0x81, 0xa1, 0x76, 0xb7, 0x57, 0x52, 0xd3, 0x21, - 0xc1, 0x5d, 0xa7, 0xe0, 0xda, 0xdd, 0x1e, 0x7a, 0x4e, 0xea, 0x4e, 0xca, 0x69, 0x37, 0xa4, 0xd7, - 0x41, 0x4a, 0x7f, 0x12, 0x1d, 0x97, 0xe1, 0xc2, 0xe3, 0xd2, 0x81, 0xb1, 0x40, 0x28, 0x56, 0x46, - 0xca, 0x47, 0x75, 0x50, 0x66, 0x5a, 0x28, 0x52, 0xb8, 0x54, 0x16, 0xe9, 0x59, 0x22, 0x1c, 0x94, - 0xe3, 0xeb, 0x31, 0x5f, 0x46, 0x26, 0x6e, 0x56, 0x39, 0xc7, 0x77, 0x87, 0x95, 0x60, 0x51, 0x93, - 0xb9, 0x48, 0xc6, 0x0e, 0x75, 0x91, 0x7c, 0xa6, 0x02, 0x28, 0x3b, 0x0c, 0xf4, 0x10, 0x8c, 0x30, - 0x5f, 0x68, 0x41, 0x31, 0x24, 0x7f, 0xce, 0xbc, 0x61, 0x31, 0xaf, 0x43, 0x2d, 0xe1, 0xa3, 0x5e, - 0x6e, 0x39, 0x99, 0x71, 0x8b, 0xc0, 0xa7, 0x38, 0xb4, 0x47, 0x37, 0xf3, 0x50, 0xe1, 0xcd, 0x7c, - 0x07, 0xc6, 0x3a, 0xb6, 0xcb, 0x5e, 0xd8, 0xca, 0xe9, 0x9b, 0xf8, 0x1b, 0x3c, 0x07, 0x81, 0x23, - 0x58, 0xfa, 0x9f, 0x55, 0xe8, 0xd6, 0x8f, 0xf9, 0xd2, 0x5d, 0x00, 0xa3, 0x17, 0x7a, 0x9c, 0xc1, - 0x11, 0x27, 0xa0, 0x59, 0x6e, 0x95, 0x25, 0xd0, 0x05, 0x09, 0x90, 0x3f, 0x8d, 0xc7, 0xbf, 0xb1, - 0x82, 0x8c, 0xa2, 0x0e, 0xed, 0x0e, 0x79, 0xde, 0x76, 0x2d, 0xef, 0xae, 0x98, 0xde, 0x41, 0x51, - 0xdf, 0x96, 0x00, 0x39, 0xea, 0xf8, 0x37, 0x56, 0x90, 0x51, 0xd2, 0xc2, 0xc4, 0x5b, 0x97, 0xc5, - 0x57, 0x17, 0x63, 0xf3, 0x1c, 0x27, 0xba, 0x3b, 0xab, 0x9c, 0xb4, 0xd4, 0x0b, 0xda, 0xe0, 0xc2, - 0xde, 0xfa, 0x6f, 0x69, 0x70, 0x21, 0x77, 0x2a, 0xd0, 0x75, 0x38, 0x1b, 0xdb, 0x43, 0xa9, 0xc4, - 0xbe, 0x1a, 0xc7, 0xf5, 0xbf, 0x99, 0x6e, 0x80, 0xb3, 0x7d, 0xd0, 0x8a, 0x64, 0x78, 0xd4, 0xcb, - 0x44, 0x18, 0x53, 0x5d, 0x12, 0xa0, 0xf2, 0xee, 0x1b, 0x9c, 0xd7, 0x4f, 0xff, 0xe9, 0xc4, 0x80, - 0xe3, 0x09, 0xa3, 0xa7, 0x63, 0x9d, 0xb4, 0xa5, 0xf3, 0x92, 0x3c, 0x1d, 0x8b, 0xb4, 0x10, 0xf3, - 0x3a, 0xf4, 0xa0, 0xea, 0x12, 0x28, 0x69, 0x57, 0xe4, 0x16, 0xa8, 0x87, 0x00, 0xc2, 0x64, 0xd1, - 0x76, 0xdb, 0x68, 0x03, 0xaa, 0x86, 0x48, 0x2f, 0x28, 0xb6, 0xda, 0x4f, 0x96, 0x92, 0xa6, 0x05, - 0x0c, 0x6e, 0x99, 0x1e, 0xfd, 0xc2, 0x12, 0xb6, 0xfe, 0x4f, 0x34, 0xb8, 0x98, 0xef, 0xf3, 0x7b, - 0x08, 0x1e, 0xa1, 0x03, 0x13, 0x7e, 0xdc, 0x4d, 0xec, 0xcb, 0x9f, 0x50, 0xa3, 0xe8, 0x29, 0x11, - 0x68, 0x28, 0xff, 0x54, 0xf7, 0xbd, 0x20, 0x5a, 0x9c, 0x74, 0x60, 0x3d, 0x29, 0xbb, 0x28, 0x23, - 0xc1, 0x2a, 0x7c, 0xfd, 0xdf, 0x56, 0x00, 0x56, 0x49, 0x78, 0xd7, 0xf3, 0xb7, 0xe8, 0x14, 0xbd, - 0xa9, 0x7c, 0xcf, 0x1f, 0x80, 0xe1, 0xae, 0x67, 0x05, 0x82, 0x4a, 0x31, 0xa7, 0x70, 0x66, 0xd1, - 0xc3, 0x4a, 0x51, 0x0d, 0x46, 0xd8, 0x2b, 0x82, 0xb8, 0x40, 0x18, 0xd3, 0x4f, 0x59, 0xb6, 0x00, - 0xf3, 0x72, 0x9e, 0x38, 0x86, 0x79, 0x7d, 0x04, 0x42, 0x8a, 0x11, 0x89, 0x63, 0x78, 0x19, 0x96, - 0xb5, 0xe8, 0x29, 0x00, 0xbb, 0x7b, 0xcd, 0xe8, 0xd8, 0x0e, 0x65, 0x20, 0x47, 0x65, 0x9e, 0x42, - 0x68, 0xae, 0x45, 0xa5, 0xf7, 0xf6, 0x6a, 0x55, 0xf1, 0x6b, 0x17, 0x2b, 0xad, 0xf5, 0x4f, 0x0c, - 0x43, 0x22, 0x0b, 0x67, 0xac, 0xb0, 0xd1, 0x4e, 0x46, 0x61, 0xf3, 0x02, 0xcc, 0x3a, 0x9e, 0x61, - 0x2d, 0x1a, 0x0e, 0x3d, 0x30, 0x7e, 0x8b, 0x2f, 0xa5, 0xe1, 0xb6, 0x65, 0xe2, 0x46, 0x46, 0x3c, - 0x96, 0x0b, 0xda, 0xe0, 0xc2, 0xde, 0x28, 0x94, 0xb9, 0x3f, 0x79, 0xea, 0x84, 0xe5, 0x41, 0x73, - 0x94, 0xce, 0xab, 0xbe, 0x42, 0x92, 0x0f, 0x48, 0xa5, 0x07, 0xfd, 0xb4, 0x06, 0x17, 0xc8, 0x4e, - 0x48, 0x7c, 0xd7, 0x70, 0x6e, 0xfb, 0xc6, 0xc6, 0x86, 0x6d, 0x0a, 0x3b, 0x4b, 0xbe, 0xb0, 0x6b, - 0xfb, 0x7b, 0xb5, 0x0b, 0x4b, 0x79, 0x0d, 0xee, 0xed, 0xd5, 0xde, 0x93, 0x4d, 0xc1, 0x1b, 0xb9, - 0x06, 0xe5, 0x76, 0x61, 0x1b, 0x39, 0x1f, 0xdd, 0xdc, 0x93, 0x30, 0x71, 0x04, 0x5f, 0x87, 0x84, - 0x0b, 0xf6, 0xef, 0x55, 0x60, 0x92, 0xee, 0xbd, 0x65, 0xcf, 0x34, 0x9c, 0xc6, 0x6a, 0xeb, 0x08, - 0xf9, 0x6b, 0xd1, 0x32, 0x9c, 0xdf, 0xf0, 0x7c, 0x93, 0xdc, 0xae, 0xaf, 0xdd, 0xf6, 0xc4, 0x1b, - 0x46, 0x63, 0xb5, 0x25, 0x08, 0x2a, 0x93, 0xca, 0xae, 0xe5, 0xd4, 0xe3, 0xdc, 0x5e, 0xe8, 0x16, - 0x5c, 0x88, 0xcb, 0xef, 0x74, 0xb9, 0x71, 0x06, 0x05, 0x37, 0x14, 0x1b, 0x97, 0x5c, 0xcb, 0x6b, - 0x80, 0xf3, 0xfb, 0x21, 0x03, 0x2e, 0x89, 0x10, 0x0f, 0xd7, 0x3c, 0xff, 0xae, 0xe1, 0x5b, 0x49, - 0xb0, 0xc3, 0xb1, 0x8e, 0xb7, 0x51, 0xdc, 0x0c, 0xf7, 0x83, 0xa1, 0xff, 0xca, 0x28, 0x28, 0x4e, - 0x6d, 0x47, 0x48, 0x37, 0xf2, 0xeb, 0x1a, 0x9c, 0x37, 0x1d, 0x9b, 0xb8, 0x61, 0xca, 0x7b, 0x89, - 0x93, 0xa4, 0x3b, 0xa5, 0xbc, 0xed, 0xba, 0xc4, 0x6d, 0x36, 0x84, 0x2d, 0x4b, 0x3d, 0x07, 0xb8, - 0xb0, 0xf7, 0xc9, 0xa9, 0xc1, 0xb9, 0x83, 0x61, 0xdf, 0xc3, 0xca, 0x9b, 0x0d, 0xd5, 0x37, 0xbd, - 0x2e, 0xca, 0xb0, 0xac, 0x45, 0x8f, 0xc1, 0x44, 0xdb, 0xf7, 0x7a, 0xdd, 0xa0, 0xce, 0x0c, 0x68, - 0xf9, 0xfe, 0x67, 0x2c, 0xdc, 0xf5, 0xb8, 0x18, 0xab, 0x6d, 0x28, 0x43, 0xca, 0x7f, 0xae, 0xf9, - 0x64, 0xc3, 0xde, 0x11, 0x84, 0x8e, 0x31, 0xa4, 0xd7, 0x95, 0x72, 0x9c, 0x68, 0x85, 0xde, 0x05, - 0xe3, 0x76, 0x10, 0xf4, 0x88, 0x7f, 0x07, 0x2f, 0x8b, 0x38, 0xe3, 0xec, 0x5d, 0xa4, 0x19, 0x15, - 0xe2, 0xb8, 0x1e, 0x7d, 0x41, 0x83, 0x69, 0x9f, 0xbc, 0xd2, 0xb3, 0x7d, 0x62, 0x31, 0xa4, 0x81, - 0xf0, 0x2c, 0xc4, 0x83, 0x79, 0x33, 0xce, 0xe3, 0x04, 0x50, 0x4e, 0x25, 0xa4, 0x1e, 0x2c, 0x59, - 0x89, 0x53, 0x23, 0xa0, 0x53, 0x15, 0xd8, 0x6d, 0xd7, 0x76, 0xdb, 0x0b, 0x4e, 0x3b, 0x98, 0xad, - 0x32, 0xc2, 0xc7, 0xb9, 0xdd, 0xb8, 0x18, 0xab, 0x6d, 0xa8, 0x24, 0xd8, 0x0b, 0xe8, 0xb9, 0xef, - 0x10, 0x3e, 0xbf, 0xe3, 0xb1, 0xa2, 0xf0, 0x8e, 0x5a, 0x81, 0x93, 0xed, 0xd0, 0x53, 0x30, 0x1d, - 0x15, 0x88, 0x59, 0x06, 0x1e, 0x30, 0x8a, 0x8e, 0xf3, 0x4e, 0xa2, 0x06, 0xa7, 0x5a, 0xce, 0x2d, - 0xc0, 0xb9, 0x9c, 0xcf, 0x3c, 0x12, 0x71, 0xf9, 0xcd, 0x0a, 0xbc, 0xfd, 0xc0, 0x5d, 0x89, 0xfe, - 0xa1, 0x06, 0x13, 0x64, 0x27, 0xf4, 0x0d, 0x69, 0x63, 0x4f, 0x97, 0x68, 0xe3, 0x44, 0x8e, 0xc0, - 0xfc, 0x52, 0x8c, 0x88, 0x2f, 0x9b, 0x64, 0x34, 0x94, 0x1a, 0xac, 0x8e, 0x87, 0x4a, 0x57, 0x3c, - 0x9c, 0x98, 0xaa, 0x4f, 0x17, 0x09, 0x1c, 0x45, 0xcd, 0xdc, 0x07, 0x61, 0x26, 0x0d, 0xf9, 0x48, - 0x33, 0xf5, 0xbb, 0x15, 0x18, 0x5b, 0xf3, 0x3d, 0xca, 0x03, 0x9d, 0x42, 0x10, 0x29, 0x23, 0x11, - 0x17, 0xb7, 0x94, 0xab, 0xb2, 0x18, 0x6c, 0x61, 0x4c, 0x6e, 0x3b, 0x15, 0x93, 0x7b, 0x61, 0x10, - 0x24, 0xfd, 0x83, 0x70, 0xff, 0x7b, 0x0d, 0x26, 0x44, 0xcb, 0x53, 0x08, 0x32, 0xf5, 0xb3, 0xc9, - 0x20, 0x53, 0x1f, 0x18, 0xe0, 0xbb, 0x0a, 0xc2, 0x4b, 0x7d, 0x49, 0x83, 0x29, 0xd1, 0x62, 0x85, - 0x74, 0xd6, 0x89, 0x8f, 0xae, 0xc1, 0x58, 0xd0, 0x63, 0x0b, 0x29, 0x3e, 0xe8, 0x92, 0xca, 0x55, - 0xfb, 0xeb, 0x86, 0xc9, 0xb2, 0x90, 0xf2, 0x26, 0x4a, 0xa4, 0x6b, 0x5e, 0x80, 0xa3, 0xce, 0x94, - 0x47, 0xf6, 0x3d, 0x27, 0x13, 0x9b, 0x06, 0x7b, 0x0e, 0xc1, 0xac, 0x86, 0xb2, 0xa6, 0xf4, 0x6f, - 0xa4, 0x6b, 0x62, 0xac, 0x29, 0xad, 0x0e, 0x30, 0x2f, 0xd7, 0x3f, 0x35, 0x2c, 0x27, 0x9b, 0x45, - 0xa3, 0xbd, 0x01, 0xe3, 0xa6, 0x4f, 0x8c, 0x90, 0x58, 0x8b, 0xbb, 0x87, 0x19, 0x1c, 0x23, 0xd6, - 0xf5, 0xa8, 0x07, 0x8e, 0x3b, 0x53, 0xba, 0xa8, 0x3e, 0x61, 0x54, 0xe2, 0x2b, 0xa4, 0xf0, 0xf9, - 0xe2, 0x27, 0x61, 0xc4, 0xbb, 0xeb, 0x4a, 0x4b, 0x88, 0xbe, 0x88, 0xd9, 0xa7, 0xdc, 0xa2, 0xad, - 0x31, 0xef, 0xa4, 0xc6, 0x66, 0x1a, 0xee, 0x13, 0x9b, 0xc9, 0x81, 0xb1, 0x0e, 0x5b, 0x86, 0x81, - 0x02, 0x1f, 0x27, 0x16, 0x54, 0x4d, 0x8d, 0xc1, 0x20, 0xe3, 0x08, 0x05, 0xbd, 0xdf, 0x28, 0x0d, - 0x0e, 0xba, 0x86, 0x49, 0xd4, 0xfb, 0x6d, 0x35, 0x2a, 0xc4, 0x71, 0x3d, 0xda, 0x4d, 0x06, 0xfd, - 0x1a, 0x2b, 0xaf, 0x6a, 0x12, 0xc3, 0x53, 0xe2, 0x7c, 0xf1, 0xa9, 0x2f, 0x0c, 0xfc, 0xf5, 0x0b, - 0xc3, 0x72, 0x93, 0x8a, 0x38, 0xe6, 0xf9, 0x99, 0x33, 0xb5, 0x52, 0x99, 0x33, 0xdf, 0x13, 0x25, - 0xa3, 0xac, 0x24, 0xd2, 0xb8, 0xc8, 0x64, 0x94, 0x93, 0x02, 0x75, 0x22, 0x01, 0x65, 0x0f, 0xce, - 0x05, 0xa1, 0xe1, 0x90, 0x96, 0x2d, 0xc4, 0xf1, 0x20, 0x34, 0x3a, 0xdd, 0x12, 0xd9, 0x58, 0xb8, - 0x45, 0x7a, 0x16, 0x14, 0xce, 0x83, 0x8f, 0x3e, 0xa9, 0xc1, 0x2c, 0x2b, 0x5f, 0xe8, 0x85, 0x1e, - 0x0f, 0x31, 0x1b, 0x23, 0x3f, 0xfa, 0x3b, 0x29, 0x13, 0x81, 0x5a, 0x05, 0xf0, 0x70, 0x21, 0x26, - 0xf4, 0x1a, 0x5c, 0x70, 0x8c, 0x20, 0x5c, 0x30, 0x43, 0x7b, 0xdb, 0x0e, 0x77, 0xe3, 0x21, 0x1c, - 0x3d, 0x05, 0x24, 0x63, 0xb5, 0x97, 0xf3, 0x80, 0xe1, 0x7c, 0x1c, 0xfa, 0x5f, 0x6a, 0x80, 0xb2, - 0x5b, 0x08, 0x39, 0x50, 0xb5, 0x22, 0x13, 0x71, 0xed, 0x58, 0x22, 0xd2, 0x49, 0xca, 0x2c, 0x2d, - 0xcb, 0x25, 0x06, 0xe4, 0xc1, 0xf8, 0xdd, 0x4d, 0x3b, 0x24, 0x8e, 0x1d, 0x84, 0xc7, 0x14, 0x00, - 0x4f, 0x46, 0x83, 0x7a, 0x3e, 0x02, 0x8c, 0x63, 0x1c, 0xfa, 0x2f, 0x0e, 0x43, 0xf5, 0x08, 0xc9, - 0xda, 0x7b, 0x80, 0x4c, 0x25, 0x49, 0xcc, 0x20, 0x3a, 0x08, 0x66, 0xde, 0x50, 0xcf, 0x00, 0xc3, - 0x39, 0x08, 0xd0, 0x6b, 0x70, 0xde, 0x76, 0x37, 0x7c, 0x23, 0x08, 0xfd, 0x1e, 0x53, 0xea, 0x0e, - 0x92, 0x6b, 0x85, 0x49, 0x10, 0xcd, 0x1c, 0x70, 0x38, 0x17, 0x09, 0x22, 0x30, 0x76, 0xd7, 0xf3, - 0xb7, 0x28, 0xf1, 0x1c, 0x2e, 0x9f, 0x75, 0xef, 0x79, 0x06, 0x22, 0xa6, 0x9a, 0xfc, 0x77, 0x80, - 0x23, 0xd8, 0x3c, 0x1c, 0x06, 0xff, 0x3f, 0x7a, 0xde, 0x14, 0xfb, 0xbe, 0x5e, 0x1e, 0x5f, 0x9c, - 0xc0, 0x91, 0x87, 0xc3, 0x48, 0x16, 0xe2, 0x34, 0x42, 0xfd, 0x0f, 0x35, 0x18, 0xe1, 0xae, 0x97, - 0x27, 0xcf, 0xc1, 0xfd, 0xdd, 0x04, 0x07, 0x57, 0x2a, 0x5d, 0x04, 0x1b, 0x6a, 0x61, 0x22, 0x83, - 0x6f, 0x69, 0x30, 0xce, 0x5a, 0x9c, 0x02, 0x4b, 0xf5, 0x52, 0x92, 0xa5, 0x7a, 0xb2, 0xf4, 0xd7, - 0x14, 0x30, 0x54, 0x7f, 0x38, 0x24, 0xbe, 0x85, 0x71, 0x2c, 0x4d, 0x38, 0x27, 0x8c, 0x2b, 0x97, - 0xed, 0x0d, 0x42, 0xb7, 0x78, 0xc3, 0xd8, 0x0d, 0x44, 0xbc, 0x04, 0xee, 0x5d, 0x93, 0xad, 0xc6, - 0x79, 0x7d, 0xd0, 0xef, 0x69, 0x94, 0x37, 0x08, 0x7d, 0xdb, 0x1c, 0x28, 0x3b, 0x80, 0x1c, 0xdb, - 0xfc, 0x0a, 0x07, 0xc6, 0x25, 0x93, 0x3b, 0x31, 0x93, 0xc0, 0x4a, 0xef, 0xed, 0xd5, 0x6a, 0x39, - 0x4a, 0xa3, 0x38, 0xe8, 0x78, 0x10, 0x7e, 0xe2, 0x7b, 0x7d, 0x9b, 0x30, 0x65, 0x6d, 0x34, 0x62, - 0x74, 0x03, 0x46, 0x02, 0xd3, 0xeb, 0x92, 0xa3, 0xe4, 0x3b, 0x91, 0x13, 0xdc, 0xa2, 0x3d, 0x31, - 0x07, 0x30, 0xf7, 0x32, 0x4c, 0xaa, 0x23, 0xcf, 0x91, 0x7c, 0x1a, 0xaa, 0xe4, 0x73, 0xe4, 0x27, - 0x19, 0x55, 0x52, 0xfa, 0xfd, 0x0a, 0x8c, 0xf2, 0xac, 0x9b, 0x87, 0x50, 0x49, 0xdb, 0x51, 0x74, - 0xe7, 0x01, 0x92, 0x09, 0xab, 0xe1, 0xf6, 0x5e, 0xf4, 0x5c, 0x65, 0x0e, 0xd4, 0x00, 0xcf, 0xc8, - 0x95, 0x41, 0x18, 0x87, 0xca, 0xe7, 0x64, 0xe0, 0x1f, 0x76, 0xd2, 0x61, 0x17, 0xff, 0x58, 0x83, - 0xc9, 0x44, 0x54, 0xcb, 0x0e, 0x0c, 0xf9, 0x32, 0x5b, 0x4f, 0x59, 0x8d, 0x7d, 0x64, 0xa2, 0x73, - 0xa9, 0x4f, 0x23, 0x4c, 0xf1, 0xc8, 0x00, 0x98, 0x95, 0x63, 0x0a, 0x80, 0xa9, 0xbf, 0xa1, 0xc1, - 0xc5, 0xe8, 0x83, 0x92, 0x51, 0x8b, 0xd0, 0x23, 0x50, 0x35, 0xba, 0x36, 0x53, 0x28, 0xa9, 0x2a, - 0xb9, 0x85, 0xb5, 0x26, 0x2b, 0xc3, 0xb2, 0x16, 0xbd, 0x1b, 0xaa, 0xd1, 0xc6, 0x13, 0x6c, 0xa7, - 0xa4, 0x59, 0xf2, 0x0d, 0x42, 0xb6, 0x40, 0xef, 0x50, 0x02, 0x70, 0x8f, 0xc4, 0x7c, 0x82, 0x44, - 0xcc, 0x9f, 0x2b, 0xf5, 0x9f, 0x80, 0xf1, 0x56, 0xeb, 0x06, 0x8f, 0xe7, 0x72, 0x04, 0xd5, 0xaa, - 0xfe, 0xd9, 0x21, 0x98, 0xe2, 0x2a, 0x86, 0x45, 0xdb, 0xb5, 0x6c, 0xb7, 0x7d, 0x0a, 0x77, 0xca, - 0x6d, 0x18, 0xe7, 0xda, 0x8c, 0x03, 0x32, 0x2b, 0xb5, 0xa2, 0x46, 0xe9, 0x68, 0xb0, 0xb2, 0x02, - 0xc7, 0x80, 0xd0, 0x4d, 0x18, 0x7d, 0x85, 0xd2, 0xb7, 0xe8, 0x5c, 0x1c, 0x8a, 0xcc, 0xc8, 0x4d, - 0xcf, 0x48, 0x63, 0x80, 0x05, 0x08, 0x14, 0x30, 0x1b, 0x32, 0xc6, 0x70, 0x0d, 0x12, 0x8d, 0x20, - 0x31, 0xb3, 0x32, 0xfc, 0xfe, 0xa4, 0x30, 0x45, 0x63, 0xbf, 0xb0, 0x44, 0xc4, 0x42, 0x59, 0x27, - 0x7a, 0xbc, 0x45, 0x42, 0x59, 0x27, 0xc6, 0x5c, 0x70, 0x35, 0x3e, 0x09, 0x17, 0x72, 0x27, 0xe3, - 0x60, 0x76, 0x56, 0xff, 0xed, 0x0a, 0x0c, 0xb7, 0x08, 0xb1, 0x4e, 0x61, 0x67, 0xbe, 0x94, 0xe0, - 0x76, 0x7e, 0xb2, 0x74, 0x30, 0xed, 0x22, 0x65, 0xd5, 0x46, 0x4a, 0x59, 0xf5, 0xc1, 0xd2, 0x18, - 0xfa, 0x6b, 0xaa, 0x7e, 0xb5, 0x02, 0x40, 0x9b, 0x2d, 0x1a, 0xe6, 0x16, 0xa7, 0x38, 0x72, 0x37, - 0x6b, 0x49, 0x8a, 0x93, 0xdd, 0x86, 0xa7, 0xf9, 0x7c, 0xa9, 0xc3, 0x28, 0xcf, 0x67, 0x2d, 0xb4, - 0xfe, 0xc0, 0xd3, 0x7d, 0xd2, 0x12, 0x2c, 0x6a, 0x92, 0xd4, 0x62, 0xf8, 0x98, 0xa8, 0x85, 0xfe, - 0xcf, 0x35, 0x60, 0x09, 0xda, 0x1a, 0xab, 0xcc, 0x57, 0xdb, 0xe6, 0xaf, 0x71, 0x0d, 0x35, 0x16, - 0x28, 0xd3, 0x7a, 0x37, 0xd5, 0x0a, 0x9c, 0x6c, 0x87, 0x3a, 0xca, 0xbc, 0x56, 0xca, 0x4b, 0x01, - 0x62, 0x1c, 0x07, 0xd2, 0x87, 0xef, 0x55, 0xe0, 0x4c, 0xaa, 0xed, 0x21, 0xa4, 0xc1, 0x93, 0xa1, - 0xb6, 0x4a, 0xc6, 0x8e, 0xa1, 0x93, 0xcf, 0xd8, 0x21, 0x93, 0x67, 0x0c, 0x9f, 0x6c, 0xf2, 0x8c, - 0x3f, 0xd0, 0xa0, 0x4a, 0x67, 0xf8, 0x14, 0x08, 0xef, 0xdf, 0x49, 0x12, 0xde, 0xf7, 0x97, 0xdd, - 0x38, 0x05, 0xf4, 0xf6, 0x87, 0x15, 0x60, 0x51, 0xfc, 0x85, 0xe1, 0x82, 0x62, 0x0b, 0xa0, 0x15, - 0xd8, 0x02, 0x5c, 0x11, 0xa6, 0x04, 0x29, 0x9d, 0xad, 0x62, 0x4e, 0xf0, 0x6e, 0xc5, 0x5a, 0x60, - 0x28, 0x49, 0x46, 0x72, 0x2c, 0x06, 0x5e, 0x85, 0xa9, 0x60, 0xd3, 0xf3, 0x42, 0xe9, 0xbb, 0x3f, - 0x5c, 0x5e, 0x3f, 0xcf, 0x0c, 0x98, 0xa3, 0x4f, 0xe1, 0x07, 0xb3, 0xa5, 0xc2, 0xc6, 0x49, 0x54, - 0x68, 0x1e, 0x60, 0xdd, 0xf1, 0xcc, 0xad, 0x7a, 0xb3, 0x81, 0x23, 0x83, 0x55, 0x66, 0x6d, 0xb4, - 0x28, 0x4b, 0xb1, 0xd2, 0x62, 0x20, 0xeb, 0x86, 0x3f, 0xd7, 0xf8, 0x4c, 0x1f, 0xe1, 0x48, 0x9e, - 0x22, 0x85, 0x7d, 0x67, 0x8a, 0xc2, 0x2a, 0x49, 0x95, 0x13, 0x54, 0xb6, 0x16, 0x9f, 0x30, 0xa9, - 0x8f, 0x4f, 0x1c, 0x8d, 0xdf, 0x15, 0x9f, 0x29, 0x13, 0x41, 0x74, 0x61, 0xca, 0x51, 0x13, 0xfc, - 0x89, 0x33, 0x52, 0x2a, 0x37, 0xa0, 0xf4, 0x80, 0x48, 0x14, 0xe3, 0x24, 0x02, 0x4a, 0xa7, 0xa3, - 0xaf, 0x63, 0x29, 0xff, 0x85, 0x2d, 0x07, 0xdb, 0x0e, 0x6b, 0x6a, 0x05, 0x4e, 0xb6, 0xd3, 0xff, - 0x51, 0x05, 0x1e, 0xe4, 0x63, 0x67, 0x1a, 0x94, 0x06, 0xe9, 0x12, 0xd7, 0x22, 0xae, 0xb9, 0xcb, - 0x78, 0x78, 0xcb, 0x6b, 0xa3, 0xbf, 0xaf, 0x41, 0x95, 0xb8, 0x56, 0xd7, 0xb3, 0xdd, 0xe8, 0xe9, - 0xe3, 0xc3, 0xe5, 0x53, 0x69, 0x14, 0x60, 0x59, 0x12, 0x08, 0x44, 0xbc, 0x4e, 0xf1, 0x0b, 0x4b, - 0xc4, 0xe8, 0x2e, 0x8c, 0x74, 0x7d, 0x6f, 0x3d, 0x12, 0x5e, 0x9f, 0x3b, 0xf6, 0x11, 0xac, 0x51, - 0xe8, 0x7c, 0x71, 0xd9, 0xbf, 0x98, 0xe3, 0xd3, 0x31, 0xbc, 0xe3, 0x50, 0x23, 0x3f, 0x8a, 0x64, - 0x71, 0x0b, 0xf4, 0x83, 0xc7, 0x72, 0x14, 0x80, 0xcf, 0xc2, 0xc3, 0x0a, 0xc0, 0xa5, 0x1d, 0x2a, - 0xea, 0xd4, 0x8d, 0xae, 0x61, 0x52, 0xc1, 0x9d, 0x79, 0x44, 0x73, 0x9d, 0xfe, 0x11, 0x40, 0x7e, - 0x66, 0x18, 0x6a, 0x0a, 0xcc, 0x84, 0x41, 0x50, 0x44, 0xc7, 0xbe, 0xac, 0xc1, 0x84, 0xe1, 0xba, - 0x5e, 0x68, 0xa8, 0x89, 0x53, 0xad, 0x01, 0xd7, 0x26, 0x0f, 0xd5, 0xfc, 0x42, 0x8c, 0x26, 0xf5, - 0x66, 0xac, 0xd4, 0x60, 0x75, 0x34, 0x7d, 0x4c, 0x83, 0x2a, 0xa7, 0x6a, 0x1a, 0x84, 0x3e, 0x1a, - 0x11, 0x10, 0x2e, 0x7d, 0xbd, 0x70, 0x02, 0xf3, 0xc3, 0xe8, 0x51, 0xbe, 0x56, 0x64, 0xee, 0x83, - 0x30, 0x93, 0x9e, 0xbd, 0x23, 0xa9, 0x2a, 0xfe, 0xd5, 0x50, 0x62, 0x77, 0x15, 0xa2, 0x3f, 0x84, - 0x2e, 0xe8, 0x2b, 0xa9, 0x0d, 0xc3, 0x2f, 0x78, 0xfb, 0xa4, 0x26, 0xe4, 0x78, 0x77, 0xcd, 0xd0, - 0xe9, 0x1a, 0x94, 0x0d, 0xba, 0x6c, 0x75, 0xb8, 0xa8, 0xcc, 0x11, 0x7b, 0x75, 0xad, 0x6f, 0x12, - 0x73, 0xeb, 0x48, 0x3a, 0x90, 0x45, 0x2a, 0x9b, 0x4a, 0x20, 0x4a, 0x8e, 0xa5, 0x47, 0x61, 0x6c, - 0xdb, 0x0e, 0xec, 0x28, 0x4e, 0x87, 0x02, 0xe3, 0x39, 0x5e, 0x8c, 0xa3, 0x7a, 0x7d, 0x05, 0xae, - 0x28, 0x30, 0x72, 0x5d, 0x84, 0x8f, 0x32, 0xa4, 0xaf, 0x8e, 0x45, 0xb7, 0xad, 0xf0, 0xa1, 0xfa, - 0xba, 0x06, 0xf7, 0x93, 0x22, 0x92, 0x27, 0x6e, 0xac, 0x41, 0xcf, 0x5c, 0x21, 0x49, 0x15, 0xc1, - 0x0f, 0x8b, 0xaa, 0x71, 0xf1, 0xc8, 0xd0, 0x6e, 0x22, 0x37, 0x58, 0x65, 0x10, 0x55, 0x4a, 0xce, - 0x0a, 0xf5, 0xcb, 0x0c, 0x86, 0x7e, 0x4d, 0x83, 0xf3, 0x4e, 0xce, 0xa9, 0x11, 0x8c, 0x68, 0xeb, - 0x04, 0x0e, 0x24, 0x7f, 0xb6, 0xca, 0xab, 0xc1, 0xb9, 0x43, 0x41, 0xbf, 0x51, 0xe8, 0xbb, 0x3e, - 0x52, 0x3e, 0xeb, 0xed, 0x41, 0x1b, 0xb1, 0x84, 0x1b, 0xfb, 0x47, 0x61, 0xc2, 0x8b, 0x0f, 0x97, - 0x08, 0x36, 0xf0, 0x53, 0x03, 0x0e, 0x4e, 0x39, 0xae, 0xdc, 0x08, 0x40, 0x29, 0xc0, 0x2a, 0x3e, - 0xf4, 0x45, 0x0d, 0x90, 0x95, 0xe1, 0x20, 0x84, 0x1d, 0xc2, 0xb3, 0xc7, 0xce, 0x26, 0xf1, 0x67, - 0xcf, 0x6c, 0x39, 0xce, 0x19, 0x84, 0xfe, 0xc6, 0x18, 0x97, 0x19, 0xd9, 0x9b, 0xcf, 0x3a, 0x8c, - 0xae, 0x33, 0x9d, 0x8b, 0x38, 0x92, 0xa5, 0x15, 0x3c, 0x5c, 0x73, 0xc3, 0x15, 0x22, 0xfc, 0x7f, - 0x2c, 0x20, 0xa3, 0x17, 0x61, 0xc8, 0x72, 0xa3, 0x4c, 0xea, 0x1f, 0x18, 0x40, 0xe1, 0x10, 0x7b, - 0x03, 0x34, 0x56, 0x5b, 0x98, 0x02, 0x45, 0x2e, 0x54, 0x5d, 0x21, 0x66, 0x09, 0xb9, 0xbe, 0x74, - 0x46, 0x39, 0x29, 0xae, 0x49, 0x21, 0x31, 0x2a, 0xc1, 0x12, 0x07, 0xc5, 0x97, 0xd2, 0xb3, 0x96, - 0xc6, 0x27, 0xd5, 0x27, 0xfd, 0x74, 0x5b, 0x6b, 0xaa, 0x32, 0x64, 0xe4, 0xf0, 0xca, 0x90, 0xa9, - 0x42, 0x45, 0x08, 0x81, 0xd1, 0xd0, 0xb0, 0xdd, 0x90, 0x8b, 0x8d, 0x25, 0x9f, 0x48, 0xe9, 0xf8, - 0x6f, 0x53, 0x28, 0xb1, 0x7c, 0xc6, 0x7e, 0x06, 0x58, 0x00, 0xa7, 0x1b, 0x6b, 0x9b, 0xe5, 0xdc, - 0x14, 0x9b, 0xbe, 0xf4, 0xc6, 0xe2, 0x99, 0x3b, 0xf9, 0xc6, 0xe2, 0xff, 0x63, 0x01, 0x19, 0xbd, - 0x4c, 0xe5, 0x7b, 0xf1, 0xa8, 0x5d, 0x1d, 0x34, 0x9d, 0xa0, 0x78, 0xd1, 0x16, 0xfe, 0x04, 0xe2, - 0x29, 0x5b, 0xc2, 0x47, 0xeb, 0x30, 0x26, 0x74, 0x69, 0x22, 0x4a, 0xc7, 0x07, 0x06, 0xc8, 0xa6, - 0x13, 0x25, 0xa3, 0xe5, 0xbe, 0xdd, 0x11, 0x60, 0xfd, 0x3f, 0x8c, 0x73, 0x2d, 0xa8, 0xb0, 0x1b, - 0xda, 0x80, 0x6a, 0x04, 0x6e, 0x10, 0xdf, 0x96, 0x28, 0x7f, 0x19, 0xff, 0x34, 0x99, 0xcd, 0x4c, - 0xc2, 0x46, 0xf5, 0x3c, 0x37, 0xa2, 0x38, 0xb4, 0xf6, 0xe1, 0x5c, 0x88, 0x5e, 0x61, 0x09, 0x87, - 0x22, 0x97, 0xdb, 0xa1, 0xf2, 0x5b, 0x4b, 0xba, 0xe3, 0x26, 0x12, 0x0d, 0x45, 0x1e, 0xbb, 0x0a, - 0x92, 0x02, 0xbb, 0xaa, 0xe1, 0x52, 0x76, 0x55, 0x4f, 0xc3, 0x19, 0xf1, 0x8e, 0xdd, 0xb4, 0x08, - 0x7b, 0x5a, 0x15, 0x66, 0xd7, 0xcc, 0xc2, 0xa1, 0x9e, 0xac, 0xc2, 0xe9, 0xb6, 0xe8, 0xf7, 0x35, - 0xa8, 0x9a, 0x82, 0x9b, 0x10, 0xe7, 0x6a, 0x79, 0x30, 0x55, 0xf9, 0x7c, 0xc4, 0x9c, 0x70, 0x16, - 0xf9, 0xb9, 0x88, 0x46, 0x44, 0xc5, 0xc7, 0xf4, 0xe6, 0x2d, 0x47, 0x8d, 0xfe, 0x88, 0x4a, 0x01, - 0x0e, 0xcb, 0xa9, 0xc6, 0x1c, 0x26, 0xb9, 0x3d, 0xf8, 0xad, 0x01, 0xbf, 0x62, 0x21, 0x86, 0xc8, - 0x3f, 0xe4, 0xc3, 0x92, 0xd7, 0x8f, 0x6b, 0x8e, 0xe9, 0x5b, 0xd4, 0xe1, 0xa3, 0xaf, 0x6a, 0xf0, - 0x30, 0x37, 0xc2, 0xaf, 0x53, 0x06, 0x81, 0xa5, 0xa6, 0x25, 0x71, 0x2e, 0xdc, 0xd8, 0x0a, 0xac, - 0x7a, 0x64, 0x2b, 0xb0, 0x47, 0xf6, 0xf7, 0x6a, 0x0f, 0xd7, 0x0f, 0x01, 0x1b, 0x1f, 0x6a, 0x04, - 0x73, 0x5b, 0x30, 0x95, 0x58, 0xec, 0x93, 0xb4, 0x12, 0x98, 0x73, 0x61, 0x26, 0xbd, 0x26, 0x27, - 0x6a, 0x95, 0x70, 0x13, 0xc6, 0xe5, 0x65, 0x81, 0x1e, 0x54, 0x10, 0xc5, 0x97, 0xf9, 0x4d, 0xb2, - 0xcb, 0xb1, 0xd6, 0x12, 0x62, 0x13, 0x57, 0xfb, 0x3c, 0x47, 0x0b, 0x04, 0x40, 0xfd, 0xdb, 0x42, - 0xa7, 0x77, 0x9b, 0x74, 0xba, 0x8e, 0x11, 0x92, 0xb7, 0xfe, 0x0b, 0x9b, 0xfe, 0x3f, 0x34, 0x4e, - 0xf3, 0x45, 0xfa, 0x6b, 0x03, 0x26, 0x3a, 0x3c, 0xc6, 0x27, 0xf3, 0xd3, 0xd5, 0xca, 0x7b, 0x08, - 0xaf, 0xc4, 0x60, 0xb0, 0x0a, 0x13, 0xdd, 0xcd, 0x26, 0x68, 0xbf, 0x36, 0xd8, 0xe5, 0x7c, 0xe8, - 0x3c, 0xed, 0x28, 0xdb, 0x87, 0x0a, 0x99, 0x91, 0xb1, 0x71, 0x2a, 0x27, 0x76, 0xc6, 0xe0, 0xf8, - 0xc0, 0x4c, 0xa6, 0xfa, 0x37, 0x2a, 0x90, 0x9b, 0x2c, 0x0a, 0xe9, 0x30, 0xca, 0xbd, 0x5f, 0xd4, - 0xcc, 0xf5, 0xdc, 0x35, 0x06, 0x8b, 0x1a, 0x74, 0x8b, 0xeb, 0x18, 0x5c, 0x8b, 0x05, 0xac, 0x8a, - 0x4f, 0xaa, 0xea, 0x67, 0xb5, 0x94, 0xd7, 0x00, 0xe7, 0xf7, 0x43, 0xdb, 0x80, 0x3a, 0xc6, 0x4e, - 0x1a, 0xda, 0x00, 0x49, 0x44, 0x56, 0x32, 0xd0, 0x70, 0x0e, 0x06, 0x7a, 0x99, 0x19, 0xa6, 0x49, - 0xba, 0x21, 0xb1, 0xf8, 0x27, 0x46, 0x4f, 0x0a, 0xec, 0x32, 0x5b, 0x48, 0x56, 0xe1, 0x74, 0x5b, - 0xfd, 0x5f, 0x56, 0x60, 0x84, 0xbd, 0x56, 0xbc, 0x35, 0xcc, 0xf5, 0xd8, 0x50, 0x0b, 0x5f, 0xb0, - 0xdb, 0xa9, 0x17, 0xec, 0x67, 0xca, 0xa3, 0xe8, 0xff, 0x84, 0xfd, 0x61, 0xb8, 0xc8, 0x9a, 0x2d, - 0x58, 0x4c, 0x22, 0x0d, 0x88, 0xb5, 0x60, 0x59, 0xcc, 0x7b, 0xf4, 0x60, 0x0d, 0xdc, 0x83, 0x30, - 0xd4, 0xf3, 0x9d, 0xb4, 0xcb, 0xf3, 0x1d, 0xbc, 0x8c, 0x69, 0xb9, 0xfe, 0xba, 0x06, 0x33, 0x0c, - 0x76, 0xdd, 0x27, 0x8c, 0xe3, 0x30, 0x9c, 0x00, 0x6d, 0x43, 0xd5, 0x17, 0x7a, 0x28, 0xb1, 0x36, - 0xcb, 0xa5, 0x3f, 0x4d, 0x81, 0x8b, 0x05, 0x4c, 0x91, 0x66, 0x4c, 0xfc, 0xc2, 0x12, 0x97, 0xfe, - 0xc3, 0x51, 0x98, 0x2d, 0xea, 0x84, 0xbe, 0xa0, 0xc1, 0x45, 0x33, 0xbe, 0xed, 0x16, 0x7a, 0xe1, - 0xa6, 0xe7, 0xdb, 0xa1, 0x2d, 0x9e, 0xf1, 0x4a, 0x8a, 0x01, 0xf5, 0x05, 0x39, 0x2a, 0x16, 0x50, - 0xa6, 0x9e, 0x8b, 0x01, 0x17, 0x60, 0x46, 0xaf, 0x01, 0x6c, 0xc5, 0x11, 0xec, 0x2a, 0xe5, 0xd3, - 0xbd, 0xb3, 0xcf, 0x56, 0xa2, 0xdc, 0x45, 0x83, 0x62, 0x4a, 0x1d, 0xa5, 0x5c, 0x41, 0xc7, 0x72, - 0xcd, 0x07, 0x9b, 0x37, 0xc9, 0x6e, 0xd7, 0xb0, 0xfd, 0x41, 0x72, 0xcd, 0xf3, 0x3d, 0xd8, 0xba, - 0x21, 0x40, 0x25, 0x91, 0x2b, 0xe5, 0x0a, 0x3a, 0xf4, 0x19, 0x0d, 0xa6, 0x38, 0xb3, 0x2b, 0xcc, - 0xf4, 0x04, 0xf1, 0x59, 0x2d, 0x3d, 0x80, 0x5b, 0x2a, 0x34, 0x39, 0x06, 0xf6, 0xa2, 0x95, 0xac, - 0x4a, 0xe2, 0x45, 0x6f, 0x68, 0x70, 0x36, 0x99, 0xaf, 0xef, 0x26, 0xd9, 0x15, 0x02, 0x2d, 0x2e, - 0x3f, 0x1d, 0x69, 0x88, 0x72, 0x44, 0x4c, 0x70, 0xc9, 0x56, 0x67, 0xc7, 0xc0, 0x46, 0x46, 0x42, - 0xd3, 0x5a, 0x72, 0x4d, 0x7f, 0x97, 0x79, 0xcf, 0xd0, 0x91, 0x8d, 0x0e, 0x38, 0xb2, 0xa5, 0xdb, - 0xf5, 0x46, 0x02, 0x62, 0x72, 0x64, 0xd9, 0xea, 0xec, 0x18, 0xf4, 0x1f, 0x0c, 0xc3, 0xe5, 0xfe, - 0xc0, 0xd0, 0x33, 0x91, 0x3b, 0x08, 0xa7, 0x2d, 0x8f, 0xa6, 0xdd, 0x41, 0x66, 0x73, 0x0e, 0x69, - 0xc2, 0x35, 0xc4, 0x07, 0xe4, 0x18, 0x41, 0x58, 0xf7, 0x3a, 0x5d, 0x87, 0x44, 0x6c, 0x69, 0x99, - 0x58, 0x67, 0xfb, 0x22, 0xf2, 0x58, 0x12, 0x12, 0xce, 0x81, 0x1e, 0xe1, 0xe4, 0x09, 0x79, 0x25, - 0xce, 0xa1, 0xf2, 0x38, 0x93, 0x90, 0x70, 0x0e, 0x74, 0xf4, 0xba, 0x06, 0x73, 0xc9, 0xe2, 0x6b, - 0xb6, 0x6b, 0x07, 0x9b, 0x22, 0x06, 0xde, 0xd1, 0xbd, 0x51, 0x58, 0xd6, 0x87, 0xe5, 0x42, 0x88, - 0xb8, 0x0f, 0x36, 0xf4, 0x39, 0x0d, 0x2e, 0xa5, 0xe6, 0x25, 0x11, 0x91, 0xef, 0xe8, 0x8e, 0x29, - 0xcc, 0x59, 0x7b, 0xb9, 0x18, 0x24, 0xee, 0x87, 0x4f, 0xff, 0x78, 0x05, 0xee, 0x2b, 0xa0, 0x6d, - 0x05, 0x8b, 0xa5, 0x9d, 0xe8, 0x62, 0xfd, 0x08, 0x36, 0x25, 0x33, 0xeb, 0x67, 0x73, 0xf0, 0x16, - 0x31, 0xeb, 0x67, 0x63, 0x2d, 0xb0, 0xa5, 0xf9, 0x03, 0x0d, 0xce, 0x66, 0x42, 0xe8, 0x1d, 0xca, - 0x28, 0xfc, 0xd4, 0xcc, 0x3c, 0xde, 0x11, 0x87, 0xcb, 0x1d, 0x8a, 0x5d, 0x0c, 0xd3, 0xa1, 0x72, - 0xf5, 0xe7, 0x61, 0x2a, 0x61, 0x4a, 0x23, 0xe3, 0x87, 0x68, 0xb9, 0xf1, 0x43, 0xd4, 0xf0, 0x20, - 0x95, 0x7e, 0xe1, 0x41, 0xf4, 0x4f, 0x56, 0x60, 0xae, 0xf8, 0x42, 0xfb, 0x6b, 0xb3, 0xeb, 0xe5, - 0xc9, 0xcf, 0x32, 0x16, 0x7f, 0x6d, 0xe6, 0x40, 0x5e, 0xb3, 0x85, 0xdc, 0xc4, 0xdf, 0x5c, 0xb3, - 0x7f, 0x73, 0xcd, 0x1e, 0xc3, 0x35, 0xfb, 0xd5, 0x33, 0xe2, 0x8a, 0x61, 0x2f, 0x6f, 0x2f, 0xc1, - 0x28, 0x0b, 0xfe, 0x13, 0x49, 0x46, 0x4f, 0x95, 0x0e, 0x2a, 0x14, 0x70, 0x6d, 0x06, 0xff, 0x1f, - 0x0b, 0xa8, 0xa8, 0x01, 0x33, 0xa6, 0xe3, 0xf5, 0x2c, 0x91, 0xd0, 0x71, 0x35, 0x56, 0x9c, 0xc8, - 0x10, 0x8e, 0xf5, 0x54, 0x3d, 0xce, 0xf4, 0x40, 0x98, 0xbf, 0xdd, 0xf1, 0x5d, 0xf3, 0xbe, 0x92, - 0x66, 0xac, 0x3c, 0x51, 0x81, 0x7c, 0xb3, 0x7b, 0x05, 0x80, 0x44, 0x97, 0x45, 0xe4, 0xfd, 0xf8, - 0x74, 0xb9, 0xe0, 0x94, 0xf2, 0xca, 0x89, 0x94, 0x0c, 0xb2, 0x28, 0xc0, 0x0a, 0x12, 0xe4, 0xc3, - 0xc4, 0xa6, 0xbd, 0x4e, 0x7c, 0x37, 0xce, 0x03, 0x5f, 0x52, 0x15, 0x70, 0x23, 0x06, 0xc3, 0xf5, - 0x6c, 0x4a, 0x01, 0x56, 0x91, 0x20, 0x9f, 0x8b, 0x9d, 0xfc, 0x99, 0x64, 0x90, 0x64, 0xf1, 0xf1, - 0xfb, 0x4b, 0xfc, 0x9d, 0x71, 0x19, 0x56, 0xb0, 0x50, 0x9c, 0xae, 0x8c, 0xfc, 0x35, 0xc8, 0xcb, - 0x5b, 0x1c, 0x3f, 0x2c, 0xc6, 0x19, 0x97, 0x61, 0x05, 0x0b, 0x9d, 0xdb, 0x4e, 0x1c, 0xed, 0x4d, - 0xe8, 0xd3, 0x9f, 0x19, 0x30, 0xea, 0x9e, 0xd0, 0x61, 0xc6, 0x05, 0x58, 0x45, 0x82, 0x5c, 0x80, - 0x8e, 0x0c, 0x02, 0x27, 0x1e, 0xe4, 0x4a, 0x7d, 0x67, 0x1c, 0x4a, 0x8e, 0x0b, 0xd2, 0xf1, 0x6f, - 0xac, 0x60, 0x40, 0x2f, 0x2b, 0xcf, 0xbe, 0x50, 0x5e, 0x13, 0x7c, 0xa8, 0x27, 0xdf, 0xf7, 0xc6, - 0x0a, 0xd1, 0x09, 0x76, 0x5e, 0x2f, 0x29, 0xca, 0xd0, 0x7b, 0x7b, 0xb5, 0x49, 0x46, 0x43, 0x32, - 0xca, 0xd1, 0xd8, 0x70, 0x76, 0xb2, 0xaf, 0xe1, 0xec, 0x75, 0x2a, 0x88, 0x2b, 0x8e, 0x2d, 0x8c, - 0x30, 0x4c, 0xb1, 0x2e, 0x32, 0x68, 0x60, 0x2b, 0xdd, 0x00, 0x67, 0xfb, 0x70, 0x66, 0x8b, 0x58, - 0xac, 0xff, 0xb4, 0xca, 0x6c, 0xf1, 0x32, 0x2c, 0x6b, 0xd1, 0x36, 0x4c, 0x06, 0x8a, 0x25, 0xae, - 0xc8, 0x16, 0x38, 0xc0, 0x5b, 0xad, 0xb0, 0xc2, 0x65, 0x21, 0x91, 0xd4, 0x12, 0x9c, 0xc0, 0x83, - 0x5e, 0x83, 0xf1, 0x48, 0x39, 0x1e, 0xcc, 0xce, 0x94, 0x77, 0x43, 0xcd, 0x0f, 0xfc, 0x17, 0x6b, - 0xbb, 0xa3, 0xaa, 0x00, 0xc7, 0xf8, 0x50, 0x2f, 0x19, 0x82, 0xe2, 0xec, 0xb1, 0xb8, 0xdd, 0x4b, - 0x4b, 0xb9, 0xa2, 0xf0, 0x13, 0xa8, 0x0e, 0x67, 0xc9, 0x4e, 0xd7, 0x0b, 0x7a, 0x3e, 0x61, 0x31, - 0x47, 0xd9, 0xf2, 0xa0, 0xf8, 0x31, 0x77, 0x29, 0x5d, 0x89, 0xb3, 0xed, 0xd1, 0xa7, 0x35, 0x98, - 0xe1, 0xc9, 0x16, 0xe9, 0x5d, 0xe6, 0xb9, 0xc4, 0x0d, 0x03, 0x96, 0x4d, 0xb0, 0xa4, 0xa7, 0x68, - 0x2b, 0x05, 0x8b, 0xa7, 0xc7, 0x49, 0x97, 0xe2, 0x0c, 0x4e, 0xba, 0x73, 0x54, 0xc7, 0x7d, 0x96, - 0x94, 0xb0, 0xe4, 0xce, 0x51, 0x83, 0x02, 0xf0, 0x9d, 0xa3, 0x96, 0xe0, 0x04, 0x1e, 0xfd, 0x3f, - 0x6a, 0x00, 0x52, 0xe9, 0x7b, 0x1a, 0xcf, 0x4c, 0x56, 0x42, 0x0f, 0xbe, 0x38, 0x90, 0x92, 0x9a, - 0x14, 0x3e, 0x36, 0xfd, 0x89, 0x06, 0xd3, 0x71, 0xb3, 0x53, 0x90, 0x74, 0xcd, 0xa4, 0xa4, 0xfb, - 0xc1, 0xc1, 0xbe, 0xab, 0x40, 0xdc, 0xfd, 0x7f, 0x15, 0xf5, 0xab, 0x18, 0x73, 0xb5, 0x9d, 0x30, - 0x9d, 0xa0, 0xa8, 0x6f, 0x0c, 0x62, 0x3a, 0xa1, 0xfa, 0x04, 0xc7, 0xdf, 0x9b, 0x63, 0x4a, 0xf1, - 0xf7, 0x12, 0xac, 0xcd, 0x00, 0x9e, 0xef, 0x92, 0x8f, 0x89, 0x50, 0xf3, 0x09, 0x38, 0x88, 0xcf, - 0x79, 0x45, 0xa5, 0x78, 0xdc, 0x08, 0xe3, 0x43, 0xe5, 0xdc, 0xad, 0x95, 0x0f, 0xee, 0x4b, 0xe7, - 0xf4, 0x6f, 0x4d, 0xc1, 0x84, 0xf2, 0x3e, 0x92, 0x32, 0x04, 0xd1, 0x4e, 0xc3, 0x10, 0x24, 0x84, - 0x09, 0x53, 0x86, 0xe2, 0x8e, 0xa6, 0x7d, 0x40, 0x9c, 0x92, 0xd2, 0xc6, 0x41, 0xbe, 0x03, 0xac, - 0xa2, 0xa1, 0x3c, 0x81, 0xdc, 0x63, 0x43, 0xc7, 0x60, 0x9e, 0xd3, 0x6f, 0x5f, 0x3d, 0x01, 0x10, - 0xb1, 0x96, 0xc4, 0x12, 0x01, 0x1a, 0x65, 0x0a, 0x9b, 0x66, 0x70, 0x43, 0xd6, 0x61, 0xa5, 0x1d, - 0x7a, 0x15, 0xa6, 0x1c, 0x35, 0xa7, 0x83, 0xe0, 0x7b, 0x4b, 0x79, 0x34, 0x25, 0x92, 0x43, 0x70, - 0x85, 0x7f, 0xa2, 0x08, 0x27, 0x51, 0xd1, 0x6d, 0xe0, 0x44, 0xf9, 0x5a, 0x06, 0x32, 0x35, 0x93, - 0x59, 0x5f, 0xe2, 0x6d, 0x20, 0x8b, 0x02, 0xac, 0x20, 0x29, 0xb0, 0x07, 0x1a, 0x2b, 0x65, 0x0f, - 0xd4, 0x83, 0x73, 0x3e, 0x09, 0xfd, 0xdd, 0xfa, 0xae, 0xc9, 0xd2, 0x18, 0xf9, 0x21, 0x13, 0x19, - 0xab, 0xe5, 0x42, 0x26, 0xe1, 0x2c, 0x28, 0x9c, 0x07, 0x3f, 0xc1, 0x53, 0x8d, 0xf7, 0xe5, 0xa9, - 0xde, 0x0b, 0x13, 0x21, 0x31, 0x37, 0x5d, 0xdb, 0x34, 0x9c, 0x66, 0x43, 0x44, 0x2f, 0x8c, 0xd9, - 0x83, 0xb8, 0x0a, 0xab, 0xed, 0xd0, 0x22, 0x0c, 0xf5, 0x6c, 0x4b, 0x30, 0x96, 0x3f, 0x2e, 0x5f, - 0x1a, 0x9b, 0x8d, 0x7b, 0x7b, 0xb5, 0xb7, 0xc7, 0x06, 0x36, 0xf2, 0xab, 0xae, 0x76, 0xb7, 0xda, - 0x57, 0xc3, 0xdd, 0x2e, 0x09, 0xe6, 0xef, 0x34, 0x1b, 0x98, 0x76, 0xce, 0xb3, 0x95, 0x9a, 0x3c, - 0x82, 0xad, 0xd4, 0x17, 0x35, 0x38, 0x67, 0xa4, 0x1f, 0x49, 0x49, 0x30, 0x3b, 0x55, 0x9e, 0x5a, - 0xe6, 0x3f, 0xbc, 0xc6, 0x91, 0xab, 0x17, 0xb2, 0xe8, 0x70, 0xde, 0x18, 0x90, 0x0f, 0xa8, 0x63, - 0xb7, 0x65, 0xea, 0x14, 0xb1, 0xea, 0xd3, 0xe5, 0x74, 0x26, 0x2b, 0x19, 0x48, 0x38, 0x07, 0x3a, - 0xba, 0x0b, 0x13, 0x66, 0xac, 0x3e, 0x12, 0xcc, 0x71, 0xe3, 0x38, 0xde, 0x72, 0xb9, 0x10, 0xa5, - 0xea, 0xa6, 0x54, 0x4c, 0x52, 0x59, 0xa3, 0x48, 0xb0, 0x42, 0x61, 0xc1, 0xbe, 0x7a, 0xa6, 0xbc, - 0xb2, 0x26, 0x1f, 0x22, 0xee, 0x83, 0x8d, 0x05, 0x2a, 0x72, 0x92, 0x19, 0x8e, 0x58, 0x7e, 0xed, - 0x92, 0x2e, 0xca, 0xa9, 0x64, 0x49, 0x7c, 0x6b, 0xa6, 0x0a, 0x71, 0x1a, 0xa1, 0xfe, 0x1d, 0x4d, - 0xe8, 0x9b, 0x4f, 0xd1, 0xc0, 0xe8, 0xa4, 0x2d, 0x20, 0xf4, 0xbf, 0xd0, 0x20, 0xc3, 0x6a, 0xa3, - 0x75, 0x18, 0xa3, 0x20, 0x1a, 0xab, 0x2d, 0xf1, 0x59, 0x1f, 0x28, 0x77, 0x5d, 0x32, 0x10, 0x5c, - 0x79, 0x2f, 0x7e, 0xe0, 0x08, 0x30, 0x65, 0xde, 0x5d, 0x25, 0x80, 0xb2, 0xf8, 0xc2, 0x52, 0xfc, - 0x88, 0x1a, 0x88, 0x99, 0x33, 0xef, 0x6a, 0x09, 0x4e, 0xe0, 0xd1, 0x97, 0x01, 0x62, 0xf1, 0x68, - 0x60, 0x9b, 0xb3, 0x1f, 0x8c, 0xc0, 0x85, 0x41, 0xdd, 0x63, 0x58, 0x62, 0x1d, 0xb2, 0x6d, 0x9b, - 0xe1, 0xc2, 0x46, 0x48, 0xfc, 0x5b, 0xb7, 0x56, 0x64, 0x26, 0xf8, 0x92, 0x99, 0x7d, 0x98, 0x1d, - 0xc4, 0x52, 0x2e, 0x44, 0x5c, 0x80, 0x89, 0x89, 0x86, 0x22, 0xd1, 0x2f, 0xa6, 0xcc, 0x24, 0x4b, - 0xf3, 0xce, 0xc3, 0xb4, 0x70, 0xd1, 0x30, 0x5d, 0x89, 0xb3, 0xed, 0xd3, 0x40, 0x96, 0xed, 0x8e, - 0xcd, 0x73, 0xa7, 0x68, 0x59, 0x20, 0xac, 0x12, 0x67, 0xdb, 0xab, 0x40, 0xf8, 0x4a, 0xd1, 0xd3, - 0x3e, 0x92, 0x05, 0x22, 0x2b, 0x71, 0xb6, 0x3d, 0xb2, 0xe0, 0x01, 0x9f, 0x98, 0x5e, 0xa7, 0x43, - 0x5c, 0x8b, 0xe7, 0xac, 0x33, 0xfc, 0xb6, 0xed, 0x5e, 0xf3, 0x0d, 0xd6, 0x90, 0x69, 0xdc, 0xb4, - 0xc5, 0x2b, 0xfb, 0x7b, 0xb5, 0x07, 0x70, 0x9f, 0x76, 0xb8, 0x2f, 0x14, 0xd4, 0x81, 0x33, 0x3d, - 0x96, 0x6d, 0xc1, 0x6f, 0xba, 0x21, 0xf1, 0xb7, 0x0d, 0x47, 0xa8, 0xd5, 0x4a, 0x25, 0xeb, 0xbd, - 0x93, 0x04, 0x85, 0xd3, 0xb0, 0xd1, 0x2e, 0xe5, 0x3b, 0xc4, 0x70, 0x14, 0x94, 0xd5, 0xf2, 0xa9, - 0xa7, 0x70, 0x16, 0x1c, 0xce, 0xc3, 0xa1, 0x7f, 0x51, 0x03, 0x61, 0x60, 0x8f, 0x1e, 0x48, 0x3c, - 0x15, 0x56, 0x53, 0xcf, 0x84, 0x0f, 0x08, 0x7f, 0xf1, 0x4a, 0x5c, 0xab, 0xf8, 0x8a, 0xbf, 0x53, - 0x89, 0xff, 0x33, 0x1e, 0xd3, 0x3e, 0x0e, 0x59, 0xc9, 0x57, 0xf2, 0x2e, 0x18, 0x27, 0xdc, 0xa6, - 0x41, 0x72, 0xb4, 0xcc, 0x69, 0x61, 0x29, 0x2a, 0xc4, 0x71, 0xbd, 0xfe, 0xc7, 0x1a, 0x08, 0x08, - 0x2c, 0xbb, 0xce, 0xa1, 0xb2, 0xac, 0x1c, 0x68, 0x2d, 0xa8, 0x64, 0x87, 0x19, 0x2a, 0xcc, 0x0e, - 0x73, 0x42, 0x49, 0x53, 0xbe, 0xae, 0xc1, 0x99, 0x64, 0x40, 0xa6, 0x00, 0xbd, 0x03, 0xc6, 0x44, - 0xc8, 0x46, 0x11, 0x73, 0x8d, 0xc7, 0x96, 0xe0, 0x45, 0x38, 0xaa, 0x4b, 0x6a, 0xb5, 0x06, 0x10, - 0x31, 0xf3, 0xe3, 0x42, 0x1d, 0x20, 0xed, 0xfd, 0xe9, 0x34, 0x8c, 0xf2, 0x78, 0x7f, 0x94, 0xa6, - 0xe5, 0xf8, 0x19, 0xdf, 0x2c, 0x1f, 0x56, 0xb0, 0x8c, 0x63, 0xa8, 0x1a, 0x58, 0xbe, 0xd2, 0x37, - 0xb0, 0x3c, 0xe6, 0xc9, 0xa8, 0x06, 0x78, 0xc9, 0xa8, 0xe3, 0xa6, 0xc8, 0x41, 0x1d, 0x25, 0xa2, - 0x0a, 0x13, 0x2a, 0xfe, 0xe1, 0xf2, 0x9c, 0x1b, 0x9f, 0x00, 0x45, 0xd1, 0x3f, 0xdd, 0x47, 0xc9, - 0x1f, 0x07, 0x54, 0x1b, 0x29, 0x6f, 0xbd, 0x2b, 0xa6, 0xfc, 0x10, 0x01, 0xd5, 0xe4, 0x41, 0x1a, - 0x2d, 0x3c, 0x48, 0x1b, 0x30, 0x26, 0x8e, 0x82, 0x20, 0x8e, 0x1f, 0x18, 0x20, 0xab, 0x93, 0x12, - 0x03, 0x98, 0x17, 0xe0, 0x08, 0x38, 0xbd, 0x71, 0x3b, 0xc6, 0x8e, 0xdd, 0xe9, 0x75, 0x18, 0x45, - 0x1c, 0x51, 0x9b, 0xb2, 0x62, 0x1c, 0xd5, 0xb3, 0xa6, 0xdc, 0xe8, 0x99, 0x09, 0x52, 0x6a, 0x53, - 0x5e, 0x8c, 0xa3, 0x7a, 0xf4, 0x22, 0x54, 0x3b, 0xc6, 0x4e, 0xab, 0xe7, 0xb7, 0x89, 0x50, 0xee, - 0x17, 0xf3, 0x78, 0xbd, 0xd0, 0x76, 0xe6, 0xa9, 0xf8, 0x1f, 0xfa, 0xf3, 0x4d, 0x37, 0xbc, 0xe5, - 0xb7, 0x42, 0x5f, 0xe6, 0x8d, 0x59, 0x11, 0x50, 0xb0, 0x84, 0x87, 0x1c, 0x98, 0xee, 0x18, 0x3b, - 0x77, 0x5c, 0x43, 0xa6, 0x7a, 0x9f, 0x28, 0x89, 0x81, 0x59, 0x55, 0xac, 0x24, 0x60, 0xe1, 0x14, - 0xec, 0x1c, 0x03, 0x8e, 0xc9, 0x93, 0x32, 0xe0, 0x58, 0x90, 0x6e, 0x64, 0x5c, 0x6e, 0xbb, 0x3f, - 0xcf, 0x2b, 0xad, 0xbf, 0x8b, 0xd8, 0x4b, 0xd2, 0x45, 0x6c, 0xba, 0xfc, 0x0b, 0x68, 0x1f, 0xf7, - 0xb0, 0x1e, 0x4c, 0x50, 0x0e, 0x9b, 0x97, 0x52, 0xc1, 0xaa, 0xb4, 0x0a, 0xb2, 0x21, 0xc1, 0x28, - 0xa9, 0x43, 0x63, 0xd0, 0x58, 0xc5, 0x83, 0x6e, 0xf1, 0x54, 0xe0, 0x0e, 0x09, 0xe3, 0x26, 0x4c, - 0xa0, 0x9f, 0xe1, 0x8f, 0x2c, 0x51, 0xe6, 0xee, 0x4c, 0x03, 0x9c, 0xdf, 0x2f, 0x0e, 0x75, 0x72, - 0x36, 0x3f, 0xd4, 0x09, 0xfa, 0xc5, 0x3c, 0x75, 0x3d, 0x2a, 0xef, 0xf2, 0xca, 0x69, 0x43, 0x69, - 0xa5, 0xfd, 0xef, 0x68, 0x30, 0xdb, 0x29, 0xc8, 0xb1, 0x29, 0x5e, 0x11, 0x6e, 0x0f, 0x40, 0x1f, - 0x0a, 0xf3, 0x76, 0x2e, 0x3e, 0xbc, 0xbf, 0x57, 0x3b, 0x30, 0xbb, 0x27, 0x2e, 0x1c, 0xdb, 0xa0, - 0xce, 0xfd, 0x83, 0x44, 0x9e, 0xfc, 0x75, 0x0d, 0x66, 0xd2, 0x97, 0x80, 0x9a, 0xbd, 0x5c, 0x3b, - 0xd9, 0xec, 0xe5, 0x8a, 0x39, 0x56, 0xa5, 0x8f, 0x39, 0xd6, 0xd3, 0x70, 0x31, 0x7f, 0x6f, 0x50, - 0x8e, 0xcc, 0x70, 0x1c, 0xef, 0xae, 0x90, 0x84, 0xe2, 0x34, 0x47, 0xb4, 0x10, 0xf3, 0x3a, 0xfd, - 0xa3, 0x90, 0x8e, 0x15, 0x8c, 0x5e, 0x86, 0xf1, 0x20, 0xd8, 0xe4, 0x61, 0x20, 0xc5, 0x47, 0x96, - 0x13, 0x81, 0xa3, 0x58, 0x92, 0xc2, 0xf3, 0x35, 0xfa, 0x89, 0x63, 0xf0, 0x8b, 0x2f, 0x7c, 0xf3, - 0xfb, 0x97, 0xdf, 0xf6, 0xed, 0xef, 0x5f, 0x7e, 0xdb, 0x77, 0xbf, 0x7f, 0xf9, 0x6d, 0x3f, 0xb7, - 0x7f, 0x59, 0xfb, 0xe6, 0xfe, 0x65, 0xed, 0xdb, 0xfb, 0x97, 0xb5, 0xef, 0xee, 0x5f, 0xd6, 0xfe, - 0xeb, 0xfe, 0x65, 0xed, 0xf3, 0xff, 0xed, 0xf2, 0xdb, 0x5e, 0x7c, 0x3c, 0xc6, 0x7e, 0x35, 0x42, - 0x1a, 0xff, 0xd3, 0xdd, 0x6a, 0x5f, 0xa5, 0xd8, 0x23, 0x0f, 0x34, 0x86, 0xfd, 0xff, 0x07, 0x00, - 0x00, 0xff, 0xff, 0x01, 0xc2, 0xb9, 0xda, 0x08, 0xe1, 0x00, 0x00, + // 11721 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x6c, 0x24, 0xc9, + 0x75, 0x18, 0xae, 0x1e, 0x7e, 0x0d, 0x1f, 0xc9, 0x5d, 0x6e, 0xed, 0xc7, 0x71, 0xb9, 0x77, 0xcb, + 0x53, 0xdf, 0x49, 0xbf, 0xbb, 0x9f, 0x64, 0xae, 0xef, 0x74, 0xfa, 0xb8, 0x95, 0x4e, 0x27, 0x72, + 0x86, 0xbb, 0x3b, 0x5a, 0x92, 0xcb, 0xab, 0xe1, 0xde, 0x9d, 0x4e, 0xce, 0x59, 0xcd, 0xee, 0xe2, + 0xb0, 0x8f, 0x3d, 0xdd, 0x73, 0xdd, 0x3d, 0x5c, 0xce, 0x9d, 0x14, 0x59, 0x8a, 0x3e, 0x2c, 0xd9, + 0x32, 0x0c, 0x01, 0x8e, 0x22, 0xc9, 0x81, 0xcf, 0x30, 0x1c, 0x27, 0x70, 0xe0, 0x04, 0x49, 0x6c, + 0xc0, 0x36, 0x02, 0x18, 0x02, 0x02, 0x4b, 0x86, 0x62, 0x28, 0x72, 0x82, 0x28, 0x40, 0x44, 0x47, + 0x8c, 0x23, 0x07, 0x48, 0x60, 0x04, 0x30, 0x82, 0x20, 0x1b, 0x23, 0x08, 0xea, 0xab, 0xbb, 0xfa, + 0x6b, 0x48, 0xf6, 0x90, 0x94, 0x0e, 0xf6, 0x5f, 0xe4, 0xd4, 0xab, 0x7a, 0xaf, 0xba, 0x3e, 0x5e, + 0xbd, 0xf7, 0xea, 0xd5, 0x7b, 0xb0, 0xd8, 0xb2, 0xc3, 0xad, 0xee, 0xc6, 0xbc, 0xe9, 0xb5, 0xaf, + 0xb5, 0x0c, 0xdf, 0x22, 0x2e, 0xf1, 0xe3, 0x7f, 0x3a, 0xdb, 0xad, 0x6b, 0x46, 0xc7, 0x0e, 0xae, + 0x99, 0x9e, 0x4f, 0xae, 0xed, 0x3c, 0xb1, 0x41, 0x42, 0xe3, 0x89, 0x6b, 0x2d, 0x0a, 0x33, 0x42, + 0x62, 0xcd, 0x77, 0x7c, 0x2f, 0xf4, 0xd0, 0x93, 0x31, 0x8e, 0x79, 0xd9, 0x34, 0xfe, 0xa7, 0xb3, + 0xdd, 0x9a, 0xa7, 0x38, 0xe6, 0x29, 0x8e, 0x79, 0x81, 0x63, 0xf6, 0x27, 0x54, 0xba, 0x5e, 0xcb, + 0xbb, 0xc6, 0x50, 0x6d, 0x74, 0x37, 0xd9, 0x2f, 0xf6, 0x83, 0xfd, 0xc7, 0x49, 0xcc, 0x3e, 0xbe, + 0xfd, 0xbe, 0x60, 0xde, 0xf6, 0x68, 0x67, 0xae, 0x19, 0xdd, 0xd0, 0x0b, 0x4c, 0xc3, 0xb1, 0xdd, + 0xd6, 0xb5, 0x9d, 0x4c, 0x6f, 0x66, 0x75, 0xa5, 0xaa, 0xe8, 0x76, 0xdf, 0x3a, 0xfe, 0x86, 0x61, + 0xe6, 0xd5, 0x79, 0x2a, 0xae, 0xd3, 0x36, 0xcc, 0x2d, 0xdb, 0x25, 0x7e, 0x4f, 0x0e, 0xc8, 0x35, + 0x9f, 0x04, 0x5e, 0xd7, 0x37, 0xc9, 0x91, 0x5a, 0x05, 0xd7, 0xda, 0x24, 0x34, 0xf2, 0x68, 0x5d, + 0x2b, 0x6a, 0xe5, 0x77, 0xdd, 0xd0, 0x6e, 0x67, 0xc9, 0xbc, 0xe7, 0xa0, 0x06, 0x81, 0xb9, 0x45, + 0xda, 0x46, 0xa6, 0xdd, 0xbb, 0x8a, 0xda, 0x75, 0x43, 0xdb, 0xb9, 0x66, 0xbb, 0x61, 0x10, 0xfa, + 0xe9, 0x46, 0xfa, 0x93, 0x30, 0xb2, 0x60, 0x59, 0x9e, 0x8b, 0x1e, 0x87, 0x31, 0xe2, 0x1a, 0x1b, + 0x0e, 0xb1, 0x66, 0xb4, 0x87, 0xb5, 0xc7, 0xaa, 0x8b, 0x67, 0xbf, 0xb9, 0x37, 0xf7, 0x96, 0xfd, + 0xbd, 0xb9, 0xb1, 0x25, 0x5e, 0x8c, 0x25, 0x5c, 0xff, 0xa5, 0x0a, 0x8c, 0xb2, 0x46, 0x01, 0xfa, + 0xb2, 0x06, 0xe7, 0xb7, 0xbb, 0x1b, 0xc4, 0x77, 0x49, 0x48, 0x82, 0xba, 0x11, 0x6c, 0x6d, 0x78, + 0x86, 0xcf, 0x51, 0x4c, 0x3c, 0x79, 0x73, 0xfe, 0xe8, 0xab, 0x67, 0xfe, 0x76, 0x16, 0xdd, 0xe2, + 0x03, 0xfb, 0x7b, 0x73, 0xe7, 0x73, 0x00, 0x38, 0x8f, 0x38, 0xda, 0x81, 0x49, 0xb7, 0x65, 0xbb, + 0xbb, 0x0d, 0xb7, 0xe5, 0x93, 0x20, 0x98, 0xa9, 0xb0, 0xce, 0x7c, 0xa8, 0x4c, 0x67, 0x56, 0x15, + 0x3c, 0x8b, 0xd3, 0xfb, 0x7b, 0x73, 0x93, 0x6a, 0x09, 0x4e, 0xd0, 0xd1, 0xff, 0xaf, 0x06, 0x67, + 0x17, 0xac, 0xb6, 0x1d, 0x04, 0xb6, 0xe7, 0xae, 0x39, 0xdd, 0x96, 0xed, 0xa2, 0x87, 0x61, 0xd8, + 0x35, 0xda, 0x84, 0x0d, 0xc8, 0xf8, 0xe2, 0xa4, 0x18, 0xd3, 0xe1, 0x55, 0xa3, 0x4d, 0x30, 0x83, + 0xa0, 0xe7, 0x60, 0xd4, 0xf4, 0xdc, 0x4d, 0xbb, 0x25, 0xfa, 0xf9, 0x13, 0xf3, 0x7c, 0x1e, 0xe7, + 0xd5, 0x79, 0x64, 0xdd, 0x13, 0xf3, 0x3f, 0x8f, 0x8d, 0x7b, 0x4b, 0xbb, 0x21, 0x71, 0x29, 0x99, + 0x45, 0xd8, 0xdf, 0x9b, 0x1b, 0xad, 0x31, 0x04, 0x58, 0x20, 0x42, 0x8f, 0x41, 0xd5, 0xb2, 0x03, + 0x3e, 0x99, 0x43, 0x6c, 0x32, 0x27, 0xf7, 0xf7, 0xe6, 0xaa, 0x75, 0x51, 0x86, 0x23, 0x28, 0x5a, + 0x86, 0x0b, 0x74, 0x04, 0x79, 0xbb, 0x26, 0x31, 0x7d, 0x12, 0xd2, 0xae, 0xcd, 0x0c, 0xb3, 0xee, + 0xce, 0xec, 0xef, 0xcd, 0x5d, 0xb8, 0x9d, 0x03, 0xc7, 0xb9, 0xad, 0xf4, 0x1b, 0x50, 0x5d, 0x70, + 0x88, 0x1f, 0xda, 0x6e, 0x0b, 0x5d, 0x87, 0x33, 0xa4, 0x6d, 0xd8, 0x0e, 0x26, 0x26, 0xb1, 0x77, + 0x88, 0x1f, 0xcc, 0x68, 0x0f, 0x0f, 0x3d, 0x36, 0xbe, 0x88, 0xf6, 0xf7, 0xe6, 0xce, 0x2c, 0x25, + 0x20, 0x38, 0x55, 0x53, 0xff, 0x94, 0x06, 0x13, 0x0b, 0x5d, 0xcb, 0x0e, 0xf9, 0x77, 0x21, 0x1f, + 0x26, 0x0c, 0xfa, 0x73, 0xcd, 0x73, 0x6c, 0xb3, 0x27, 0x16, 0xd7, 0xb3, 0x65, 0xe6, 0x73, 0x21, + 0x46, 0xb3, 0x78, 0x76, 0x7f, 0x6f, 0x6e, 0x42, 0x29, 0xc0, 0x2a, 0x11, 0x7d, 0x0b, 0x54, 0x18, + 0xfa, 0x08, 0x4c, 0xf2, 0xcf, 0x5d, 0x31, 0x3a, 0x98, 0x6c, 0x8a, 0x3e, 0x3c, 0xa2, 0xcc, 0x95, + 0x24, 0x34, 0x7f, 0x67, 0xe3, 0x15, 0x62, 0x86, 0x98, 0x6c, 0x12, 0x9f, 0xb8, 0x26, 0xe1, 0xcb, + 0xa6, 0xa6, 0x34, 0xc6, 0x09, 0x54, 0xfa, 0x9f, 0x6a, 0x30, 0xbd, 0xb0, 0x63, 0xd8, 0x8e, 0xb1, + 0x61, 0x3b, 0x76, 0xd8, 0x7b, 0xc9, 0x73, 0xc9, 0x21, 0xd6, 0xcd, 0x5d, 0x78, 0xa0, 0xeb, 0x1a, + 0xbc, 0x9d, 0x43, 0x56, 0xf8, 0x4a, 0x59, 0xef, 0x75, 0x08, 0x5d, 0xf0, 0x74, 0xa4, 0xaf, 0xec, + 0xef, 0xcd, 0x3d, 0x70, 0x37, 0xbf, 0x0a, 0x2e, 0x6a, 0x8b, 0x30, 0x5c, 0x52, 0x40, 0xcf, 0x7b, + 0x4e, 0xb7, 0x2d, 0xb0, 0x0e, 0x31, 0xac, 0xb3, 0xfb, 0x7b, 0x73, 0x97, 0xee, 0xe6, 0xd6, 0xc0, + 0x05, 0x2d, 0xf5, 0x6f, 0x56, 0x60, 0x72, 0xd1, 0x30, 0xb7, 0xbb, 0x9d, 0xc5, 0xae, 0xb9, 0x4d, + 0x42, 0xf4, 0x31, 0xa8, 0x52, 0x76, 0x69, 0x19, 0xa1, 0x21, 0x46, 0xf2, 0x27, 0x0b, 0x57, 0x3d, + 0x9b, 0x44, 0x5a, 0x3b, 0x1e, 0xdb, 0x15, 0x12, 0x1a, 0x8b, 0x48, 0x8c, 0x09, 0xc4, 0x65, 0x38, + 0xc2, 0x8a, 0x36, 0x61, 0x38, 0xe8, 0x10, 0x53, 0xec, 0xa9, 0x7a, 0x99, 0xb5, 0xa2, 0xf6, 0xb8, + 0xd9, 0x21, 0x66, 0x3c, 0x0b, 0xf4, 0x17, 0x66, 0xf8, 0x91, 0x0b, 0xa3, 0x41, 0x68, 0x84, 0xdd, + 0x80, 0x6d, 0xb4, 0x89, 0x27, 0x6f, 0x0c, 0x4c, 0x89, 0x61, 0x5b, 0x3c, 0x23, 0x68, 0x8d, 0xf2, + 0xdf, 0x58, 0x50, 0xd1, 0xff, 0xbd, 0x06, 0xd3, 0x6a, 0xf5, 0x65, 0x3b, 0x08, 0xd1, 0x4f, 0x65, + 0x86, 0x73, 0xfe, 0x70, 0xc3, 0x49, 0x5b, 0xb3, 0xc1, 0x9c, 0x16, 0xe4, 0xaa, 0xb2, 0x44, 0x19, + 0x4a, 0x02, 0x23, 0x76, 0x48, 0xda, 0x7c, 0x59, 0x95, 0xe4, 0xa3, 0x6a, 0x97, 0x17, 0xa7, 0x04, + 0xb1, 0x91, 0x06, 0x45, 0x8b, 0x39, 0x76, 0xfd, 0x63, 0x70, 0x41, 0xad, 0xb5, 0xe6, 0x7b, 0x3b, + 0xb6, 0x45, 0x7c, 0xba, 0x13, 0xc2, 0x5e, 0x27, 0xb3, 0x13, 0xe8, 0xca, 0xc2, 0x0c, 0x82, 0xde, + 0x0e, 0xa3, 0x3e, 0x69, 0xd9, 0x9e, 0xcb, 0x66, 0x7b, 0x3c, 0x1e, 0x3b, 0xcc, 0x4a, 0xb1, 0x80, + 0xea, 0xff, 0xb3, 0x92, 0x1c, 0x3b, 0x3a, 0x8d, 0x68, 0x07, 0xaa, 0x1d, 0x41, 0x4a, 0x8c, 0xdd, + 0xad, 0x41, 0x3f, 0x50, 0x76, 0x3d, 0x1e, 0x55, 0x59, 0x82, 0x23, 0x5a, 0xc8, 0x86, 0x33, 0xf2, + 0xff, 0xda, 0x00, 0xec, 0x9f, 0xb1, 0xd3, 0xb5, 0x04, 0x22, 0x9c, 0x42, 0x8c, 0xd6, 0x61, 0x3c, + 0x60, 0x4c, 0x9a, 0x32, 0xae, 0xa1, 0x62, 0xc6, 0xd5, 0x94, 0x95, 0x04, 0xe3, 0x3a, 0x27, 0xba, + 0x3f, 0x1e, 0x01, 0x70, 0x8c, 0x88, 0x1e, 0x32, 0x01, 0x21, 0x96, 0x72, 0x5c, 0xb0, 0x43, 0xa6, + 0x29, 0xca, 0x70, 0x04, 0xd5, 0xdf, 0x18, 0x06, 0x94, 0x5d, 0xe2, 0xea, 0x08, 0xf0, 0x12, 0x31, + 0xfe, 0x83, 0x8c, 0x80, 0xd8, 0x2d, 0x29, 0xc4, 0xe8, 0x35, 0x98, 0x72, 0x8c, 0x20, 0xbc, 0xd3, + 0xa1, 0xb2, 0x8f, 0x5c, 0x28, 0x13, 0x4f, 0x2e, 0x94, 0x99, 0xe9, 0x65, 0x15, 0xd1, 0xe2, 0xb9, + 0xfd, 0xbd, 0xb9, 0xa9, 0x44, 0x11, 0x4e, 0x92, 0x42, 0xaf, 0xc0, 0x38, 0x2d, 0x58, 0xf2, 0x7d, + 0xcf, 0x17, 0xa3, 0xff, 0x4c, 0x59, 0xba, 0x0c, 0xc9, 0xe2, 0x14, 0x9d, 0x93, 0xe8, 0x27, 0x8e, + 0xd1, 0xa3, 0x0f, 0x03, 0xf2, 0x36, 0x02, 0xe2, 0xef, 0x10, 0xeb, 0x26, 0x17, 0xf4, 0xe8, 0xc7, + 0xd2, 0xd9, 0x19, 0x5a, 0x9c, 0x15, 0xb3, 0x89, 0xee, 0x64, 0x6a, 0xe0, 0x9c, 0x56, 0x68, 0x1b, + 0x50, 0x24, 0x2c, 0x46, 0x0b, 0x60, 0x66, 0xe4, 0xf0, 0xcb, 0xe7, 0x12, 0x25, 0x76, 0x33, 0x83, + 0x02, 0xe7, 0xa0, 0xd5, 0xff, 0x55, 0x05, 0x26, 0xf8, 0x12, 0x59, 0x72, 0x43, 0xbf, 0x77, 0x0a, + 0x07, 0x04, 0x49, 0x1c, 0x10, 0xb5, 0xf2, 0x7b, 0x9e, 0x75, 0xb8, 0xf0, 0x7c, 0x68, 0xa7, 0xce, + 0x87, 0xa5, 0x41, 0x09, 0xf5, 0x3f, 0x1e, 0xfe, 0x9d, 0x06, 0x67, 0x95, 0xda, 0xa7, 0x70, 0x3a, + 0x58, 0xc9, 0xd3, 0xe1, 0xd9, 0x01, 0xbf, 0xaf, 0xe0, 0x70, 0xf0, 0x12, 0x9f, 0xc5, 0x18, 0xf7, + 0x93, 0x00, 0x1b, 0x8c, 0x9d, 0xac, 0xc6, 0x72, 0x52, 0x34, 0xe5, 0x8b, 0x11, 0x04, 0x2b, 0xb5, + 0x12, 0x3c, 0xab, 0xd2, 0x97, 0x67, 0xfd, 0x97, 0x21, 0x38, 0x97, 0x19, 0xf6, 0x2c, 0x1f, 0xd1, + 0x7e, 0x44, 0x7c, 0xa4, 0xf2, 0xa3, 0xe0, 0x23, 0x43, 0xa5, 0xf8, 0xc8, 0xa1, 0xcf, 0x09, 0xe4, + 0x03, 0x6a, 0xdb, 0x2d, 0xde, 0xac, 0x19, 0x1a, 0x7e, 0xb8, 0x6e, 0xb7, 0x89, 0xe0, 0x38, 0xff, + 0xff, 0xe1, 0x96, 0x2c, 0x6d, 0xc1, 0x19, 0xcf, 0x4a, 0x06, 0x13, 0xce, 0xc1, 0xae, 0x7f, 0x77, + 0x18, 0xa0, 0xb6, 0x80, 0xbd, 0x90, 0x77, 0xf6, 0x59, 0x18, 0xe9, 0x6c, 0x19, 0x81, 0x5c, 0x4f, + 0x8f, 0xcb, 0xc5, 0xb8, 0x46, 0x0b, 0xef, 0xef, 0xcd, 0xcd, 0xd4, 0x7c, 0x62, 0x11, 0x37, 0xb4, + 0x0d, 0x27, 0x90, 0x8d, 0x18, 0x0c, 0xf3, 0x76, 0xf4, 0x1b, 0xe8, 0x30, 0xd6, 0xbc, 0x76, 0xc7, + 0x21, 0x14, 0xca, 0xbe, 0xa1, 0x52, 0xee, 0x1b, 0x96, 0x33, 0x98, 0x70, 0x0e, 0x76, 0x49, 0xb3, + 0xe1, 0xda, 0xa1, 0x6d, 0x44, 0x34, 0x87, 0xca, 0xd3, 0x4c, 0x62, 0xc2, 0x39, 0xd8, 0xd1, 0x17, + 0x35, 0x98, 0x4d, 0x16, 0xdf, 0xb0, 0x5d, 0x3b, 0xd8, 0x22, 0x16, 0x23, 0x3e, 0x7c, 0x64, 0xe2, + 0x57, 0xf7, 0xf7, 0xe6, 0x66, 0x97, 0x0b, 0x31, 0xe2, 0x3e, 0xd4, 0xd0, 0x97, 0x34, 0xb8, 0x92, + 0x1a, 0x17, 0xdf, 0x6e, 0xb5, 0x88, 0x2f, 0x7a, 0x73, 0xf4, 0x25, 0x34, 0xb7, 0xbf, 0x37, 0x77, + 0x65, 0xb9, 0x18, 0x25, 0xee, 0x47, 0x4f, 0xff, 0x86, 0x06, 0x43, 0x35, 0xdc, 0x40, 0xef, 0x48, + 0x28, 0x71, 0x0f, 0xa8, 0x4a, 0xdc, 0xfd, 0xbd, 0xb9, 0xb1, 0x1a, 0x6e, 0x28, 0xfa, 0xdc, 0x97, + 0x34, 0x38, 0x67, 0x7a, 0x6e, 0x68, 0xd0, 0x7e, 0x61, 0x2e, 0xe9, 0x48, 0xae, 0x5a, 0x4a, 0x7f, + 0xa9, 0xa5, 0x90, 0x2d, 0x5e, 0x16, 0x1d, 0x38, 0x97, 0x86, 0x04, 0x38, 0x4b, 0x59, 0xff, 0x9e, + 0x06, 0x93, 0x35, 0xc7, 0xeb, 0x5a, 0x6b, 0xbe, 0xb7, 0x69, 0x3b, 0xe4, 0xcd, 0xa1, 0xb4, 0xa9, + 0x3d, 0x2e, 0x3a, 0x94, 0x99, 0x12, 0xa5, 0x56, 0x7c, 0x93, 0x28, 0x51, 0x6a, 0x97, 0x0b, 0xce, + 0xc9, 0x5f, 0x1a, 0x4b, 0x7e, 0x19, 0x3b, 0x29, 0x1f, 0x83, 0xaa, 0x69, 0x2c, 0x76, 0x5d, 0xcb, + 0x89, 0xb4, 0x28, 0xda, 0xcb, 0xda, 0x02, 0x2f, 0xc3, 0x11, 0x14, 0xbd, 0x06, 0x10, 0x1b, 0xd4, + 0xc4, 0x34, 0xdc, 0x18, 0xcc, 0x88, 0xd7, 0x24, 0x61, 0x68, 0xbb, 0xad, 0x20, 0x9e, 0xfa, 0x18, + 0x86, 0x15, 0x6a, 0xe8, 0x13, 0x30, 0x25, 0x06, 0xb9, 0xd1, 0x36, 0x5a, 0xc2, 0xde, 0x50, 0x72, + 0xa4, 0x56, 0x14, 0x44, 0x8b, 0x17, 0x05, 0xe1, 0x29, 0xb5, 0x34, 0xc0, 0x49, 0x6a, 0xa8, 0x07, + 0x93, 0x6d, 0xd5, 0x86, 0x32, 0x5c, 0x5e, 0x9c, 0x51, 0xec, 0x29, 0x8b, 0x17, 0x04, 0xf1, 0xc9, + 0x84, 0xf5, 0x25, 0x41, 0x2a, 0x47, 0x15, 0x1c, 0x39, 0x29, 0x55, 0x90, 0xc0, 0x18, 0x57, 0x86, + 0x83, 0x99, 0x51, 0xf6, 0x81, 0xd7, 0xcb, 0x7c, 0x20, 0xd7, 0xab, 0x63, 0x0b, 0x31, 0xff, 0x1d, + 0x60, 0x89, 0x1b, 0xed, 0xc0, 0x24, 0x3d, 0xd5, 0x9b, 0xc4, 0x21, 0x66, 0xe8, 0xf9, 0x33, 0x63, + 0xe5, 0x2d, 0xb0, 0x4d, 0x05, 0x0f, 0x37, 0xa5, 0xa9, 0x25, 0x38, 0x41, 0x27, 0xb2, 0x15, 0x54, + 0x0b, 0x6d, 0x05, 0x5d, 0x98, 0xd8, 0x51, 0x6c, 0x5a, 0xe3, 0x6c, 0x10, 0x3e, 0x58, 0xa6, 0x63, + 0xb1, 0x81, 0x6b, 0xf1, 0xbc, 0x20, 0x34, 0xa1, 0x1a, 0xc3, 0x54, 0x3a, 0xfa, 0x5e, 0x15, 0xce, + 0xd5, 0x9c, 0x6e, 0x10, 0x12, 0x7f, 0x41, 0x5c, 0x71, 0x10, 0x1f, 0x7d, 0x5a, 0x83, 0x4b, 0xec, + 0xdf, 0xba, 0x77, 0xcf, 0xad, 0x13, 0xc7, 0xe8, 0x2d, 0x6c, 0xd2, 0x1a, 0x96, 0x75, 0x34, 0x0e, + 0x54, 0xef, 0x0a, 0x29, 0x92, 0x19, 0xe7, 0x9a, 0xb9, 0x18, 0x71, 0x01, 0x25, 0xf4, 0x73, 0x1a, + 0x5c, 0xce, 0x01, 0xd5, 0x89, 0x43, 0x42, 0x29, 0xb9, 0x1c, 0xb5, 0x1f, 0x0f, 0xed, 0xef, 0xcd, + 0x5d, 0x6e, 0x16, 0x21, 0xc5, 0xc5, 0xf4, 0xd0, 0x2f, 0x68, 0x30, 0x9b, 0x03, 0xbd, 0x61, 0xd8, + 0x4e, 0xd7, 0x97, 0x42, 0xcd, 0x51, 0xbb, 0xc3, 0x64, 0x8b, 0x66, 0x21, 0x56, 0xdc, 0x87, 0x22, + 0xfa, 0x24, 0x5c, 0x8c, 0xa0, 0x77, 0x5d, 0x97, 0x10, 0x2b, 0x21, 0xe2, 0x1c, 0xb5, 0x2b, 0x97, + 0xf7, 0xf7, 0xe6, 0x2e, 0x36, 0xf3, 0x10, 0xe2, 0x7c, 0x3a, 0xa8, 0x05, 0x0f, 0xc5, 0x80, 0xd0, + 0x76, 0xec, 0xd7, 0xb8, 0x14, 0xb6, 0xe5, 0x93, 0x60, 0xcb, 0x73, 0x2c, 0xc6, 0x2c, 0xb4, 0xc5, + 0xb7, 0xee, 0xef, 0xcd, 0x3d, 0xd4, 0xec, 0x57, 0x11, 0xf7, 0xc7, 0x83, 0x2c, 0x98, 0x0c, 0x4c, + 0xc3, 0x6d, 0xb8, 0x21, 0xf1, 0x77, 0x0c, 0x67, 0x66, 0xb4, 0xd4, 0x07, 0xf2, 0x2d, 0xaa, 0xe0, + 0xc1, 0x09, 0xac, 0xe8, 0x7d, 0x50, 0x25, 0xbb, 0x1d, 0xc3, 0xb5, 0x08, 0x67, 0x0b, 0xe3, 0x8b, + 0x0f, 0xd2, 0xc3, 0x68, 0x49, 0x94, 0xdd, 0xdf, 0x9b, 0x9b, 0x94, 0xff, 0xaf, 0x78, 0x16, 0xc1, + 0x51, 0x6d, 0xf4, 0x71, 0xb8, 0xd0, 0x36, 0x76, 0x57, 0x3d, 0x8b, 0x30, 0x26, 0x17, 0x48, 0x41, + 0xb7, 0x5a, 0xaa, 0x9f, 0xec, 0x6e, 0x63, 0x25, 0x07, 0x1f, 0xce, 0xa5, 0x42, 0xa7, 0xa1, 0x6d, + 0xec, 0xde, 0xf4, 0x0d, 0x93, 0x6c, 0x76, 0x9d, 0x75, 0xe2, 0xb7, 0x6d, 0x97, 0xeb, 0x12, 0xc4, + 0xf4, 0x5c, 0x8b, 0xb2, 0x12, 0xed, 0xb1, 0x11, 0x3e, 0x0d, 0x2b, 0xfd, 0x2a, 0xe2, 0xfe, 0x78, + 0xd0, 0x53, 0x30, 0x69, 0xb7, 0x5c, 0xcf, 0x27, 0xeb, 0x86, 0xed, 0x86, 0xc1, 0x0c, 0x30, 0xb3, + 0x3b, 0x1b, 0xd6, 0x86, 0x52, 0x8e, 0x13, 0xb5, 0xf4, 0xbd, 0x21, 0x18, 0xaf, 0x79, 0xae, 0x65, + 0x33, 0x35, 0xe6, 0x89, 0x84, 0xcd, 0xf4, 0x21, 0x95, 0x0f, 0xde, 0xdf, 0x9b, 0x9b, 0x8a, 0x2a, + 0x2a, 0x8c, 0xf1, 0xe9, 0xc8, 0x50, 0xc1, 0x15, 0xe3, 0xb7, 0x26, 0x2d, 0x0c, 0xf7, 0xf7, 0xe6, + 0xce, 0x46, 0xcd, 0x92, 0x46, 0x07, 0xb4, 0xc3, 0xf5, 0x8f, 0x75, 0xdf, 0x70, 0x03, 0x7b, 0x00, + 0xfd, 0x23, 0xd2, 0x2c, 0x97, 0x33, 0xd8, 0x70, 0x0e, 0x05, 0xf4, 0x0a, 0x9c, 0xa1, 0xa5, 0x77, + 0x3b, 0x96, 0x11, 0x92, 0x92, 0x6a, 0xc7, 0x25, 0x41, 0xf3, 0xcc, 0x72, 0x02, 0x13, 0x4e, 0x61, + 0xe6, 0x36, 0x66, 0x23, 0xf0, 0x5c, 0xb6, 0xdd, 0x12, 0x36, 0x66, 0x5a, 0x8a, 0x05, 0x14, 0x3d, + 0x0e, 0x63, 0x6d, 0x12, 0x04, 0x46, 0x8b, 0xb0, 0xfd, 0x33, 0x1e, 0x1f, 0x92, 0x2b, 0xbc, 0x18, + 0x4b, 0x38, 0x7a, 0x27, 0x8c, 0x98, 0x9e, 0x45, 0x82, 0x99, 0x31, 0x36, 0xc3, 0x54, 0xfb, 0x1a, + 0xa9, 0xd1, 0x82, 0xfb, 0x7b, 0x73, 0xe3, 0x4c, 0x0f, 0xa7, 0xbf, 0x30, 0xaf, 0xa4, 0xff, 0x0a, + 0x95, 0x59, 0x53, 0x42, 0xfa, 0x21, 0x6c, 0xe3, 0xa7, 0x67, 0x66, 0xd6, 0xbf, 0x42, 0x15, 0x06, + 0xcf, 0x0d, 0x7d, 0xcf, 0x59, 0x73, 0x0c, 0x97, 0xa0, 0xcf, 0x69, 0x30, 0xbd, 0x65, 0xb7, 0xb6, + 0xd4, 0xcb, 0x2d, 0x71, 0xb0, 0x95, 0x92, 0xed, 0x6f, 0xa5, 0x70, 0x2d, 0x5e, 0xd8, 0xdf, 0x9b, + 0x9b, 0x4e, 0x97, 0xe2, 0x0c, 0x4d, 0xfd, 0x0b, 0x15, 0xb8, 0x20, 0x7a, 0xe6, 0xd0, 0x93, 0xa6, + 0xe3, 0x78, 0xbd, 0x36, 0x71, 0x4f, 0xe3, 0x1e, 0x4a, 0xce, 0x50, 0xa5, 0x70, 0x86, 0xda, 0x99, + 0x19, 0x1a, 0x2a, 0x33, 0x43, 0xd1, 0x42, 0x3e, 0x60, 0x96, 0xfe, 0x5c, 0x83, 0x99, 0xbc, 0xb1, + 0x38, 0x05, 0x1d, 0xa8, 0x9d, 0xd4, 0x81, 0x6e, 0x95, 0x55, 0x6a, 0xd3, 0x5d, 0x2f, 0xd0, 0x85, + 0x7e, 0x58, 0x81, 0x4b, 0x71, 0xf5, 0x86, 0x1b, 0x84, 0x86, 0xe3, 0x70, 0x33, 0xcf, 0xc9, 0xcf, + 0x7b, 0x27, 0xa1, 0xca, 0xae, 0x0e, 0xf6, 0xa9, 0x6a, 0xdf, 0x0b, 0x2d, 0xcd, 0xbb, 0x29, 0x4b, + 0xf3, 0xda, 0x31, 0xd2, 0xec, 0x6f, 0x74, 0xfe, 0x6f, 0x1a, 0xcc, 0xe6, 0x37, 0x3c, 0x85, 0x45, + 0xe5, 0x25, 0x17, 0xd5, 0x87, 0x8f, 0xef, 0xab, 0x0b, 0x96, 0xd5, 0x3f, 0xab, 0x14, 0x7d, 0x2d, + 0x53, 0xb6, 0x37, 0xe1, 0x2c, 0xd5, 0x82, 0x82, 0x50, 0x98, 0x44, 0x8f, 0xe6, 0x2b, 0x20, 0x6d, + 0x44, 0x67, 0x71, 0x12, 0x07, 0x4e, 0x23, 0x45, 0xab, 0x30, 0x46, 0x55, 0x1f, 0x8a, 0xbf, 0x72, + 0x78, 0xfc, 0xd1, 0x69, 0xd4, 0xe4, 0x6d, 0xb1, 0x44, 0x82, 0x7e, 0x0a, 0xa6, 0xac, 0x68, 0x47, + 0x1d, 0x70, 0x51, 0x98, 0xc6, 0xca, 0x8c, 0xd7, 0x75, 0xb5, 0x35, 0x4e, 0x22, 0xd3, 0xff, 0x4a, + 0x83, 0x07, 0xfb, 0xad, 0x2d, 0xf4, 0x2a, 0x80, 0x29, 0xc5, 0x0b, 0xee, 0x2a, 0x52, 0xd2, 0xbc, + 0x1d, 0x09, 0x29, 0xf1, 0x06, 0x8d, 0x8a, 0x02, 0xac, 0x10, 0xc9, 0xb9, 0x7f, 0xac, 0x9c, 0xd0, + 0xfd, 0xa3, 0xfe, 0xdf, 0x35, 0x95, 0x15, 0xa9, 0x73, 0xfb, 0x66, 0x63, 0x45, 0x6a, 0xdf, 0x0b, + 0xed, 0x6b, 0x7f, 0x52, 0x81, 0x87, 0xf3, 0x9b, 0x28, 0x67, 0xef, 0x87, 0x60, 0xb4, 0xc3, 0xfd, + 0x79, 0x86, 0xd8, 0xd9, 0xf8, 0x18, 0xe5, 0x2c, 0xdc, 0xdb, 0xe6, 0xfe, 0xde, 0xdc, 0x6c, 0x1e, + 0xa3, 0x17, 0x7e, 0x3a, 0xa2, 0x1d, 0xb2, 0x53, 0x56, 0x06, 0x2e, 0xfd, 0xbd, 0xeb, 0x90, 0xcc, + 0xc5, 0xd8, 0x20, 0xce, 0xa1, 0x0d, 0x0b, 0x9f, 0xd2, 0xe0, 0x4c, 0x62, 0x45, 0x07, 0x33, 0x23, + 0x6c, 0x8d, 0x96, 0xba, 0xfa, 0x49, 0x6c, 0x95, 0xf8, 0xe4, 0x4e, 0x14, 0x07, 0x38, 0x45, 0x30, + 0xc5, 0x66, 0xd5, 0x51, 0x7d, 0xd3, 0xb1, 0x59, 0xb5, 0xf3, 0x05, 0x6c, 0xf6, 0x97, 0x2b, 0x45, + 0x5f, 0xcb, 0xd8, 0xec, 0x3d, 0x18, 0x97, 0x7e, 0x9a, 0x92, 0x5d, 0xdc, 0x18, 0xb4, 0x4f, 0x1c, + 0x5d, 0xec, 0xf6, 0x20, 0x4b, 0x02, 0x1c, 0xd3, 0x42, 0x9f, 0xd1, 0x00, 0xe2, 0x89, 0x11, 0x9b, + 0x6a, 0xfd, 0xf8, 0x86, 0x43, 0x11, 0x6b, 0xce, 0xd0, 0x2d, 0xad, 0x2c, 0x0a, 0x85, 0xae, 0xfe, + 0xbf, 0x87, 0x00, 0x65, 0xfb, 0x4e, 0xc5, 0xcd, 0x6d, 0xdb, 0xb5, 0xd2, 0x0a, 0xc1, 0x6d, 0xdb, + 0xb5, 0x30, 0x83, 0x1c, 0x42, 0x20, 0x7d, 0x06, 0xce, 0xb6, 0x1c, 0x6f, 0xc3, 0x70, 0x9c, 0x9e, + 0x70, 0xfd, 0x14, 0x4e, 0x84, 0xe7, 0xe9, 0xc1, 0x74, 0x33, 0x09, 0xc2, 0xe9, 0xba, 0xa8, 0x03, + 0xd3, 0x3e, 0x55, 0x65, 0x4d, 0xdb, 0x61, 0xaa, 0x93, 0xd7, 0x0d, 0x4b, 0xda, 0x4a, 0x98, 0x78, + 0x8f, 0x53, 0xb8, 0x70, 0x06, 0x3b, 0x7a, 0x1b, 0x8c, 0x75, 0x7c, 0xbb, 0x6d, 0xf8, 0x3d, 0xa6, + 0x9c, 0x55, 0x17, 0x27, 0xe8, 0x09, 0xb7, 0xc6, 0x8b, 0xb0, 0x84, 0xa1, 0x8f, 0xc3, 0xb8, 0x63, + 0x6f, 0x12, 0xb3, 0x67, 0x3a, 0x44, 0x18, 0x37, 0xee, 0x1c, 0xcf, 0x92, 0x59, 0x96, 0x68, 0xc5, + 0x95, 0xaa, 0xfc, 0x89, 0x63, 0x82, 0xa8, 0x01, 0xe7, 0xef, 0x79, 0xfe, 0x36, 0xf1, 0x1d, 0x12, + 0x04, 0xcd, 0x6e, 0xa7, 0xe3, 0xf9, 0x21, 0xb1, 0x98, 0x09, 0xa4, 0xca, 0xfd, 0x5b, 0x5f, 0xc8, + 0x82, 0x71, 0x5e, 0x1b, 0xfd, 0x8b, 0x15, 0xb8, 0xd2, 0xa7, 0x13, 0x08, 0xd3, 0xbd, 0x21, 0xc6, + 0x48, 0xac, 0x84, 0xa7, 0xf8, 0x7a, 0x16, 0x85, 0xf7, 0xf7, 0xe6, 0x1e, 0xe9, 0x83, 0xa0, 0x49, + 0x97, 0x22, 0x69, 0xf5, 0x70, 0x8c, 0x06, 0x35, 0x60, 0xd4, 0x8a, 0x2d, 0x82, 0xe3, 0x8b, 0x4f, + 0x50, 0x6e, 0xcd, 0x6d, 0x76, 0x87, 0xc5, 0x26, 0x10, 0xa0, 0x65, 0x18, 0xe3, 0x17, 0xb1, 0x44, + 0x70, 0xfe, 0x27, 0x99, 0x7a, 0xcc, 0x8b, 0x0e, 0x8b, 0x4c, 0xa2, 0xd0, 0xff, 0x97, 0x06, 0x63, + 0x35, 0xcf, 0x27, 0xf5, 0xd5, 0x26, 0xea, 0xc1, 0x84, 0xe2, 0x40, 0x2e, 0xb8, 0x60, 0x49, 0xb6, + 0xc0, 0x30, 0x2e, 0xc4, 0xd8, 0xa4, 0xbb, 0x68, 0x54, 0x80, 0x55, 0x5a, 0xe8, 0x55, 0x3a, 0xe6, + 0xf7, 0x7c, 0x3b, 0xa4, 0x84, 0x07, 0xb9, 0xbf, 0xe2, 0x84, 0xb1, 0xc4, 0xc5, 0x57, 0x54, 0xf4, + 0x13, 0xc7, 0x54, 0xf4, 0x35, 0xca, 0x01, 0xd2, 0xdd, 0x44, 0xd7, 0x61, 0xb8, 0xed, 0x59, 0x72, + 0xde, 0xdf, 0x2e, 0xf7, 0xf7, 0x8a, 0x67, 0xd1, 0xb1, 0xbd, 0x94, 0x6d, 0xc1, 0xac, 0x6c, 0xac, + 0x8d, 0xbe, 0x0a, 0xd3, 0x69, 0xfa, 0xe8, 0x3a, 0x9c, 0x31, 0xbd, 0x76, 0xdb, 0x73, 0x9b, 0xdd, + 0xcd, 0x4d, 0x7b, 0x97, 0x24, 0xfc, 0x78, 0x6b, 0x09, 0x08, 0x4e, 0xd5, 0xd4, 0xbf, 0xae, 0xc1, + 0x10, 0x9d, 0x17, 0x1d, 0x46, 0x2d, 0xaf, 0x6d, 0xd8, 0xae, 0xe8, 0x15, 0xf3, 0x59, 0xae, 0xb3, + 0x12, 0x2c, 0x20, 0xa8, 0x03, 0xe3, 0x52, 0x68, 0x1a, 0xc8, 0x97, 0xa4, 0xbe, 0xda, 0x8c, 0xfc, + 0xef, 0x22, 0x4e, 0x2e, 0x4b, 0x02, 0x1c, 0x13, 0xd1, 0x0d, 0x38, 0x57, 0x5f, 0x6d, 0x36, 0x5c, + 0xd3, 0xe9, 0x5a, 0x64, 0x69, 0x97, 0xfd, 0xa1, 0xbc, 0xc4, 0xe6, 0x25, 0xe2, 0x3b, 0x19, 0x2f, + 0x11, 0x95, 0xb0, 0x84, 0xd1, 0x6a, 0x84, 0xb7, 0x10, 0xce, 0xb6, 0xac, 0x9a, 0x40, 0x82, 0x25, + 0x4c, 0xff, 0x5e, 0x05, 0x26, 0x94, 0x0e, 0x21, 0x07, 0xc6, 0xf8, 0xe7, 0x4a, 0x5f, 0xb7, 0xa5, + 0x92, 0x9f, 0x98, 0xec, 0x35, 0xa7, 0xce, 0x07, 0x34, 0xc0, 0x92, 0x84, 0xca, 0x17, 0x2b, 0x7d, + 0xf8, 0xe2, 0x3c, 0x40, 0x10, 0x7b, 0x7e, 0xf3, 0x2d, 0xc9, 0x8e, 0x1e, 0xc5, 0xdf, 0x5b, 0xa9, + 0x81, 0x1e, 0x14, 0x27, 0x08, 0x77, 0xe6, 0xa8, 0xa6, 0x4e, 0x8f, 0x4d, 0x18, 0x79, 0xcd, 0x73, + 0x49, 0x20, 0xee, 0xb0, 0x8e, 0xe9, 0x03, 0xc7, 0xa9, 0x7c, 0xf0, 0x12, 0xc5, 0x8b, 0x39, 0x7a, + 0xfd, 0x57, 0x35, 0x80, 0xba, 0x11, 0x1a, 0xfc, 0xca, 0xe5, 0x10, 0xfe, 0xd2, 0x0f, 0x26, 0x0e, + 0xbe, 0x6a, 0xc6, 0x87, 0x74, 0x38, 0xb0, 0x5f, 0x93, 0x9f, 0x1f, 0x09, 0xd4, 0x1c, 0x7b, 0xd3, + 0x7e, 0x8d, 0x60, 0x06, 0x47, 0xef, 0x80, 0x71, 0xe2, 0x9a, 0x7e, 0xaf, 0x43, 0x99, 0xf7, 0x30, + 0x1b, 0x55, 0xb6, 0x43, 0x97, 0x64, 0x21, 0x8e, 0xe1, 0xfa, 0x13, 0x90, 0xd4, 0x8a, 0x0e, 0xee, + 0xa5, 0xfe, 0x83, 0x61, 0xb8, 0xbc, 0xb4, 0x5e, 0xab, 0x0b, 0x7c, 0xb6, 0xe7, 0xde, 0x26, 0xbd, + 0xbf, 0x71, 0x4f, 0xf9, 0x1b, 0xf7, 0x94, 0x63, 0x74, 0x4f, 0xb9, 0xaf, 0xc1, 0xf4, 0xd2, 0x6e, + 0xc7, 0xf6, 0x99, 0x9f, 0x3e, 0xf1, 0xa9, 0x1a, 0x8b, 0x1e, 0x87, 0xb1, 0x1d, 0xfe, 0xaf, 0x58, + 0x5c, 0x91, 0xa9, 0x40, 0xd4, 0xc0, 0x12, 0x8e, 0x36, 0xe1, 0x0c, 0x61, 0xcd, 0x99, 0xbc, 0x6a, + 0x84, 0x65, 0x16, 0x10, 0x7f, 0x06, 0x92, 0xc0, 0x82, 0x53, 0x58, 0x51, 0x13, 0xce, 0x98, 0x8e, + 0x11, 0x04, 0xf6, 0xa6, 0x6d, 0xc6, 0x1e, 0x68, 0xe3, 0x8b, 0xef, 0x60, 0x47, 0x4f, 0x02, 0x72, + 0x7f, 0x6f, 0xee, 0xa2, 0xe8, 0x67, 0x12, 0x80, 0x53, 0x28, 0xf4, 0xaf, 0x56, 0x60, 0x6a, 0x69, + 0xb7, 0xe3, 0x05, 0x5d, 0x9f, 0xb0, 0xaa, 0xa7, 0xa0, 0x81, 0x3f, 0x0e, 0x63, 0x5b, 0x86, 0x6b, + 0x39, 0xc4, 0x17, 0xdc, 0x27, 0x1a, 0xdb, 0x5b, 0xbc, 0x18, 0x4b, 0x38, 0x7a, 0x1d, 0x20, 0x30, + 0xb7, 0x88, 0xd5, 0x65, 0x12, 0x0c, 0xdf, 0x24, 0xb7, 0xcb, 0xf0, 0xd0, 0xc4, 0x37, 0x36, 0x23, + 0x94, 0x82, 0xb3, 0x47, 0xbf, 0xb1, 0x42, 0x4e, 0xff, 0x0f, 0x1a, 0x9c, 0x4b, 0xb4, 0x3b, 0x05, + 0xc5, 0x72, 0x33, 0xa9, 0x58, 0x2e, 0x0c, 0xfc, 0xad, 0x05, 0xfa, 0xe4, 0xcf, 0x56, 0xe0, 0x81, + 0x82, 0x31, 0xc9, 0xb8, 0x2b, 0x68, 0xa7, 0xe4, 0xae, 0xd0, 0x85, 0x89, 0xd0, 0x73, 0x84, 0xa3, + 0xa4, 0x1c, 0x81, 0x52, 0xce, 0x08, 0xeb, 0x11, 0x9a, 0xd8, 0x19, 0x21, 0x2e, 0x0b, 0xb0, 0x4a, + 0x47, 0xff, 0x86, 0x06, 0xe3, 0x91, 0xfd, 0xea, 0xc7, 0xea, 0x0e, 0xe9, 0xf0, 0x2f, 0xd7, 0xf4, + 0x6f, 0x57, 0xe0, 0x52, 0x84, 0x5b, 0xea, 0x09, 0xcd, 0x90, 0xf2, 0x8d, 0x83, 0x95, 0xe0, 0x07, + 0xc5, 0x39, 0xac, 0xc8, 0x02, 0x8a, 0xa4, 0x40, 0xe5, 0xa6, 0xae, 0xdf, 0xf1, 0x02, 0x29, 0x0e, + 0x70, 0xb9, 0x89, 0x17, 0x61, 0x09, 0x43, 0xab, 0x30, 0x12, 0x50, 0x7a, 0xe2, 0x34, 0x39, 0xe2, + 0x68, 0x30, 0x89, 0x86, 0xf5, 0x17, 0x73, 0x34, 0xe8, 0x75, 0xd5, 0xa4, 0x31, 0x52, 0xde, 0xcc, + 0x42, 0xbf, 0xc4, 0x92, 0x23, 0x92, 0xf3, 0x9a, 0x23, 0xcf, 0xac, 0xa1, 0x2f, 0xc3, 0xb4, 0xf0, + 0x78, 0xe0, 0xcb, 0xc6, 0x35, 0x09, 0x7a, 0x5f, 0x62, 0x65, 0x3c, 0x9a, 0xba, 0x45, 0xbe, 0x90, + 0xae, 0x1f, 0xaf, 0x18, 0x3d, 0x80, 0xea, 0x4d, 0xd1, 0x49, 0x34, 0x0b, 0x15, 0x5b, 0xce, 0x05, + 0x08, 0x1c, 0x95, 0x46, 0x1d, 0x57, 0x6c, 0x2b, 0x92, 0x87, 0x2a, 0x85, 0x52, 0x9b, 0x72, 0x2c, + 0x0d, 0xf5, 0x3f, 0x96, 0xf4, 0x3f, 0xab, 0xc0, 0x05, 0x49, 0x55, 0x7e, 0x63, 0x5d, 0xdc, 0xc1, + 0x1d, 0x20, 0x1b, 0x1e, 0x6c, 0x14, 0xb9, 0x03, 0xc3, 0x8c, 0x01, 0x96, 0xba, 0x9b, 0x8b, 0x10, + 0xd2, 0xee, 0x60, 0x86, 0x08, 0x7d, 0x1c, 0x46, 0x1d, 0x63, 0x83, 0x38, 0xd2, 0xd3, 0xac, 0x94, + 0x09, 0x29, 0xef, 0x73, 0xb9, 0x65, 0x33, 0xe0, 0xde, 0xf4, 0xd1, 0x95, 0x0d, 0x2f, 0xc4, 0x82, + 0xe6, 0xec, 0xd3, 0x30, 0xa1, 0x54, 0x43, 0xd3, 0x30, 0xb4, 0x4d, 0xf8, 0xdd, 0xec, 0x38, 0xa6, + 0xff, 0xa2, 0x0b, 0x30, 0xb2, 0x63, 0x38, 0x5d, 0x31, 0x24, 0x98, 0xff, 0xb8, 0x5e, 0x79, 0x9f, + 0xa6, 0xff, 0x96, 0x06, 0x13, 0xb7, 0xec, 0x0d, 0xe2, 0x73, 0xb7, 0x05, 0xa6, 0x0a, 0x25, 0x1e, + 0x0e, 0x4f, 0xe4, 0x3d, 0x1a, 0x46, 0xbb, 0x30, 0x2e, 0x4e, 0x9a, 0xc8, 0xab, 0xf5, 0x66, 0xb9, + 0x4b, 0xe0, 0x88, 0xb4, 0xe0, 0xe0, 0xea, 0x43, 0x25, 0x49, 0x01, 0xc7, 0xc4, 0xf4, 0xd7, 0xe1, + 0x7c, 0x4e, 0x23, 0x34, 0xc7, 0xb6, 0xaf, 0x1f, 0x8a, 0x65, 0x21, 0xf7, 0xa3, 0x1f, 0x62, 0x5e, + 0x8e, 0x2e, 0xc3, 0x10, 0x71, 0x2d, 0xb1, 0x26, 0xc6, 0xf6, 0xf7, 0xe6, 0x86, 0x96, 0x5c, 0x0b, + 0xd3, 0x32, 0xca, 0xa6, 0x1c, 0x2f, 0x21, 0x93, 0x30, 0x36, 0xb5, 0x2c, 0xca, 0x70, 0x04, 0x65, + 0xd7, 0xf6, 0xe9, 0x1b, 0x6a, 0x2a, 0x9d, 0x4e, 0x6f, 0xa6, 0x76, 0xcf, 0x20, 0x17, 0xe3, 0xe9, + 0x9d, 0xb8, 0x38, 0x23, 0x06, 0x24, 0xb3, 0xa7, 0x71, 0x86, 0xae, 0xfe, 0x7b, 0xc3, 0xf0, 0xd0, + 0x2d, 0xcf, 0xb7, 0x5f, 0xf3, 0xdc, 0xd0, 0x70, 0xd6, 0x3c, 0x2b, 0x76, 0x50, 0x13, 0x4c, 0xf9, + 0xb3, 0x1a, 0x3c, 0x60, 0x76, 0xba, 0x5c, 0xba, 0x95, 0x7e, 0x43, 0x6b, 0xc4, 0xb7, 0xbd, 0xb2, + 0x7e, 0x6a, 0xec, 0x69, 0x6a, 0x6d, 0xed, 0x6e, 0x1e, 0x4a, 0x5c, 0x44, 0x8b, 0xb9, 0xcb, 0x59, + 0xde, 0x3d, 0x97, 0x75, 0xae, 0x19, 0xb2, 0xd1, 0x7c, 0x2d, 0x9e, 0x84, 0x92, 0xee, 0x72, 0xf5, + 0x5c, 0x8c, 0xb8, 0x80, 0x12, 0xfa, 0x24, 0x5c, 0xb4, 0x79, 0xe7, 0x30, 0x31, 0x2c, 0xdb, 0x25, + 0x41, 0xc0, 0x9c, 0xc6, 0x06, 0xf1, 0x07, 0x6b, 0xe4, 0x21, 0xc4, 0xf9, 0x74, 0xd0, 0xcb, 0x00, + 0x41, 0xcf, 0x35, 0xc5, 0xf8, 0x8f, 0x94, 0xa2, 0xca, 0x85, 0xc0, 0x08, 0x0b, 0x56, 0x30, 0x52, + 0x0d, 0x37, 0x8c, 0x16, 0xe5, 0x28, 0xf3, 0x2d, 0x63, 0x1a, 0x6e, 0xbc, 0x86, 0x62, 0xb8, 0xfe, + 0x8f, 0x35, 0x18, 0x13, 0xcf, 0xdf, 0xd1, 0xdb, 0x53, 0x56, 0x9e, 0x88, 0xf7, 0xa4, 0x2c, 0x3d, + 0x3d, 0x76, 0xd5, 0x27, 0x2c, 0x7c, 0x42, 0x94, 0x28, 0x65, 0x26, 0x10, 0x84, 0x63, 0x73, 0x61, + 0xe2, 0xca, 0x4f, 0x9a, 0x10, 0x15, 0x62, 0xfa, 0x1b, 0x1a, 0x9c, 0xcb, 0xb4, 0x3a, 0x84, 0xbc, + 0x70, 0x8a, 0x5e, 0x34, 0xdf, 0x9b, 0x02, 0x16, 0xe9, 0x60, 0x61, 0xad, 0xd1, 0x24, 0xfe, 0x4e, + 0xb4, 0x09, 0x29, 0xcf, 0x88, 0xbd, 0xa5, 0x45, 0x2f, 0x06, 0xe0, 0x19, 0xb7, 0x53, 0xb8, 0x62, + 0x9e, 0x91, 0x86, 0xe0, 0x0c, 0x5d, 0xf4, 0x05, 0x0d, 0xa6, 0x8d, 0x64, 0xa4, 0x03, 0xc9, 0xd4, + 0x4b, 0xbd, 0xa4, 0x4b, 0x45, 0x4d, 0x88, 0xfb, 0x92, 0x02, 0x04, 0x38, 0x43, 0x16, 0x3d, 0x05, + 0x93, 0x46, 0xc7, 0x5e, 0xe8, 0x5a, 0x36, 0x15, 0x73, 0xe4, 0x33, 0x75, 0x26, 0x7a, 0x2f, 0xac, + 0x35, 0xa2, 0x72, 0x9c, 0xa8, 0x15, 0x85, 0x14, 0x10, 0x03, 0x39, 0x3c, 0x60, 0x48, 0x01, 0x31, + 0x86, 0x71, 0x48, 0x01, 0x31, 0x74, 0x2a, 0x11, 0xe4, 0x02, 0x78, 0xb6, 0x65, 0x0a, 0x92, 0xfc, + 0x06, 0xa2, 0x94, 0xb4, 0x7f, 0xa7, 0x51, 0xaf, 0x09, 0x8a, 0x6c, 0x27, 0xc7, 0xbf, 0xb1, 0x42, + 0x01, 0x7d, 0x45, 0x83, 0x29, 0xb1, 0x0e, 0x05, 0xcd, 0x31, 0x36, 0x45, 0x2f, 0x95, 0x5d, 0x2f, + 0xa9, 0x35, 0x39, 0x8f, 0x55, 0xe4, 0x5c, 0xe0, 0x88, 0x9c, 0xed, 0x13, 0x30, 0x9c, 0xec, 0x07, + 0xfa, 0xbb, 0x1a, 0x5c, 0x08, 0x88, 0xbf, 0x63, 0x9b, 0x64, 0xc1, 0x34, 0xbd, 0xae, 0x2b, 0xe7, + 0xa1, 0x5a, 0xfe, 0x05, 0x76, 0x33, 0x07, 0x1f, 0xf7, 0xf2, 0xcc, 0x83, 0xe0, 0x5c, 0xfa, 0xf4, + 0x88, 0x39, 0x7b, 0xcf, 0x08, 0xcd, 0xad, 0x9a, 0x61, 0x6e, 0x31, 0xbb, 0x1f, 0x77, 0xec, 0x2c, + 0xb9, 0xae, 0x5f, 0x48, 0xa2, 0xe2, 0x37, 0x68, 0xa9, 0x42, 0x9c, 0x26, 0x88, 0x02, 0xa8, 0xfa, + 0xe4, 0xd5, 0x2e, 0x09, 0x98, 0xf7, 0x27, 0x25, 0xde, 0x18, 0x78, 0xc6, 0xb0, 0x40, 0xc8, 0x05, + 0x15, 0xf9, 0x0b, 0x47, 0x84, 0x50, 0x0b, 0x1e, 0xe2, 0xa2, 0xda, 0x82, 0xeb, 0xb9, 0xbd, 0xb6, + 0xd7, 0x0d, 0x16, 0xba, 0xe1, 0x16, 0x71, 0x43, 0x69, 0x7b, 0x99, 0x60, 0xc2, 0x1d, 0xf3, 0x6f, + 0x5d, 0xea, 0x57, 0x11, 0xf7, 0xc7, 0x83, 0x5e, 0x84, 0x2a, 0xd9, 0x21, 0x6e, 0xb8, 0xbe, 0xbe, + 0x3c, 0x33, 0x59, 0xea, 0xf4, 0x62, 0x9f, 0xb0, 0x24, 0x70, 0xe0, 0x08, 0x1b, 0xf2, 0x60, 0xcc, + 0xf1, 0x5a, 0x2d, 0xdb, 0x6d, 0xcd, 0x4c, 0x95, 0x5f, 0x47, 0x89, 0x61, 0x5b, 0xe6, 0xf8, 0xb8, + 0x4c, 0x2b, 0x7e, 0x60, 0x49, 0x05, 0x75, 0xe0, 0x61, 0x8b, 0x6c, 0x1a, 0x5d, 0x27, 0x5c, 0xf5, + 0x42, 0x7a, 0x4c, 0xf7, 0x62, 0x9d, 0x5b, 0xba, 0x05, 0x9f, 0x61, 0x8f, 0x26, 0x1f, 0xdd, 0xdf, + 0x9b, 0x7b, 0xb8, 0x7e, 0x40, 0x5d, 0x7c, 0x20, 0x36, 0xd4, 0x83, 0x47, 0x44, 0x9d, 0xbb, 0xae, + 0x4f, 0x0c, 0x73, 0x8b, 0x8e, 0x74, 0x96, 0xe8, 0x59, 0x46, 0xf4, 0xff, 0xdb, 0xdf, 0x9b, 0x7b, + 0xa4, 0x7e, 0x70, 0x75, 0x7c, 0x18, 0x9c, 0xb3, 0x1f, 0x02, 0x94, 0xdd, 0xef, 0x07, 0x69, 0x0e, + 0x55, 0x55, 0x73, 0xf8, 0x05, 0x0d, 0x2e, 0xe4, 0x8d, 0x2e, 0x15, 0x39, 0x76, 0x88, 0xbf, 0xe1, + 0x05, 0xd2, 0x41, 0x74, 0x84, 0x8b, 0x1c, 0xcf, 0xcb, 0x42, 0x1c, 0xc3, 0x51, 0x03, 0xce, 0x6f, + 0x85, 0x61, 0x67, 0xc1, 0x34, 0x49, 0x10, 0x44, 0x35, 0x18, 0xb5, 0x11, 0x7e, 0x91, 0x7a, 0x6b, + 0x7d, 0x7d, 0x2d, 0x05, 0xc6, 0x79, 0x6d, 0xf4, 0xdf, 0xd1, 0xe0, 0x62, 0xee, 0x2e, 0x41, 0x18, + 0x2e, 0x31, 0x2f, 0x70, 0x77, 0xa5, 0x1b, 0x1a, 0xa1, 0xed, 0xb6, 0x1a, 0xee, 0xa6, 0x63, 0xb7, + 0xb6, 0x42, 0xd1, 0x3d, 0x26, 0x39, 0xae, 0xe4, 0xd6, 0xc0, 0x05, 0x2d, 0x69, 0xc7, 0xdb, 0xc6, + 0x6e, 0x06, 0xa1, 0xd2, 0xf1, 0x95, 0x2c, 0x18, 0xe7, 0xb5, 0xd1, 0xbf, 0x36, 0x02, 0x57, 0x68, + 0xc7, 0x63, 0x21, 0x66, 0xc5, 0x70, 0x8d, 0xd6, 0x8f, 0xa7, 0xb0, 0xf0, 0x5b, 0x1a, 0x3c, 0xb0, + 0x95, 0xaf, 0x60, 0x08, 0x31, 0xea, 0xb9, 0x52, 0x8a, 0x60, 0x3f, 0x9d, 0x85, 0xf3, 0xa9, 0xbe, + 0x55, 0x70, 0x51, 0xa7, 0xd0, 0x87, 0x60, 0xda, 0xf5, 0x2c, 0x52, 0x6b, 0xd4, 0xf1, 0x8a, 0x11, + 0x6c, 0x37, 0xe5, 0xbd, 0xd0, 0x08, 0xf7, 0x48, 0x58, 0x4d, 0xc1, 0x70, 0xa6, 0x36, 0xda, 0x01, + 0xd4, 0xf1, 0xac, 0xa5, 0x1d, 0xdb, 0x94, 0x37, 0x12, 0xe5, 0xbd, 0x20, 0xd8, 0xb5, 0xc7, 0x5a, + 0x06, 0x1b, 0xce, 0xa1, 0xc0, 0x34, 0x24, 0xda, 0x99, 0x15, 0xcf, 0xb5, 0x43, 0xcf, 0x67, 0xaf, + 0x0c, 0x06, 0x52, 0x14, 0xd8, 0x3a, 0x5f, 0xcd, 0xc5, 0x88, 0x0b, 0x28, 0xe9, 0xff, 0x43, 0x83, + 0xb3, 0x74, 0x59, 0xac, 0xf9, 0xde, 0x6e, 0xef, 0xc7, 0x71, 0x41, 0x3e, 0x2e, 0xae, 0xc8, 0xb9, + 0x66, 0x7f, 0x51, 0xb9, 0x1e, 0x1f, 0x67, 0x7d, 0x8e, 0x6f, 0xc4, 0x55, 0xe3, 0xc6, 0x50, 0xb1, + 0x71, 0x43, 0xff, 0x4a, 0x85, 0x0b, 0xed, 0xd2, 0xb8, 0xf0, 0x63, 0xb9, 0x0f, 0xdf, 0x0b, 0x53, + 0xb4, 0x6c, 0xc5, 0xd8, 0x5d, 0xab, 0x3f, 0xef, 0x39, 0xf2, 0xa1, 0x07, 0x73, 0xde, 0xbc, 0xad, + 0x02, 0x70, 0xb2, 0x1e, 0xba, 0x0e, 0x63, 0x1d, 0xfe, 0x9c, 0x54, 0x18, 0x3b, 0x1e, 0xe6, 0xf7, + 0xc8, 0xac, 0xe8, 0xfe, 0xde, 0xdc, 0xb9, 0xd8, 0x94, 0x2e, 0x0a, 0xb1, 0x6c, 0xa0, 0x7f, 0xe9, + 0x22, 0x30, 0xe4, 0x0e, 0x09, 0x7f, 0x1c, 0xc7, 0xe4, 0x09, 0x98, 0x30, 0x3b, 0xdd, 0xda, 0x8d, + 0xe6, 0x73, 0x5d, 0x2f, 0x34, 0xc4, 0x35, 0x39, 0x93, 0xe2, 0x6b, 0x6b, 0x77, 0x65, 0x31, 0x56, + 0xeb, 0x50, 0xee, 0x60, 0x76, 0xba, 0x82, 0xdf, 0xae, 0xa9, 0x1e, 0x8c, 0x8c, 0x3b, 0xd4, 0xd6, + 0xee, 0x26, 0x60, 0x38, 0x53, 0x1b, 0x7d, 0x12, 0x26, 0x89, 0xd8, 0xb8, 0xb7, 0x0c, 0xdf, 0x12, + 0x7c, 0xa1, 0xb4, 0x8c, 0x17, 0x0d, 0xad, 0xe4, 0x06, 0x5c, 0xf9, 0x59, 0x52, 0x48, 0xe0, 0x04, + 0x41, 0xf4, 0x51, 0xb8, 0x2c, 0x7f, 0xd3, 0x59, 0xf6, 0xac, 0x34, 0xa3, 0x18, 0xe1, 0x2f, 0xf8, + 0x96, 0x8a, 0x2a, 0xe1, 0xe2, 0xf6, 0xe8, 0x37, 0x35, 0xb8, 0x14, 0x41, 0x6d, 0xd7, 0x6e, 0x77, + 0xdb, 0x98, 0x98, 0x8e, 0x61, 0xb7, 0x85, 0xca, 0xf3, 0xc2, 0xb1, 0x7d, 0x68, 0x12, 0x3d, 0x67, + 0x56, 0xf9, 0x30, 0x5c, 0xd0, 0x25, 0xf4, 0x86, 0x06, 0x0f, 0x4b, 0xd0, 0x9a, 0x4f, 0x82, 0xa0, + 0xeb, 0x93, 0xf8, 0x99, 0x91, 0x18, 0x92, 0xb1, 0x52, 0xbc, 0x93, 0xc9, 0x7c, 0x4b, 0x07, 0xe0, + 0xc6, 0x07, 0x52, 0x57, 0x97, 0x4b, 0xd3, 0xdb, 0x0c, 0x85, 0x8e, 0x74, 0x52, 0xcb, 0x85, 0x92, + 0xc0, 0x09, 0x82, 0xe8, 0x9f, 0x68, 0xf0, 0x80, 0x5a, 0xa0, 0xae, 0x16, 0xae, 0x1c, 0xbd, 0x78, + 0x6c, 0x9d, 0x49, 0xe1, 0xe7, 0x96, 0xc2, 0x02, 0x20, 0x2e, 0xea, 0x15, 0x65, 0xdb, 0x6d, 0xb6, + 0x30, 0xb9, 0x02, 0x35, 0xc2, 0xd9, 0x36, 0x5f, 0xab, 0x01, 0x96, 0x30, 0xf4, 0x14, 0x4c, 0x76, + 0x3c, 0x6b, 0xcd, 0xb6, 0x82, 0x65, 0xbb, 0x6d, 0x87, 0x4c, 0xc5, 0x19, 0xe2, 0xc3, 0xb1, 0xe6, + 0x59, 0x6b, 0x8d, 0x3a, 0x2f, 0xc7, 0x89, 0x5a, 0xec, 0xc1, 0xac, 0xdd, 0x36, 0x5a, 0x64, 0xad, + 0xeb, 0x38, 0x6b, 0xbe, 0xc7, 0xcc, 0x49, 0x75, 0x62, 0x58, 0x8e, 0xed, 0x92, 0x92, 0x2a, 0x0d, + 0xdb, 0x6e, 0x8d, 0x22, 0xa4, 0xb8, 0x98, 0x1e, 0x9a, 0x07, 0xd8, 0x34, 0x6c, 0xa7, 0x79, 0xcf, + 0xe8, 0xdc, 0x71, 0x99, 0xde, 0x53, 0xe5, 0x46, 0x81, 0x1b, 0x51, 0x29, 0x56, 0x6a, 0xd0, 0xd5, + 0x44, 0xb9, 0x20, 0x26, 0x3c, 0x50, 0x0b, 0xd3, 0x4f, 0x8e, 0x63, 0x35, 0x49, 0x84, 0x7c, 0xf8, + 0x6e, 0x2b, 0x24, 0x70, 0x82, 0x20, 0xfa, 0xac, 0x06, 0x67, 0x82, 0x5e, 0x10, 0x92, 0x76, 0xd4, + 0x87, 0xb3, 0xc7, 0xdd, 0x07, 0x66, 0x68, 0x6b, 0x26, 0x88, 0xe0, 0x14, 0x51, 0x64, 0xc0, 0x15, + 0x36, 0xaa, 0x37, 0x6b, 0xb7, 0xec, 0xd6, 0x56, 0xf4, 0x0c, 0x76, 0x8d, 0xf8, 0x26, 0x71, 0xc3, + 0x99, 0x69, 0xb6, 0x6e, 0x98, 0xa3, 0x45, 0xa3, 0xb8, 0x1a, 0xee, 0x87, 0x03, 0xbd, 0x0c, 0xb3, + 0x02, 0xbc, 0xec, 0xdd, 0xcb, 0x50, 0x38, 0xc7, 0x28, 0x30, 0xc7, 0x92, 0x46, 0x61, 0x2d, 0xdc, + 0x07, 0x03, 0xd5, 0x28, 0x02, 0xe2, 0x33, 0x3b, 0x39, 0x89, 0x16, 0x4f, 0x30, 0x83, 0x62, 0x9f, + 0xd2, 0x66, 0x16, 0x8c, 0xf3, 0xda, 0xa0, 0x67, 0xa2, 0x67, 0x2b, 0x3d, 0x5a, 0xf0, 0xdc, 0x5a, + 0x73, 0xe6, 0x3c, 0xeb, 0xdf, 0x79, 0xe5, 0x35, 0x8a, 0x04, 0xe1, 0x74, 0x5d, 0x2a, 0x5b, 0xc8, + 0xa2, 0xc5, 0xae, 0x1f, 0x84, 0x33, 0x17, 0x58, 0x63, 0x26, 0x5b, 0x60, 0x15, 0x80, 0x93, 0xf5, + 0xd0, 0x75, 0x38, 0x13, 0x10, 0xd3, 0xf4, 0xda, 0x1d, 0xa1, 0xa8, 0xce, 0x5c, 0x64, 0xbd, 0xe7, + 0x33, 0x98, 0x80, 0xe0, 0x54, 0x4d, 0xd4, 0x83, 0xf3, 0x51, 0xd8, 0x92, 0x65, 0xaf, 0xb5, 0x62, + 0xec, 0x32, 0x51, 0xfd, 0xd2, 0xc1, 0x3b, 0x70, 0x5e, 0x5e, 0x7c, 0xce, 0x3f, 0xd7, 0x35, 0xdc, + 0xd0, 0x0e, 0x7b, 0x7c, 0xb8, 0x6a, 0x59, 0x74, 0x38, 0x8f, 0x06, 0x5a, 0x86, 0x0b, 0xa9, 0xe2, + 0x1b, 0xb6, 0x43, 0x82, 0x99, 0x07, 0xd8, 0x67, 0x33, 0xab, 0x53, 0x2d, 0x07, 0x8e, 0x73, 0x5b, + 0xa1, 0x3b, 0x70, 0xb1, 0xe3, 0x7b, 0x21, 0x31, 0xc3, 0xdb, 0x54, 0x3c, 0x71, 0xc4, 0x07, 0x06, + 0x33, 0x33, 0x6c, 0x2c, 0xd8, 0x1d, 0xc1, 0x5a, 0x5e, 0x05, 0x9c, 0xdf, 0x0e, 0x7d, 0x4d, 0x83, + 0xab, 0x41, 0xe8, 0x13, 0xa3, 0x6d, 0xbb, 0xad, 0x9a, 0xe7, 0xba, 0x84, 0xb1, 0xc9, 0x86, 0x15, + 0xbb, 0x64, 0x5f, 0x2e, 0xc5, 0xa7, 0xf4, 0xfd, 0xbd, 0xb9, 0xab, 0xcd, 0xbe, 0x98, 0xf1, 0x01, + 0x94, 0xd1, 0xeb, 0x00, 0x6d, 0xd2, 0xf6, 0xfc, 0x1e, 0xe5, 0x48, 0x33, 0xb3, 0xe5, 0x5d, 0x5c, + 0x56, 0x22, 0x2c, 0x7c, 0xfb, 0x27, 0x6e, 0x37, 0x62, 0x20, 0x56, 0xc8, 0xe9, 0x7b, 0x15, 0xae, + 0xf2, 0x67, 0x0e, 0x1e, 0xba, 0x03, 0x78, 0xbd, 0x05, 0x19, 0xc2, 0x54, 0x5c, 0x08, 0xb0, 0x1d, + 0xb0, 0x92, 0x04, 0xe1, 0x74, 0x5d, 0x2a, 0x16, 0xb2, 0x9d, 0x7a, 0xa3, 0x19, 0xb7, 0xaf, 0xc4, + 0x62, 0x61, 0x23, 0x05, 0xc3, 0x99, 0xda, 0xa8, 0x06, 0xe7, 0x44, 0x59, 0x83, 0x6a, 0x56, 0xc1, + 0x0d, 0x9f, 0x48, 0x81, 0x9b, 0xea, 0x28, 0xe7, 0x1a, 0x69, 0x20, 0xce, 0xd6, 0xa7, 0x5f, 0x41, + 0x7f, 0xa8, 0xbd, 0x18, 0x8e, 0xbf, 0x62, 0x35, 0x09, 0xc2, 0xe9, 0xba, 0x52, 0xf5, 0x4d, 0x74, + 0x61, 0x24, 0xfe, 0x8a, 0xd5, 0x14, 0x0c, 0x67, 0x6a, 0xeb, 0xff, 0x71, 0x18, 0x1e, 0x39, 0x84, + 0xb0, 0x86, 0xda, 0xf9, 0xc3, 0x7d, 0xf4, 0x8d, 0x7b, 0xb8, 0xe9, 0xe9, 0x14, 0x4c, 0xcf, 0xd1, + 0xe9, 0x1d, 0x76, 0x3a, 0x83, 0xa2, 0xe9, 0x3c, 0x3a, 0xc9, 0xc3, 0x4f, 0x7f, 0x3b, 0x7f, 0xfa, + 0x4b, 0x8e, 0xea, 0x81, 0xcb, 0xa5, 0x53, 0xb0, 0x5c, 0x4a, 0x8e, 0xea, 0x21, 0x96, 0xd7, 0xf7, + 0x87, 0xe1, 0xd1, 0xc3, 0x08, 0x8e, 0x25, 0xd7, 0x57, 0x0e, 0xcb, 0x3b, 0xd1, 0xf5, 0x55, 0xf4, + 0xea, 0xe5, 0x04, 0xd7, 0x57, 0x0e, 0xc9, 0x93, 0x5e, 0x5f, 0x45, 0xa3, 0x7a, 0x52, 0xeb, 0xab, + 0x68, 0x54, 0x0f, 0xb1, 0xbe, 0xfe, 0x32, 0x7d, 0x3e, 0x44, 0xf2, 0x62, 0x03, 0x86, 0xcc, 0x4e, + 0xb7, 0x24, 0x93, 0x62, 0xee, 0x23, 0xb5, 0xb5, 0xbb, 0x98, 0xe2, 0x40, 0x18, 0x46, 0xf9, 0xfa, + 0x29, 0xc9, 0x82, 0xd8, 0xfb, 0x09, 0xbe, 0x24, 0xb1, 0xc0, 0x44, 0x87, 0x8a, 0x74, 0xb6, 0x48, + 0x9b, 0xf8, 0x86, 0xd3, 0x0c, 0x3d, 0xdf, 0x68, 0x95, 0xe5, 0x36, 0x6c, 0xa8, 0x96, 0x52, 0xb8, + 0x70, 0x06, 0x3b, 0x1d, 0x90, 0x8e, 0x6d, 0x95, 0xe4, 0x2f, 0x6c, 0x40, 0xd6, 0x1a, 0x75, 0x4c, + 0x71, 0xe8, 0xff, 0x60, 0x1c, 0x94, 0xb0, 0x60, 0xe8, 0xa3, 0x70, 0xd9, 0x70, 0x1c, 0xef, 0xde, + 0x9a, 0x6f, 0xef, 0xd8, 0x0e, 0x69, 0x11, 0x2b, 0x12, 0xa6, 0x02, 0xe1, 0x64, 0xc4, 0x14, 0xa6, + 0x85, 0xa2, 0x4a, 0xb8, 0xb8, 0x3d, 0xfa, 0xa2, 0x06, 0xe7, 0xcc, 0x74, 0x28, 0xa6, 0x41, 0xdc, + 0x10, 0x32, 0x71, 0x9d, 0xf8, 0x7e, 0xca, 0x14, 0xe3, 0x2c, 0x59, 0xf4, 0x33, 0x1a, 0x37, 0xca, + 0x45, 0x37, 0x10, 0x62, 0xce, 0x6e, 0x1e, 0xd3, 0x15, 0x6d, 0x6c, 0xdd, 0x8b, 0xef, 0x38, 0x92, + 0x04, 0xd1, 0x1b, 0x1a, 0x5c, 0xdc, 0xce, 0xbb, 0x4b, 0x10, 0x33, 0x7b, 0xa7, 0x6c, 0x57, 0x0a, + 0x2e, 0x27, 0xb8, 0x38, 0x9b, 0x5b, 0x01, 0xe7, 0x77, 0x24, 0x1a, 0xa5, 0xc8, 0xbc, 0x2a, 0x98, + 0x40, 0xe9, 0x51, 0x4a, 0xd9, 0x69, 0xe3, 0x51, 0x8a, 0x00, 0x38, 0x49, 0x10, 0x75, 0x60, 0x7c, + 0x5b, 0xda, 0xb4, 0x85, 0x1d, 0xab, 0x56, 0x96, 0xba, 0x62, 0x18, 0xe7, 0xf7, 0x5c, 0x51, 0x21, + 0x8e, 0x89, 0xa0, 0x2d, 0x18, 0xdb, 0xe6, 0x8c, 0x48, 0xd8, 0x9f, 0x16, 0x06, 0xd6, 0x8f, 0xb9, + 0x19, 0x44, 0x14, 0x61, 0x89, 0x5e, 0xf5, 0xb1, 0xac, 0x1e, 0xe0, 0xfa, 0xff, 0x35, 0x0d, 0x2e, + 0xee, 0x10, 0x3f, 0xb4, 0xcd, 0xf4, 0x4d, 0xce, 0x78, 0x79, 0x1d, 0xfe, 0xf9, 0x3c, 0x84, 0x7c, + 0x99, 0xe4, 0x82, 0x70, 0x7e, 0x17, 0xa8, 0x46, 0xcf, 0x0d, 0xf2, 0xcd, 0xd0, 0x08, 0x6d, 0x73, + 0xdd, 0xdb, 0x26, 0x6e, 0x9c, 0xbd, 0x82, 0x59, 0x82, 0xaa, 0x5c, 0xa3, 0x5f, 0x2a, 0xae, 0x86, + 0xfb, 0xe1, 0xd0, 0x7f, 0xa8, 0x41, 0xc6, 0xac, 0x8c, 0x7e, 0x51, 0x83, 0xc9, 0x4d, 0x62, 0x84, + 0x5d, 0x9f, 0xdc, 0x34, 0xc2, 0xe8, 0x3d, 0xf2, 0xf3, 0xc7, 0x61, 0xcd, 0x9e, 0xbf, 0xa1, 0x20, + 0xe6, 0x2e, 0x16, 0x51, 0x48, 0x41, 0x15, 0x84, 0x13, 0x3d, 0x98, 0x7d, 0x16, 0xce, 0x65, 0x1a, + 0x1e, 0xe9, 0xae, 0xf6, 0x5f, 0x6a, 0x90, 0x97, 0x70, 0x05, 0xbd, 0x0c, 0x23, 0x86, 0x65, 0x45, + 0x11, 0xd4, 0x9f, 0x2e, 0xe7, 0xed, 0x63, 0xa9, 0xcf, 0xbe, 0xd9, 0x4f, 0xcc, 0xd1, 0xa2, 0x1b, + 0x80, 0x8c, 0x84, 0xbf, 0xc0, 0x4a, 0xfc, 0x98, 0x91, 0xdd, 0x84, 0x2d, 0x64, 0xa0, 0x38, 0xa7, + 0x85, 0xfe, 0xb3, 0x1a, 0xa0, 0x6c, 0x10, 0x4a, 0xe4, 0x43, 0x55, 0x2c, 0x65, 0x39, 0x4b, 0xf5, + 0x92, 0x0f, 0x0e, 0x12, 0xaf, 0x67, 0xe2, 0x17, 0x0e, 0xa2, 0x20, 0xc0, 0x11, 0x1d, 0xfd, 0xaf, + 0x34, 0x88, 0xa3, 0x2c, 0xa3, 0x77, 0xc3, 0x84, 0x45, 0x02, 0xd3, 0xb7, 0x3b, 0x61, 0xfc, 0xd6, + 0x26, 0xf2, 0xd9, 0xaf, 0xc7, 0x20, 0xac, 0xd6, 0x43, 0x3a, 0x8c, 0x86, 0x46, 0xb0, 0xdd, 0xa8, + 0x0b, 0xa5, 0x92, 0x89, 0x00, 0xeb, 0xac, 0x04, 0x0b, 0x48, 0x1c, 0x50, 0x6a, 0xe8, 0x10, 0x01, + 0xa5, 0xd0, 0xe6, 0x31, 0x44, 0xcf, 0x42, 0x07, 0x47, 0xce, 0xd2, 0x7f, 0xbd, 0x02, 0x67, 0x69, + 0x95, 0x15, 0xc3, 0x76, 0x43, 0xe2, 0x32, 0xcf, 0xf2, 0x92, 0x83, 0xd0, 0x82, 0xa9, 0x30, 0xf1, + 0x72, 0xea, 0xe8, 0xef, 0x8e, 0x22, 0xff, 0xa4, 0xe4, 0x7b, 0xa9, 0x24, 0x5e, 0xf4, 0xb4, 0x74, + 0xed, 0xe7, 0xea, 0xf7, 0x23, 0x72, 0xa9, 0x32, 0x7f, 0xfd, 0xfb, 0xe2, 0x19, 0x5a, 0x14, 0x9a, + 0x3b, 0xe1, 0xc5, 0xff, 0x5e, 0x98, 0x12, 0x2e, 0xb6, 0x3c, 0x32, 0x98, 0x50, 0xbf, 0xd9, 0x09, + 0x73, 0x43, 0x05, 0xe0, 0x64, 0x3d, 0xfd, 0xbb, 0x15, 0x48, 0x06, 0x00, 0x2f, 0x3b, 0x4a, 0xd9, + 0xb0, 0x68, 0x95, 0x13, 0x0b, 0x8b, 0xf6, 0x4e, 0x96, 0x3d, 0x83, 0xa7, 0x59, 0xe2, 0x57, 0xe4, + 0x6a, 0xce, 0x0b, 0x9e, 0x24, 0x29, 0xaa, 0x11, 0x0f, 0xeb, 0xf0, 0x91, 0x87, 0xf5, 0xdd, 0xc2, + 0x43, 0x7f, 0x24, 0x11, 0x9c, 0x4e, 0xbe, 0x45, 0x38, 0x97, 0x68, 0xa8, 0x3c, 0x44, 0xf8, 0x96, + 0x06, 0x63, 0x22, 0xf2, 0xea, 0x21, 0x1e, 0xba, 0x6c, 0xc2, 0x08, 0x53, 0x79, 0x06, 0x91, 0x06, + 0x9b, 0x5b, 0x9e, 0x17, 0x26, 0xe2, 0xcf, 0x32, 0xcf, 0x72, 0xf6, 0x2f, 0xe6, 0xe8, 0x99, 0xcb, + 0xa2, 0x6f, 0x6e, 0xd9, 0x21, 0x31, 0x43, 0x19, 0xd5, 0x52, 0xba, 0x2c, 0x2a, 0xe5, 0x38, 0x51, + 0x4b, 0xff, 0xfa, 0x30, 0x3c, 0x2c, 0x10, 0x67, 0x44, 0xa4, 0x88, 0xc1, 0xf5, 0xe0, 0xbc, 0x98, + 0xdb, 0xba, 0x6f, 0xd8, 0x91, 0xeb, 0x41, 0x39, 0xd5, 0x57, 0x38, 0xa5, 0x64, 0xd0, 0xe1, 0x3c, + 0x1a, 0x3c, 0x3e, 0x23, 0x2b, 0xbe, 0x45, 0x0c, 0x27, 0xdc, 0x92, 0xb4, 0x2b, 0x83, 0xc4, 0x67, + 0xcc, 0xe2, 0xc3, 0xb9, 0x54, 0x98, 0xeb, 0x83, 0x00, 0xd4, 0x7c, 0x62, 0xa8, 0x7e, 0x17, 0x03, + 0x38, 0x87, 0xaf, 0xe4, 0x62, 0xc4, 0x05, 0x94, 0x98, 0x0d, 0xd1, 0xd8, 0x65, 0x26, 0x09, 0x4c, + 0x42, 0xdf, 0x66, 0x71, 0x84, 0x23, 0x2b, 0xfa, 0x4a, 0x12, 0x84, 0xd3, 0x75, 0xd1, 0x75, 0x38, + 0xc3, 0x5c, 0x49, 0xe2, 0x40, 0x48, 0x23, 0xf1, 0x5b, 0xfb, 0xd5, 0x04, 0x04, 0xa7, 0x6a, 0xea, + 0xbf, 0xa1, 0xc1, 0xa4, 0xba, 0xec, 0x0e, 0xf1, 0xea, 0xa5, 0xab, 0x1c, 0x86, 0x03, 0xbc, 0xc8, + 0x50, 0xa9, 0x1e, 0xe6, 0x3c, 0xfc, 0xd2, 0x10, 0x9c, 0xcf, 0x69, 0xc3, 0x1c, 0x03, 0x48, 0xea, + 0x60, 0x1d, 0xc4, 0x31, 0x20, 0x73, 0x48, 0x47, 0x8e, 0x01, 0x69, 0x08, 0xce, 0xd0, 0x45, 0xcf, + 0xc3, 0x90, 0xe9, 0xdb, 0x62, 0x58, 0xde, 0x5b, 0x4a, 0x2d, 0xc4, 0x8d, 0xc5, 0x09, 0x41, 0x71, + 0xa8, 0x86, 0x1b, 0x98, 0x22, 0xa4, 0xc7, 0x83, 0xba, 0xa9, 0xe5, 0x59, 0xcd, 0x8e, 0x07, 0x75, + 0xef, 0x07, 0x38, 0x59, 0x0f, 0xbd, 0x08, 0x33, 0x42, 0x5e, 0x97, 0xef, 0x5c, 0x3d, 0x37, 0x08, + 0xe9, 0xfe, 0x0b, 0x05, 0x3b, 0x7d, 0x70, 0x7f, 0x6f, 0x6e, 0xe6, 0x76, 0x41, 0x1d, 0x5c, 0xd8, + 0x5a, 0xff, 0x8b, 0x21, 0x98, 0x50, 0xa2, 0x53, 0xa3, 0x95, 0x41, 0x0c, 0x1d, 0xf1, 0x17, 0x4b, + 0x63, 0xc7, 0x0a, 0x0c, 0xb5, 0x3a, 0xdd, 0x92, 0x96, 0x8e, 0x08, 0xdd, 0x4d, 0x8a, 0xae, 0xd5, + 0xe9, 0xa2, 0xe7, 0x23, 0xdb, 0x49, 0x39, 0xeb, 0x46, 0xf4, 0x2a, 0x21, 0x65, 0x3f, 0x91, 0xdb, + 0x65, 0xb8, 0x70, 0xbb, 0xb4, 0x61, 0x2c, 0x10, 0x86, 0x95, 0x91, 0xf2, 0x91, 0x45, 0x94, 0x91, + 0x16, 0x86, 0x14, 0xae, 0x95, 0x49, 0x3b, 0x8b, 0xa4, 0x41, 0x25, 0xbe, 0x2e, 0x7b, 0xeb, 0xc8, + 0xd4, 0xcd, 0x2a, 0x97, 0xf8, 0xee, 0xb2, 0x12, 0x2c, 0x20, 0x99, 0x83, 0x64, 0xec, 0x50, 0x07, + 0xc9, 0xe7, 0x2b, 0x80, 0xb2, 0xdd, 0x40, 0x8f, 0xc0, 0x08, 0x7b, 0x2b, 0x2d, 0x38, 0x46, 0x24, + 0x9f, 0xb3, 0xd7, 0xb2, 0x98, 0xc3, 0x50, 0x53, 0xc4, 0x49, 0x28, 0x37, 0x9d, 0xcc, 0xb3, 0x46, + 0xd0, 0x53, 0x82, 0x2a, 0xc8, 0x93, 0x79, 0xa8, 0xf0, 0x64, 0xbe, 0x0b, 0x63, 0x6d, 0xdb, 0x65, + 0xd7, 0x7b, 0xe5, 0xec, 0x4d, 0xdc, 0x01, 0x80, 0xa3, 0xc0, 0x12, 0x97, 0xfe, 0xfd, 0x0a, 0x5d, + 0xfa, 0xb1, 0x5c, 0xda, 0x03, 0x30, 0xba, 0xa1, 0xc7, 0x05, 0x1c, 0xb1, 0x03, 0x1a, 0xe5, 0x66, + 0x39, 0x42, 0xba, 0x10, 0x21, 0xe4, 0x17, 0x53, 0xf1, 0x6f, 0xac, 0x10, 0xa3, 0xa4, 0x43, 0xbb, + 0x4d, 0x5e, 0xb0, 0x5d, 0xcb, 0xbb, 0x27, 0x86, 0x77, 0x50, 0xd2, 0xeb, 0x11, 0x42, 0x4e, 0x3a, + 0xfe, 0x8d, 0x15, 0x62, 0x94, 0xb5, 0x30, 0xf5, 0xd6, 0x65, 0xe9, 0x02, 0x44, 0xdf, 0x3c, 0xc7, + 0x91, 0x67, 0x67, 0x95, 0xb3, 0x96, 0x5a, 0x41, 0x1d, 0x5c, 0xd8, 0x5a, 0xff, 0x4d, 0x0d, 0x2e, + 0xe6, 0x0e, 0x05, 0xba, 0x09, 0xe7, 0x62, 0x67, 0x2c, 0x95, 0xd9, 0x57, 0xe3, 0x34, 0x15, 0xb7, + 0xd3, 0x15, 0x70, 0xb6, 0x0d, 0xf7, 0xaa, 0xcd, 0x1c, 0x26, 0xc2, 0x93, 0x4b, 0x15, 0x60, 0x54, + 0x30, 0xce, 0x6b, 0xa3, 0x7f, 0x34, 0xd1, 0xd9, 0x78, 0xb0, 0xe8, 0xce, 0xd8, 0x20, 0xad, 0xe8, + 0x61, 0x53, 0xb4, 0x33, 0x16, 0x69, 0x21, 0xe6, 0x30, 0xf4, 0x90, 0xfa, 0x5c, 0x30, 0xe2, 0x5b, + 0xf2, 0xc9, 0xa0, 0xfe, 0xd3, 0xf0, 0x40, 0xc1, 0x7d, 0x25, 0xaa, 0xc3, 0x64, 0x70, 0xcf, 0xe8, + 0x2c, 0x92, 0x2d, 0x63, 0xc7, 0x16, 0xcf, 0xcf, 0xb9, 0x93, 0xdd, 0x64, 0x53, 0x29, 0xbf, 0x9f, + 0xfa, 0x8d, 0x13, 0xad, 0xf4, 0x10, 0x40, 0x38, 0x63, 0xda, 0x6e, 0x0b, 0x6d, 0x42, 0xd5, 0x10, + 0xa9, 0x38, 0xc5, 0x3a, 0xfe, 0x40, 0x29, 0x55, 0x5d, 0xe0, 0xe0, 0x3e, 0xf7, 0xf2, 0x17, 0x8e, + 0x70, 0xeb, 0xff, 0x48, 0x83, 0x4b, 0xf9, 0x0f, 0x8e, 0x0f, 0x21, 0x80, 0xb4, 0x61, 0xc2, 0x8f, + 0x9b, 0x89, 0x45, 0xff, 0x1e, 0x35, 0xe2, 0xa4, 0x12, 0x62, 0x89, 0x0a, 0x67, 0x35, 0xdf, 0x0b, + 0xe4, 0xcc, 0xa7, 0x83, 0x50, 0x46, 0x8a, 0x91, 0xd2, 0x13, 0xac, 0xe2, 0xd7, 0x7f, 0xaf, 0x02, + 0xb0, 0x4a, 0xc2, 0x7b, 0x9e, 0xbf, 0x4d, 0x87, 0xe8, 0xc1, 0x84, 0x3e, 0x50, 0xfd, 0xd1, 0x3d, + 0x7a, 0x7f, 0x10, 0x86, 0x3b, 0x9e, 0x15, 0x08, 0xf6, 0xc7, 0x3a, 0xc2, 0xfc, 0x94, 0x58, 0x29, + 0x9a, 0x83, 0x11, 0x76, 0x3d, 0x21, 0x4e, 0x26, 0xa6, 0x4d, 0x50, 0x59, 0x30, 0xc0, 0xbc, 0x9c, + 0x27, 0x58, 0x62, 0x6f, 0x59, 0x02, 0xa1, 0x1e, 0x89, 0x04, 0x4b, 0xbc, 0x0c, 0x47, 0x50, 0x74, + 0x1d, 0xc0, 0xee, 0xdc, 0x30, 0xda, 0xb6, 0x43, 0x25, 0xd3, 0xd1, 0x28, 0x9f, 0x27, 0x34, 0xd6, + 0x64, 0xe9, 0xfd, 0xbd, 0xb9, 0xaa, 0xf8, 0xd5, 0xc3, 0x4a, 0x6d, 0xfd, 0xd3, 0xc3, 0x90, 0xc8, + 0x7d, 0x1b, 0x5b, 0x82, 0xb4, 0x93, 0xb1, 0x04, 0xbd, 0x08, 0x33, 0x8e, 0x67, 0x58, 0x8b, 0x86, + 0x43, 0x77, 0xa3, 0xdf, 0xe4, 0xd3, 0x68, 0xb8, 0xad, 0x28, 0xc1, 0x29, 0xe3, 0x4a, 0xcb, 0x05, + 0x75, 0x70, 0x61, 0x6b, 0x14, 0x46, 0x19, 0x77, 0x79, 0x8a, 0x91, 0xe5, 0x41, 0x33, 0x03, 0xcf, + 0xab, 0x2f, 0xa0, 0x22, 0x01, 0x23, 0x95, 0x94, 0xf7, 0x73, 0x1a, 0x5c, 0x24, 0xbb, 0x21, 0xf1, + 0x5d, 0xc3, 0x59, 0xf7, 0x8d, 0xcd, 0x4d, 0xdb, 0x14, 0xde, 0xa3, 0x7c, 0x62, 0xd7, 0xf6, 0xf7, + 0xe6, 0x2e, 0x2e, 0xe5, 0x55, 0xb8, 0xbf, 0x37, 0xf7, 0xae, 0x6c, 0xe2, 0x6b, 0xf9, 0xe0, 0x29, + 0xb7, 0x09, 0x5b, 0xc8, 0xf9, 0xe4, 0x66, 0x9f, 0x86, 0x89, 0x23, 0xbc, 0xe0, 0x48, 0xbc, 0xfd, + 0xfe, 0xfd, 0x0a, 0x4c, 0xd2, 0xb5, 0xb7, 0xec, 0x99, 0x86, 0x53, 0x5f, 0x6d, 0x1e, 0x21, 0x6b, + 0x34, 0x5a, 0x86, 0x0b, 0x9b, 0x9e, 0x6f, 0x92, 0xf5, 0xda, 0xda, 0xba, 0x27, 0x2e, 0x47, 0xea, + 0xab, 0x4d, 0xc1, 0xa9, 0x99, 0xba, 0x77, 0x23, 0x07, 0x8e, 0x73, 0x5b, 0xa1, 0x3b, 0x70, 0x31, + 0x2e, 0xbf, 0xdb, 0xe1, 0x2e, 0x27, 0x14, 0xdd, 0x50, 0xec, 0x32, 0x73, 0x23, 0xaf, 0x02, 0xce, + 0x6f, 0x87, 0x0c, 0xb8, 0x22, 0x62, 0x4b, 0xdc, 0xf0, 0xfc, 0x7b, 0x86, 0x6f, 0x25, 0xd1, 0x0e, + 0xc7, 0xc6, 0xe3, 0x7a, 0x71, 0x35, 0xdc, 0x0f, 0x87, 0xfe, 0xcb, 0xa3, 0xa0, 0x3c, 0xd5, 0x3b, + 0x42, 0x5a, 0x9e, 0x5f, 0xd3, 0xe0, 0x82, 0xe9, 0xd8, 0xc4, 0x0d, 0x53, 0x6f, 0xb2, 0x38, 0x4b, + 0xba, 0x5b, 0xea, 0x0d, 0x61, 0x87, 0xb8, 0x8d, 0xba, 0xf0, 0xd0, 0xa9, 0xe5, 0x20, 0x17, 0x5e, + 0x4c, 0x39, 0x10, 0x9c, 0xdb, 0x19, 0xf6, 0x3d, 0xac, 0xbc, 0x51, 0x57, 0x1f, 0xc5, 0xd7, 0x44, + 0x19, 0x8e, 0xa0, 0xe8, 0x09, 0x98, 0x68, 0xf9, 0x5e, 0xb7, 0x13, 0xd4, 0x98, 0x5b, 0x30, 0x5f, + 0xff, 0x4c, 0x36, 0xbc, 0x19, 0x17, 0x63, 0xb5, 0x0e, 0x95, 0x74, 0xf9, 0xcf, 0x35, 0x9f, 0x6c, + 0xda, 0xbb, 0x82, 0xd1, 0x31, 0x49, 0xf7, 0xa6, 0x52, 0x8e, 0x13, 0xb5, 0xd0, 0x3b, 0x60, 0xdc, + 0x0e, 0x82, 0x2e, 0xf1, 0xef, 0xe2, 0x65, 0x11, 0x8f, 0x9f, 0x5d, 0xb8, 0x34, 0x64, 0x21, 0x8e, + 0xe1, 0xe8, 0xcb, 0x1a, 0x9c, 0xf1, 0xc9, 0xab, 0x5d, 0xdb, 0x27, 0x16, 0x23, 0x1a, 0x88, 0xf7, + 0x92, 0x78, 0xb0, 0x37, 0x9a, 0xf3, 0x38, 0x81, 0x94, 0x73, 0x89, 0xc8, 0xc0, 0x96, 0x04, 0xe2, + 0x54, 0x0f, 0xe8, 0x50, 0x05, 0x76, 0xcb, 0xb5, 0xdd, 0xd6, 0x82, 0xd3, 0x0a, 0x66, 0xaa, 0x8c, + 0xf1, 0x71, 0x31, 0x3a, 0x2e, 0xc6, 0x6a, 0x1d, 0xaa, 0x62, 0x76, 0x03, 0xba, 0xef, 0xdb, 0x84, + 0x8f, 0xef, 0x78, 0x6c, 0x81, 0xbc, 0xab, 0x02, 0x70, 0xb2, 0x1e, 0xba, 0x0e, 0x67, 0x64, 0x81, + 0x18, 0x65, 0xe0, 0xd1, 0xd0, 0x68, 0x3f, 0xef, 0x26, 0x20, 0x38, 0x55, 0x73, 0x76, 0x01, 0xce, + 0xe7, 0x7c, 0xe6, 0x91, 0x98, 0xcb, 0x6f, 0x54, 0xe0, 0xad, 0x07, 0xae, 0x4a, 0xf4, 0xf7, 0x35, + 0x98, 0x20, 0xbb, 0xa1, 0x6f, 0x44, 0x2f, 0x07, 0xe8, 0x14, 0x6d, 0x9e, 0xc8, 0x16, 0x98, 0x5f, + 0x8a, 0x09, 0xf1, 0x69, 0x8b, 0x84, 0x0c, 0x05, 0x82, 0xd5, 0xfe, 0x50, 0xb5, 0x8d, 0xc7, 0xca, + 0x53, 0x0d, 0xf5, 0x22, 0xd1, 0xa9, 0x80, 0xcc, 0x7e, 0x10, 0xa6, 0xd3, 0x98, 0x8f, 0x34, 0x52, + 0xbf, 0x5b, 0x81, 0xb1, 0x35, 0xdf, 0xa3, 0xf2, 0xcf, 0x29, 0x44, 0xaf, 0x32, 0x12, 0xf1, 0xa3, + 0x4b, 0xbd, 0x91, 0x16, 0x9d, 0x2d, 0x8c, 0x5d, 0x6f, 0xa7, 0x62, 0xd7, 0x2f, 0x0c, 0x42, 0xa4, + 0x7f, 0xb0, 0xfa, 0x7f, 0xad, 0xc1, 0x84, 0xa8, 0x79, 0x0a, 0xd1, 0xad, 0x3e, 0x96, 0x8c, 0x6e, + 0xf5, 0xfe, 0x01, 0xbe, 0xab, 0x20, 0xae, 0xd5, 0xd7, 0x34, 0x98, 0x12, 0x35, 0x56, 0x48, 0x7b, + 0x83, 0xf8, 0xe8, 0x06, 0x8c, 0x05, 0x5d, 0x36, 0x91, 0xe2, 0x83, 0xae, 0xa8, 0x12, 0xb5, 0xbf, + 0x61, 0x98, 0x2c, 0x5b, 0x2f, 0xaf, 0xa2, 0x44, 0x84, 0xe7, 0x05, 0x58, 0x36, 0xa6, 0xf2, 0xbb, + 0xef, 0x39, 0x99, 0xa0, 0x38, 0xd8, 0x73, 0x08, 0x66, 0x10, 0x2a, 0x9a, 0xd2, 0xbf, 0xd2, 0x88, + 0xc5, 0x44, 0x53, 0x0a, 0x0e, 0x30, 0x2f, 0xd7, 0x3f, 0x3b, 0x1c, 0x0d, 0x36, 0x8b, 0xda, 0x7c, + 0x0b, 0xc6, 0x4d, 0x9f, 0x18, 0x21, 0xb1, 0x16, 0x7b, 0x87, 0xe9, 0x1c, 0x63, 0xd6, 0x35, 0xd9, + 0x02, 0xc7, 0x8d, 0x29, 0x5f, 0x54, 0xef, 0x46, 0x2a, 0xf1, 0x11, 0x52, 0x78, 0x2f, 0xf2, 0x01, + 0x18, 0xf1, 0xee, 0xb9, 0x91, 0x8b, 0x45, 0x5f, 0xc2, 0xec, 0x53, 0xee, 0xd0, 0xda, 0x98, 0x37, + 0x52, 0x83, 0x42, 0x0d, 0xf7, 0x09, 0x0a, 0xe5, 0xc0, 0x58, 0x9b, 0x4d, 0xc3, 0x40, 0x01, 0xc2, + 0x13, 0x13, 0xaa, 0xa6, 0x90, 0x61, 0x98, 0xb1, 0x24, 0x41, 0xcf, 0x37, 0xca, 0x83, 0x83, 0x8e, + 0x61, 0x12, 0xf5, 0x7c, 0x5b, 0x95, 0x85, 0x38, 0x86, 0xa3, 0x5e, 0x32, 0xda, 0xd8, 0x58, 0x79, + 0x1b, 0x96, 0xe8, 0x9e, 0x12, 0x60, 0x8c, 0x0f, 0x7d, 0x61, 0xc4, 0xb1, 0x9f, 0x1b, 0x8e, 0x16, + 0xa9, 0x88, 0xf7, 0x9f, 0x9f, 0x61, 0x56, 0x2b, 0x95, 0x61, 0xf6, 0x5d, 0x32, 0x2a, 0x66, 0x25, + 0x91, 0xee, 0x28, 0x8a, 0x8a, 0x39, 0x29, 0x48, 0x27, 0x22, 0x61, 0x76, 0xe1, 0x7c, 0x10, 0x1a, + 0x0e, 0x69, 0xda, 0x42, 0xd7, 0x0f, 0x42, 0xa3, 0xdd, 0x29, 0x11, 0x96, 0x92, 0xfb, 0xd9, 0x67, + 0x51, 0xe1, 0x3c, 0xfc, 0xe8, 0x33, 0x1a, 0xcc, 0xb0, 0xf2, 0x85, 0x6e, 0xe8, 0xf1, 0xf8, 0xc9, + 0x31, 0xf1, 0xa3, 0x5f, 0xc0, 0x32, 0x15, 0xa8, 0x59, 0x80, 0x0f, 0x17, 0x52, 0x42, 0xaf, 0xc3, + 0x45, 0xc7, 0x08, 0xc2, 0x05, 0x33, 0xb4, 0x77, 0xec, 0xb0, 0x17, 0x77, 0xe1, 0xe8, 0xb1, 0x28, + 0x99, 0xa8, 0xbd, 0x9c, 0x87, 0x0c, 0xe7, 0xd3, 0xd0, 0xff, 0x52, 0x03, 0x94, 0x5d, 0x42, 0xc8, + 0x81, 0xaa, 0x25, 0x1d, 0xdf, 0xb5, 0x63, 0x09, 0x85, 0x17, 0x71, 0xe6, 0xc8, 0x5f, 0x3e, 0xa2, + 0x80, 0x3c, 0x18, 0xbf, 0xb7, 0x65, 0x87, 0xc4, 0xb1, 0x83, 0xf0, 0x98, 0x22, 0xef, 0x45, 0x61, + 0xa8, 0x5e, 0x90, 0x88, 0x71, 0x4c, 0x43, 0xff, 0xf9, 0x61, 0xa8, 0x46, 0x81, 0x80, 0x0f, 0xbe, + 0x8b, 0xec, 0x02, 0x32, 0x95, 0x64, 0x4a, 0x83, 0xd8, 0x20, 0x98, 0xdf, 0x44, 0x2d, 0x83, 0x0c, + 0xe7, 0x10, 0x40, 0xaf, 0xc3, 0x05, 0xdb, 0xdd, 0xf4, 0x8d, 0x20, 0xf4, 0xbb, 0xcc, 0x5a, 0x3c, + 0x48, 0x4e, 0x22, 0xa6, 0x41, 0x34, 0x72, 0xd0, 0xe1, 0x5c, 0x22, 0x88, 0xc0, 0x18, 0x8f, 0x77, + 0x2e, 0x83, 0xa2, 0x95, 0xca, 0x4e, 0xc9, 0xe3, 0xa8, 0xc7, 0x5c, 0x93, 0xff, 0x0e, 0xb0, 0xc4, + 0xcd, 0x83, 0x7c, 0xf0, 0xff, 0xe5, 0xbd, 0xa9, 0x58, 0xf7, 0xb5, 0xf2, 0xf4, 0xe2, 0x44, 0xa7, + 0x3c, 0xc8, 0x47, 0xb2, 0x10, 0xa7, 0x09, 0xea, 0x7f, 0xa4, 0xc1, 0x08, 0x7f, 0x50, 0x7a, 0xf2, + 0x12, 0xdc, 0x4f, 0x27, 0x24, 0xb8, 0x52, 0x69, 0x55, 0x58, 0x57, 0x0b, 0x13, 0x7e, 0x7c, 0x4b, + 0x83, 0x71, 0x56, 0xe3, 0x14, 0x44, 0xaa, 0x97, 0x93, 0x22, 0xd5, 0xd3, 0xa5, 0xbf, 0xa6, 0x40, + 0xa0, 0xfa, 0xa3, 0x21, 0xf1, 0x2d, 0x4c, 0x62, 0x69, 0xc0, 0x79, 0xe1, 0xb5, 0xb9, 0x6c, 0x6f, + 0x12, 0xba, 0xc4, 0xeb, 0x46, 0x2f, 0x10, 0x51, 0x20, 0xf8, 0x9b, 0xa1, 0x2c, 0x18, 0xe7, 0xb5, + 0x41, 0xbf, 0xaf, 0x51, 0xd9, 0x20, 0xf4, 0x6d, 0x73, 0xa0, 0x2c, 0x1a, 0x51, 0xdf, 0xe6, 0x57, + 0x38, 0x32, 0xae, 0x99, 0xdc, 0x8d, 0x85, 0x04, 0x56, 0x7a, 0x7f, 0x6f, 0x6e, 0x2e, 0xc7, 0x68, + 0x14, 0x47, 0xd4, 0x0f, 0xc2, 0x4f, 0xff, 0x69, 0xdf, 0x2a, 0xcc, 0x50, 0x2b, 0x7b, 0x8c, 0x6e, + 0xc1, 0x48, 0x60, 0x7a, 0x1d, 0x72, 0x94, 0xbc, 0x40, 0xd1, 0x00, 0x37, 0x69, 0x4b, 0xcc, 0x11, + 0xcc, 0xbe, 0x02, 0x93, 0x6a, 0xcf, 0x73, 0x34, 0x9f, 0xba, 0xaa, 0xf9, 0x1c, 0xf9, 0xae, 0x47, + 0xd5, 0x94, 0xfe, 0xa0, 0x02, 0xa3, 0x3c, 0x3b, 0xed, 0x21, 0xcc, 0xd1, 0xb6, 0x0c, 0x5d, 0x3e, + 0x40, 0xd2, 0x6d, 0x35, 0xce, 0xdf, 0x4b, 0x9e, 0xab, 0x8c, 0x81, 0x1a, 0xbd, 0x1c, 0xb9, 0x51, + 0xf4, 0xc7, 0xa1, 0xf2, 0xb9, 0x4b, 0xf8, 0x87, 0x9d, 0x74, 0xbc, 0xc7, 0x3f, 0xd6, 0x60, 0x32, + 0x11, 0x4e, 0xb3, 0x0d, 0x43, 0x7e, 0x94, 0xd5, 0xaa, 0xac, 0xb5, 0x5e, 0xfa, 0xfe, 0x5c, 0xe9, + 0x53, 0x09, 0x53, 0x3a, 0x51, 0xe4, 0xcd, 0xca, 0x31, 0x45, 0xde, 0xd4, 0xbf, 0xa2, 0xc1, 0x25, + 0xf9, 0x41, 0xc9, 0x58, 0x4c, 0xe8, 0x31, 0xa8, 0x1a, 0x1d, 0x9b, 0x19, 0x94, 0x54, 0x93, 0xdc, + 0xc2, 0x5a, 0x83, 0x95, 0xe1, 0x08, 0x8a, 0xde, 0x09, 0x55, 0xb9, 0xf0, 0x84, 0xd8, 0x19, 0xf1, + 0xac, 0xe8, 0xfe, 0x21, 0xaa, 0x81, 0xde, 0xa6, 0x44, 0x97, 0x1f, 0x89, 0xe5, 0x84, 0x88, 0x30, + 0xbf, 0x07, 0xd5, 0xdf, 0x03, 0xe3, 0xcd, 0xe6, 0x2d, 0x1e, 0xa5, 0xe6, 0x08, 0xa6, 0x55, 0xfd, + 0x0b, 0x43, 0x30, 0xc5, 0x4d, 0x0c, 0x8b, 0xb6, 0x6b, 0xd9, 0x6e, 0xeb, 0x14, 0xce, 0x94, 0x75, + 0x18, 0xe7, 0xd6, 0x8c, 0x03, 0x32, 0x90, 0x35, 0x65, 0xa5, 0x74, 0x18, 0xda, 0x08, 0x80, 0x63, + 0x44, 0xe8, 0x36, 0x8c, 0xbe, 0x4a, 0xf9, 0x9b, 0xdc, 0x17, 0x87, 0x62, 0x33, 0xd1, 0xa2, 0x67, + 0xac, 0x31, 0xc0, 0x02, 0x05, 0x0a, 0x98, 0x73, 0x1a, 0x13, 0xb8, 0x06, 0x89, 0xb1, 0x90, 0x18, + 0xd9, 0x28, 0xb7, 0xc4, 0xa4, 0xf0, 0x71, 0x63, 0xbf, 0x70, 0x44, 0x88, 0xc5, 0xd0, 0x4e, 0xb4, + 0x78, 0x93, 0xc4, 0xd0, 0x4e, 0xf4, 0xb9, 0xe0, 0x68, 0x7c, 0x1a, 0x2e, 0xe6, 0x0e, 0xc6, 0xc1, + 0xe2, 0xac, 0xfe, 0x4f, 0x2b, 0x30, 0xdc, 0x24, 0xc4, 0x3a, 0x85, 0x95, 0xf9, 0x72, 0x42, 0xda, + 0xf9, 0x40, 0xe9, 0x28, 0xde, 0x45, 0xc6, 0xaa, 0xcd, 0x94, 0xb1, 0xea, 0x83, 0xa5, 0x29, 0xf4, + 0xb7, 0x54, 0xfd, 0x4a, 0x05, 0x80, 0x56, 0x5b, 0x34, 0xcc, 0x6d, 0xce, 0x71, 0xa2, 0xd5, 0xac, + 0x25, 0x39, 0x4e, 0x76, 0x19, 0x9e, 0xe6, 0xf5, 0xa5, 0x0e, 0xa3, 0x3c, 0xef, 0xbb, 0xb0, 0xfa, + 0x03, 0x4f, 0x8b, 0x4b, 0x4b, 0xb0, 0x80, 0x24, 0xb9, 0xc5, 0xf0, 0x31, 0x71, 0x0b, 0x7d, 0x17, + 0x58, 0x1e, 0xc3, 0xfa, 0x6a, 0x13, 0xb5, 0x95, 0xd1, 0xa9, 0x94, 0x97, 0xe5, 0x05, 0xba, 0x03, + 0x77, 0xf9, 0x17, 0x34, 0x38, 0x9b, 0xaa, 0x7b, 0x08, 0x9d, 0xee, 0x44, 0x78, 0xa6, 0xfe, 0x87, + 0x1a, 0x54, 0x69, 0x5f, 0x4e, 0x81, 0xd1, 0xfc, 0xad, 0x24, 0xa3, 0x79, 0x5f, 0xd9, 0x21, 0x2e, + 0xe0, 0x2f, 0x7f, 0x5e, 0x01, 0x16, 0x2e, 0x5f, 0x5c, 0xd2, 0x2b, 0x77, 0xdf, 0x5a, 0xc1, 0xdd, + 0xf7, 0xc3, 0xe2, 0xea, 0x3c, 0x65, 0xa3, 0x54, 0xae, 0xcf, 0xdf, 0xa9, 0xdc, 0x8e, 0x0f, 0x25, + 0xb7, 0x4d, 0xce, 0x0d, 0xf9, 0x6b, 0x30, 0x15, 0x6c, 0x79, 0x5e, 0x18, 0xbd, 0xc0, 0x1f, 0x2e, + 0x6f, 0x8f, 0x66, 0x9e, 0xc0, 0xf2, 0x53, 0xf8, 0xf5, 0x4b, 0x53, 0xc5, 0x8d, 0x93, 0xa4, 0xd0, + 0x3c, 0xc0, 0x86, 0xe3, 0x99, 0xdb, 0xb5, 0x46, 0x1d, 0x4b, 0xcf, 0x4f, 0xe6, 0xb6, 0xb3, 0x18, + 0x95, 0x62, 0xa5, 0xc6, 0x40, 0xb7, 0xf9, 0x7f, 0xa6, 0xf1, 0x91, 0x3e, 0xc2, 0xe2, 0x3d, 0x45, + 0x8e, 0xf2, 0xf6, 0x14, 0x47, 0x51, 0x92, 0x6d, 0x27, 0xb8, 0xca, 0x9c, 0x14, 0xd8, 0x87, 0x63, + 0xfb, 0x73, 0x22, 0x49, 0xd0, 0xef, 0x8a, 0xcf, 0x8c, 0x32, 0x2e, 0x74, 0x60, 0xca, 0x51, 0x13, + 0x3f, 0x8a, 0x3d, 0x52, 0x2a, 0x67, 0x64, 0xf4, 0x94, 0x20, 0x51, 0x8c, 0x93, 0x04, 0xd0, 0x7b, + 0x61, 0x4a, 0x7e, 0x1d, 0x1d, 0x4c, 0xe9, 0xbb, 0xc0, 0x96, 0xc3, 0x9a, 0x0a, 0xc0, 0xc9, 0x7a, + 0xfa, 0xdf, 0x1b, 0x86, 0x87, 0x78, 0xdf, 0x99, 0xc5, 0xa0, 0x4e, 0x3a, 0xc4, 0xb5, 0x88, 0x6b, + 0xf6, 0x98, 0xcc, 0x6a, 0x79, 0x2d, 0xf4, 0x77, 0x34, 0xa8, 0x12, 0xd7, 0xea, 0x78, 0xb6, 0x2b, + 0x4d, 0xfd, 0x1f, 0x29, 0x9f, 0xb3, 0xa2, 0x80, 0xca, 0x92, 0x20, 0x20, 0xa2, 0x6e, 0x8a, 0x5f, + 0x38, 0x22, 0x8c, 0xee, 0xc1, 0x48, 0xc7, 0xf7, 0x36, 0xa4, 0xb2, 0xf6, 0xfc, 0xb1, 0xf7, 0x60, + 0x8d, 0x62, 0xe7, 0x93, 0xcb, 0xfe, 0xc5, 0x9c, 0x1e, 0x7a, 0x1d, 0x46, 0xef, 0x11, 0x62, 0x45, + 0x06, 0xfd, 0x17, 0x8e, 0x9d, 0xf2, 0x0b, 0x0c, 0x3d, 0x3f, 0xd0, 0xf8, 0xff, 0x58, 0x90, 0xa4, + 0xc4, 0x59, 0x2f, 0xa4, 0x64, 0xf9, 0xc2, 0xc9, 0x7c, 0xb6, 0x20, 0xce, 0xff, 0xc7, 0x82, 0xa4, + 0x8e, 0xe1, 0x6d, 0x87, 0x9a, 0xb3, 0xa3, 0xe8, 0x10, 0x77, 0x40, 0x3f, 0xb8, 0x3b, 0x47, 0x41, + 0xb8, 0x06, 0x8f, 0x1c, 0xe2, 0xfb, 0x8e, 0x13, 0x23, 0x9f, 0xa2, 0xa3, 0x60, 0x7c, 0x0e, 0x1e, + 0x55, 0x30, 0x2e, 0xed, 0x52, 0xc5, 0xab, 0x66, 0x74, 0x0c, 0xd3, 0x0e, 0x7b, 0xfc, 0xe1, 0x37, + 0xbf, 0x61, 0x38, 0x02, 0xca, 0xcf, 0x0f, 0xc3, 0x9c, 0x82, 0x33, 0xe1, 0x9e, 0x24, 0x4f, 0x99, + 0xaf, 0x6b, 0x30, 0x61, 0xb8, 0xae, 0x48, 0xd0, 0x25, 0xad, 0xdd, 0xd6, 0x80, 0x4b, 0x28, 0x8f, + 0xd4, 0xfc, 0x42, 0x4c, 0x26, 0x75, 0x83, 0xad, 0x40, 0xb0, 0xda, 0x9b, 0x3e, 0x8e, 0x4a, 0x95, + 0x53, 0x75, 0x54, 0x42, 0x9f, 0x90, 0xec, 0x9d, 0xeb, 0x82, 0x2f, 0x9e, 0xc0, 0xf8, 0xb0, 0xd3, + 0x22, 0xdf, 0x46, 0x33, 0xfb, 0x41, 0x98, 0x4e, 0x8f, 0xde, 0x91, 0x0c, 0x27, 0xff, 0x62, 0x28, + 0xb1, 0xba, 0x0a, 0xc9, 0x1f, 0xc2, 0x32, 0xf5, 0x46, 0x6a, 0xc1, 0x70, 0xf1, 0xcb, 0x3e, 0xa9, + 0x01, 0x39, 0xde, 0x55, 0x33, 0x74, 0xba, 0xee, 0x6d, 0x83, 0x4e, 0x5b, 0x0d, 0x2e, 0x29, 0x63, + 0xc4, 0xee, 0x80, 0x6b, 0x5b, 0xc4, 0xdc, 0x3e, 0x92, 0x45, 0x66, 0x91, 0x6a, 0xca, 0x11, 0x12, + 0x25, 0xd5, 0xd4, 0xe3, 0x30, 0xb6, 0x63, 0x07, 0xb6, 0x0c, 0x47, 0xa2, 0xe0, 0x78, 0x9e, 0x17, + 0x63, 0x09, 0xd7, 0x97, 0x13, 0x8c, 0x64, 0xdd, 0xeb, 0x78, 0x8e, 0xd7, 0xea, 0x2d, 0xdc, 0x33, + 0x7c, 0x82, 0xbd, 0x6e, 0x28, 0xb0, 0x1d, 0xb6, 0x47, 0x2b, 0xf0, 0xb0, 0x82, 0x2d, 0xf7, 0x5d, + 0xf5, 0x51, 0xd0, 0x7d, 0xbb, 0x2a, 0x25, 0x2b, 0xf1, 0xf0, 0xec, 0xb7, 0x35, 0xb8, 0x4c, 0x8a, + 0x18, 0xa8, 0x90, 0x4e, 0x06, 0xdd, 0xc1, 0x85, 0x0c, 0x5a, 0x84, 0xab, 0x2c, 0x02, 0xe3, 0xe2, + 0x9e, 0xa1, 0x5e, 0x22, 0xe1, 0x5a, 0x65, 0x10, 0x33, 0x51, 0xce, 0x7c, 0xf7, 0x4b, 0xb7, 0x86, + 0x7e, 0x55, 0x83, 0x0b, 0x4e, 0xce, 0x1e, 0x14, 0x22, 0x45, 0xf3, 0x04, 0xb6, 0x37, 0xbf, 0x92, + 0xcb, 0x83, 0xe0, 0xdc, 0xae, 0xa0, 0x5f, 0x2f, 0x7c, 0xf0, 0x3f, 0x52, 0x3e, 0xf3, 0xf5, 0x41, + 0x0b, 0xb1, 0xc4, 0xdb, 0xff, 0x4f, 0xc0, 0x84, 0x17, 0x6f, 0x55, 0x11, 0xa1, 0xe1, 0xc3, 0x03, + 0x76, 0x4e, 0xd9, 0xfc, 0xdc, 0xc1, 0x41, 0x29, 0xc0, 0x2a, 0x3d, 0xf4, 0x55, 0x0d, 0x90, 0x95, + 0x11, 0x48, 0x84, 0x8f, 0xc5, 0x73, 0xc7, 0x2e, 0x1b, 0xf2, 0x2b, 0xdd, 0x6c, 0x39, 0xce, 0xe9, + 0x04, 0x5b, 0x66, 0x61, 0x0e, 0xf7, 0x10, 0x81, 0x44, 0x07, 0x5d, 0x66, 0x79, 0x8c, 0x89, 0x2f, + 0xb3, 0x3c, 0x08, 0xce, 0xed, 0x8a, 0xfe, 0x95, 0x31, 0x6e, 0xc3, 0x60, 0x77, 0x6e, 0x1b, 0x30, + 0xba, 0xc1, 0x6c, 0x5e, 0x82, 0x6d, 0x94, 0x36, 0xb0, 0x71, 0xcb, 0x19, 0x17, 0xa1, 0xf9, 0xff, + 0x58, 0x60, 0x46, 0x2f, 0xc1, 0x90, 0xe5, 0x06, 0x62, 0xbf, 0xbf, 0x7f, 0x00, 0x53, 0x51, 0xfc, + 0xd4, 0xa3, 0xbe, 0xda, 0xc4, 0x14, 0x29, 0x72, 0xa1, 0xea, 0x0a, 0xb5, 0x5f, 0xa8, 0x26, 0xa5, + 0x53, 0x09, 0x46, 0xe6, 0x83, 0xc8, 0x68, 0x21, 0x4b, 0x70, 0x44, 0x83, 0xd2, 0x4b, 0xd9, 0xb9, + 0x4b, 0xd3, 0x8b, 0x0c, 0x5f, 0xfd, 0x6c, 0x8b, 0x6b, 0xaa, 0x19, 0x6b, 0xe4, 0xf0, 0x66, 0xac, + 0xa9, 0x42, 0xb3, 0x3f, 0x81, 0xd1, 0xd0, 0xb0, 0xdd, 0x90, 0x9b, 0x31, 0x4a, 0x5e, 0x51, 0xd3, + 0xfe, 0xaf, 0x53, 0x2c, 0xb1, 0xbd, 0x80, 0xfd, 0x0c, 0xb0, 0x40, 0x4e, 0x17, 0xd6, 0x0e, 0x4b, + 0xe8, 0x2b, 0x36, 0x66, 0xe9, 0x85, 0xc5, 0xd3, 0x02, 0xf3, 0x85, 0xc5, 0xff, 0xc7, 0x02, 0x33, + 0x7a, 0x05, 0xaa, 0x81, 0x74, 0x2a, 0xa8, 0x0e, 0x9a, 0x47, 0x52, 0x78, 0x14, 0x88, 0xf7, 0x1c, + 0xc2, 0x95, 0x20, 0xc2, 0x8f, 0x36, 0x60, 0xcc, 0xe6, 0x2f, 0x10, 0x44, 0xf8, 0x95, 0xf7, 0x0f, + 0x90, 0x46, 0x49, 0x66, 0xba, 0xe6, 0x8f, 0xf6, 0x25, 0x62, 0xfd, 0xdf, 0x8c, 0x73, 0x2b, 0xb4, + 0xf0, 0xdb, 0xda, 0x84, 0xaa, 0x44, 0x37, 0xc8, 0xbb, 0x22, 0x99, 0xb8, 0x8e, 0x7f, 0x5a, 0x94, + 0xc6, 0x2e, 0xc2, 0x8d, 0x6a, 0x79, 0xef, 0xc3, 0xe2, 0x80, 0xed, 0x87, 0x7b, 0x1b, 0xf6, 0x2a, + 0xcb, 0x34, 0x25, 0xdf, 0x52, 0x0f, 0x95, 0x5f, 0x5a, 0xd1, 0x3b, 0xeb, 0x44, 0x86, 0x29, 0xf9, + 0x14, 0x5b, 0x21, 0x52, 0xe0, 0xd7, 0x36, 0x5c, 0xca, 0xaf, 0xed, 0x19, 0x38, 0x2b, 0xfc, 0x08, + 0x1a, 0x2c, 0xa9, 0x73, 0xd8, 0x13, 0x6e, 0xef, 0xcc, 0xc3, 0xa4, 0x96, 0x04, 0xe1, 0x74, 0x5d, + 0xf4, 0x07, 0x1a, 0x54, 0x4d, 0x21, 0xf1, 0x88, 0x7d, 0xb5, 0x3c, 0xd8, 0x55, 0xc5, 0xbc, 0x14, + 0xa0, 0xb8, 0x52, 0xf0, 0xbc, 0xe4, 0x11, 0xb2, 0xf8, 0x98, 0x7c, 0x0e, 0xa2, 0x5e, 0xa3, 0x6f, + 0x53, 0xbd, 0xc7, 0x61, 0xc9, 0xf4, 0xd8, 0x4b, 0x58, 0xee, 0x8f, 0x7f, 0x67, 0xc0, 0xaf, 0x58, + 0x88, 0x31, 0xf2, 0x0f, 0xf9, 0x48, 0xa4, 0xdd, 0xc4, 0x90, 0x63, 0xfa, 0x16, 0xb5, 0xfb, 0xe8, + 0x1f, 0x6a, 0xf0, 0x28, 0x7f, 0x04, 0x51, 0xa3, 0x42, 0x0c, 0xcb, 0x49, 0x4c, 0xe2, 0x24, 0xc8, + 0xb1, 0x17, 0x5e, 0xf5, 0xc8, 0x5e, 0x78, 0x8f, 0xed, 0xef, 0xcd, 0x3d, 0x5a, 0x3b, 0x04, 0x6e, + 0x7c, 0xa8, 0x1e, 0xcc, 0x6e, 0xc3, 0x54, 0x62, 0xb2, 0x4f, 0xd2, 0x4b, 0x63, 0xd6, 0x85, 0xe9, + 0xf4, 0x9c, 0x9c, 0xa8, 0x57, 0xc8, 0x6d, 0x18, 0x8f, 0x0e, 0x0b, 0xf4, 0x90, 0x42, 0x28, 0x3e, + 0xcc, 0x6f, 0x93, 0x1e, 0xa7, 0x3a, 0x97, 0x50, 0x14, 0xb9, 0x19, 0xf2, 0x79, 0x5a, 0x20, 0x10, + 0xea, 0xdf, 0x11, 0x36, 0xe6, 0x75, 0xd2, 0xee, 0x38, 0x46, 0x48, 0xde, 0xfc, 0x37, 0x9c, 0xfa, + 0x7f, 0xd5, 0x38, 0xcf, 0x17, 0xb9, 0xf5, 0x0d, 0x98, 0x68, 0xf3, 0xe0, 0xad, 0xec, 0x01, 0xb6, + 0x56, 0xfe, 0xe9, 0xf7, 0x4a, 0x8c, 0x06, 0xab, 0x38, 0xd1, 0x3d, 0x18, 0x97, 0xe2, 0x85, 0xb4, + 0x6e, 0xdc, 0x18, 0xec, 0x70, 0x8e, 0x24, 0x99, 0xe8, 0xf2, 0x4c, 0x96, 0x04, 0x38, 0xa6, 0xa5, + 0x1b, 0x80, 0xb2, 0x6d, 0xa8, 0x22, 0x2c, 0x9d, 0xbd, 0x53, 0xc9, 0xd0, 0x33, 0x0e, 0xdf, 0x07, + 0xa6, 0xb0, 0xd5, 0xbf, 0x51, 0x81, 0xdc, 0x14, 0x64, 0x48, 0x87, 0x51, 0xfe, 0xfa, 0x48, 0x66, + 0xc7, 0xa5, 0xe2, 0x04, 0x7f, 0x9a, 0x84, 0x05, 0x04, 0xdd, 0xe1, 0x56, 0x15, 0xd7, 0x62, 0x91, + 0xc8, 0xe2, 0x9d, 0xaa, 0xbe, 0x73, 0x5b, 0xca, 0xab, 0x80, 0xf3, 0xdb, 0xa1, 0x1d, 0x40, 0x6d, + 0x63, 0x37, 0x8d, 0x6d, 0x80, 0xd4, 0x34, 0x2b, 0x19, 0x6c, 0x38, 0x87, 0x02, 0x3d, 0xcc, 0x0c, + 0xd3, 0x24, 0x9d, 0x90, 0x58, 0xfc, 0x13, 0xe5, 0x15, 0x17, 0x3b, 0xcc, 0x16, 0x92, 0x20, 0x9c, + 0xae, 0xab, 0xff, 0x60, 0x18, 0x2e, 0x27, 0x07, 0x91, 0xee, 0x50, 0x61, 0xe5, 0x41, 0xcf, 0x4a, + 0x0f, 0x70, 0x3e, 0x90, 0x8f, 0xa7, 0x3d, 0xc0, 0x67, 0x6a, 0x3e, 0x61, 0xc7, 0xa2, 0xe1, 0x04, + 0xb2, 0x51, 0xc2, 0x1b, 0xdc, 0x07, 0x94, 0xca, 0x98, 0x5f, 0x32, 0x6e, 0xd2, 0xbe, 0x88, 0x62, + 0x94, 0xc4, 0x84, 0x73, 0xb0, 0x4b, 0x9a, 0x3c, 0xf9, 0x67, 0x44, 0x73, 0xa8, 0x3c, 0xcd, 0x24, + 0x26, 0x9c, 0x83, 0x1d, 0x7d, 0x51, 0x83, 0xd9, 0x64, 0xf1, 0x0d, 0xdb, 0xb5, 0x83, 0x2d, 0x11, + 0x4f, 0xeb, 0xe8, 0x0e, 0xe8, 0x2c, 0x7c, 0xfd, 0x72, 0x21, 0x46, 0xdc, 0x87, 0x1a, 0xfa, 0x92, + 0x06, 0x57, 0x52, 0xe3, 0x92, 0x88, 0xee, 0x75, 0x74, 0x5f, 0x74, 0xf6, 0x3e, 0x73, 0xb9, 0x18, + 0x25, 0xee, 0x47, 0x4f, 0xff, 0xe7, 0x15, 0x18, 0x61, 0x37, 0xb4, 0x6f, 0x0e, 0x97, 0x5c, 0xd6, + 0xd5, 0x42, 0x2f, 0x95, 0x56, 0xca, 0x4b, 0xe5, 0xd9, 0xf2, 0x24, 0xfa, 0xbb, 0xa9, 0x7c, 0x04, + 0x2e, 0xb1, 0x6a, 0x0b, 0x16, 0xb3, 0xcc, 0x04, 0xc4, 0x5a, 0xb0, 0x2c, 0xf6, 0x42, 0xfc, 0x60, + 0xbb, 0xf6, 0x43, 0x30, 0xd4, 0xf5, 0x9d, 0x74, 0xcc, 0x84, 0xbb, 0x78, 0x19, 0xd3, 0x72, 0xfd, + 0x8b, 0x1a, 0x4c, 0x33, 0xdc, 0xca, 0xf6, 0x45, 0x3b, 0x50, 0xf5, 0xc5, 0x16, 0x16, 0x73, 0xb3, + 0x5c, 0xfa, 0xd3, 0x72, 0xd8, 0x82, 0x48, 0x90, 0x28, 0x7e, 0xe1, 0x88, 0x96, 0xfe, 0xfd, 0x51, + 0x98, 0x29, 0x6a, 0x84, 0xbe, 0xac, 0xc1, 0x25, 0x33, 0x96, 0xa8, 0x16, 0xba, 0xe1, 0x96, 0xe7, + 0xdb, 0xa1, 0x2d, 0x5c, 0x17, 0x4a, 0xaa, 0x9a, 0xb5, 0x85, 0xa8, 0x57, 0x2c, 0x1a, 0x55, 0x2d, + 0x97, 0x02, 0x2e, 0xa0, 0x8c, 0x5e, 0x07, 0xd8, 0x8e, 0xc3, 0x5f, 0x56, 0xca, 0x07, 0xda, 0x67, + 0x9f, 0xad, 0x84, 0xc8, 0x94, 0x9d, 0x62, 0xc6, 0x4d, 0xa5, 0x5c, 0x21, 0x47, 0x89, 0x07, 0xc1, + 0xd6, 0x6d, 0xd2, 0xeb, 0x18, 0xb6, 0xbc, 0xa1, 0x2d, 0x4f, 0xbc, 0xd9, 0xbc, 0x25, 0x50, 0x25, + 0x89, 0x2b, 0xe5, 0x0a, 0x39, 0xf4, 0x79, 0x0d, 0xa6, 0xb8, 0x42, 0x25, 0x5c, 0x71, 0x05, 0x67, + 0x5b, 0x2d, 0xdd, 0x81, 0x3b, 0x2a, 0xb6, 0xa8, 0x0f, 0xec, 0x16, 0x3f, 0x09, 0x4a, 0xd2, 0xa5, + 0x0b, 0xe3, 0x5c, 0x90, 0x3e, 0xb7, 0x04, 0x67, 0x5b, 0x19, 0x3c, 0xcd, 0xa9, 0x72, 0x08, 0x72, + 0xbd, 0x38, 0x0b, 0xce, 0x92, 0x67, 0x9d, 0x22, 0xa1, 0x69, 0x2d, 0xb9, 0xa6, 0xdf, 0x63, 0x8f, + 0xe3, 0x68, 0xa7, 0x46, 0xcb, 0x77, 0x6a, 0x69, 0xbd, 0x56, 0x4f, 0x20, 0x4b, 0x76, 0x2a, 0x0b, + 0xce, 0x92, 0xd7, 0x3f, 0x55, 0x81, 0x07, 0x0a, 0x16, 0x5a, 0xc1, 0x51, 0xa9, 0x9d, 0xe8, 0x51, + 0xf9, 0x23, 0x10, 0x09, 0xd8, 0x3b, 0x0a, 0x36, 0x06, 0x6f, 0x92, 0x77, 0x14, 0xac, 0xaf, 0x05, + 0xce, 0x5c, 0x7f, 0xa8, 0xc1, 0xb9, 0x4c, 0x30, 0xc4, 0x43, 0x79, 0xe1, 0x9f, 0x9a, 0x9f, 0xd1, + 0xdb, 0xe2, 0xc0, 0xc7, 0x43, 0xf1, 0x9b, 0xce, 0x74, 0xd0, 0x63, 0xfd, 0x05, 0x98, 0x4a, 0xf8, + 0x72, 0x45, 0x01, 0x5b, 0xb4, 0xdc, 0x80, 0x2d, 0x6a, 0x3c, 0x96, 0x4a, 0xbf, 0x78, 0x2c, 0xfa, + 0x67, 0x2a, 0x30, 0x5b, 0xcc, 0x5d, 0xfe, 0xda, 0xac, 0xfa, 0x68, 0xe7, 0x67, 0xb9, 0xfc, 0x5f, + 0x9b, 0x31, 0x78, 0xe3, 0xac, 0xd8, 0xf9, 0xec, 0x06, 0xe4, 0x65, 0x18, 0x65, 0x41, 0x70, 0xa4, + 0xf4, 0x70, 0xbd, 0x74, 0x70, 0x9d, 0x80, 0x6b, 0x95, 0xfc, 0x7f, 0x2c, 0xb0, 0xa2, 0x3a, 0x4c, + 0x9b, 0x8e, 0xd7, 0xb5, 0x44, 0xba, 0xc6, 0xd5, 0x58, 0x81, 0x8d, 0x62, 0x24, 0xd6, 0x52, 0x70, + 0x9c, 0x69, 0x81, 0x30, 0xbf, 0x43, 0xe1, 0x67, 0x7b, 0xa9, 0x18, 0x89, 0xf5, 0xd5, 0x26, 0xcf, + 0x04, 0x10, 0xdd, 0x9d, 0xbc, 0x0a, 0x40, 0xe4, 0x1e, 0x96, 0xaf, 0x00, 0x9f, 0x29, 0x17, 0xfd, + 0x31, 0xe2, 0x04, 0x52, 0x10, 0x8f, 0x8a, 0x02, 0xac, 0x10, 0x41, 0x3e, 0x4c, 0x6c, 0xd9, 0x1b, + 0xc4, 0x77, 0xb9, 0x4c, 0x39, 0x52, 0x5e, 0x5c, 0xbe, 0x15, 0xa3, 0xe1, 0xf6, 0x0e, 0xa5, 0x00, + 0xab, 0x44, 0x90, 0xcf, 0x45, 0x33, 0x6e, 0xae, 0x1e, 0x24, 0x15, 0x7c, 0x6c, 0x07, 0x8f, 0xbf, + 0x33, 0x2e, 0xc3, 0x0a, 0x15, 0xe4, 0x02, 0xb8, 0x51, 0xf4, 0xab, 0x41, 0x6e, 0x40, 0xe2, 0x18, + 0x5a, 0x5c, 0x08, 0x8b, 0x7f, 0x63, 0x85, 0x02, 0x1d, 0xd7, 0x76, 0x1c, 0x4e, 0x4d, 0xd8, 0x34, + 0x9f, 0x1d, 0x30, 0xa4, 0x9d, 0xb0, 0x23, 0xc5, 0x05, 0x58, 0x25, 0x42, 0xbf, 0xb1, 0x1d, 0x05, + 0x41, 0x13, 0x97, 0x22, 0xa5, 0xbe, 0x31, 0x0e, 0xa5, 0x26, 0xd2, 0x49, 0x45, 0xbf, 0xb1, 0x42, + 0x01, 0xbd, 0xa2, 0x5c, 0xbd, 0x41, 0x79, 0x6b, 0xdc, 0xa1, 0xae, 0xdd, 0xde, 0x1d, 0x1b, 0xa5, + 0x26, 0xd8, 0x5e, 0xbd, 0xa2, 0x18, 0xa4, 0x58, 0x70, 0x38, 0xca, 0x3f, 0x32, 0x06, 0xaa, 0xd8, + 0x99, 0x76, 0xb2, 0xaf, 0x33, 0x6d, 0x8d, 0x0a, 0xaa, 0xca, 0xe3, 0x0e, 0xc6, 0x14, 0xa6, 0xe2, + 0x1b, 0x97, 0x66, 0x1a, 0x88, 0xb3, 0xf5, 0xf9, 0xd9, 0x47, 0x2c, 0xd6, 0xf6, 0x8c, 0x7a, 0xf6, + 0xf1, 0x32, 0x1c, 0x41, 0xd1, 0x0e, 0x4c, 0x06, 0x8a, 0x67, 0xae, 0xc8, 0x01, 0x38, 0xc0, 0x5d, + 0x99, 0xf0, 0xca, 0x65, 0x21, 0x81, 0xd4, 0x12, 0x9c, 0xa0, 0x83, 0x5e, 0x87, 0x71, 0x69, 0x9c, + 0x0c, 0x66, 0xa6, 0xcb, 0x3f, 0xc3, 0xcc, 0x0f, 0x7a, 0x17, 0x5b, 0x1b, 0x25, 0x28, 0xc0, 0x31, + 0x3d, 0xd4, 0x4d, 0x86, 0x60, 0x38, 0x77, 0x2c, 0xcf, 0xce, 0x23, 0xdf, 0xac, 0xa2, 0xf0, 0x0b, + 0x74, 0x6a, 0xc9, 0x6e, 0xc7, 0x0b, 0xba, 0x3e, 0x61, 0xc1, 0x3c, 0xd9, 0xf4, 0xa0, 0x78, 0x6a, + 0x97, 0xd2, 0x40, 0x9c, 0xad, 0x8f, 0x3e, 0xa7, 0xc1, 0x34, 0x4f, 0xa1, 0x48, 0x8f, 0x2e, 0xcf, + 0x25, 0x6e, 0x18, 0xb0, 0x1c, 0x81, 0x25, 0x5f, 0x4a, 0x36, 0x53, 0xb8, 0x78, 0xde, 0x99, 0x74, + 0x29, 0xce, 0xd0, 0xa4, 0x2b, 0x47, 0x7d, 0xb8, 0xce, 0x52, 0x0d, 0x96, 0x5c, 0x39, 0xea, 0xa3, + 0x78, 0xbe, 0x72, 0xd4, 0x12, 0x9c, 0xa0, 0xa3, 0xff, 0x5b, 0x0d, 0x20, 0x32, 0x88, 0x9c, 0x86, + 0x99, 0xdf, 0x4a, 0xd8, 0x88, 0x16, 0x07, 0x32, 0xe0, 0x90, 0x42, 0x63, 0xff, 0x9f, 0x68, 0x70, + 0x26, 0xae, 0x76, 0x0a, 0x8a, 0x87, 0x99, 0x54, 0x3c, 0x3e, 0x38, 0xd8, 0x77, 0x15, 0x68, 0x1f, + 0xff, 0xa7, 0xa2, 0x7e, 0x15, 0x13, 0xaa, 0x76, 0x12, 0x57, 0xd7, 0x94, 0xf4, 0xad, 0x41, 0xae, + 0xae, 0xd5, 0x37, 0xb1, 0xf1, 0xf7, 0xe6, 0x5c, 0x65, 0xff, 0xed, 0x84, 0x48, 0x33, 0xc0, 0xcb, + 0xef, 0x48, 0x7e, 0x91, 0xa4, 0xf9, 0x00, 0x1c, 0x24, 0xdf, 0xbc, 0xaa, 0x72, 0x3c, 0x7e, 0x09, + 0xfe, 0xa1, 0x72, 0xcf, 0x8d, 0x95, 0x0f, 0xee, 0xcb, 0xe7, 0xf4, 0x6f, 0x4d, 0xc1, 0x84, 0x62, + 0x3b, 0x4c, 0x5d, 0xc4, 0x6b, 0xa7, 0x71, 0x11, 0x1f, 0xc2, 0x84, 0x19, 0xc5, 0xb8, 0x96, 0xc3, + 0x3e, 0x20, 0xcd, 0x88, 0xd3, 0xc6, 0xd1, 0xb3, 0x03, 0xac, 0x92, 0xa1, 0xf2, 0x40, 0xb4, 0xc6, + 0x86, 0x8e, 0xc1, 0x3d, 0xa2, 0xdf, 0xba, 0x7a, 0x0a, 0x40, 0x8a, 0x94, 0xc4, 0x12, 0x01, 0x0a, + 0xa3, 0xdc, 0x30, 0x8d, 0xe0, 0x56, 0x04, 0xc3, 0x4a, 0x3d, 0xf4, 0x1a, 0x4c, 0x39, 0x6a, 0xb2, + 0x04, 0x21, 0xef, 0x96, 0x7a, 0xe1, 0x94, 0xc8, 0xba, 0xc0, 0x8d, 0x61, 0x89, 0x22, 0x9c, 0x24, + 0x45, 0x97, 0x81, 0x23, 0x13, 0xa1, 0x0c, 0xe4, 0xea, 0x13, 0xa5, 0x53, 0x89, 0x97, 0x41, 0x54, + 0x14, 0x60, 0x85, 0x48, 0x81, 0x3f, 0xc6, 0x58, 0x29, 0x7f, 0x8c, 0x2e, 0x9c, 0xf7, 0x49, 0xe8, + 0xf7, 0x6a, 0x3d, 0x93, 0xe5, 0x07, 0xf2, 0x43, 0xa6, 0x18, 0x56, 0xcb, 0x85, 0x0c, 0xc2, 0x59, + 0x54, 0x38, 0x0f, 0x7f, 0x42, 0xa6, 0x1a, 0xef, 0x2b, 0x53, 0xbd, 0x1b, 0x26, 0x42, 0x62, 0x6e, + 0xb9, 0xb6, 0x69, 0x38, 0x8d, 0xba, 0x88, 0xde, 0x17, 0x8b, 0x07, 0x31, 0x08, 0xab, 0xf5, 0xd0, + 0x22, 0x0c, 0x75, 0x6d, 0x4b, 0x08, 0x95, 0x3f, 0x19, 0x59, 0xe1, 0x1b, 0xf5, 0xfb, 0x7b, 0x73, + 0x6f, 0x8d, 0x1d, 0x1c, 0xa2, 0xaf, 0xba, 0xd6, 0xd9, 0x6e, 0x5d, 0x0b, 0x7b, 0x1d, 0x12, 0xcc, + 0xdf, 0x6d, 0xd4, 0x31, 0x6d, 0x9c, 0xe7, 0xab, 0x32, 0x79, 0x04, 0x5f, 0x95, 0xaf, 0x6a, 0x70, + 0xde, 0x48, 0x5f, 0x20, 0x90, 0x60, 0x66, 0xaa, 0x3c, 0xb7, 0xcc, 0xbf, 0x94, 0x58, 0xbc, 0x22, + 0xbe, 0xef, 0xfc, 0x42, 0x96, 0x1c, 0xce, 0xeb, 0x03, 0xf2, 0x01, 0xb5, 0xed, 0x56, 0x94, 0x93, + 0x44, 0xcc, 0xfa, 0x99, 0x72, 0xe6, 0x80, 0x95, 0x0c, 0x26, 0x9c, 0x83, 0x1d, 0xdd, 0x83, 0x09, + 0x33, 0xbe, 0x66, 0x10, 0xc2, 0x71, 0xfd, 0x38, 0xee, 0x39, 0xb8, 0x02, 0xa5, 0xde, 0x61, 0xa8, + 0x94, 0xa2, 0x0b, 0x42, 0x45, 0x73, 0x15, 0x97, 0x64, 0xec, 0xab, 0xa7, 0xcb, 0x5f, 0x10, 0xe6, + 0x63, 0xc4, 0x7d, 0xa8, 0xb1, 0x40, 0x3d, 0x4e, 0x32, 0x75, 0x10, 0xcb, 0x9a, 0x5d, 0xf2, 0x71, + 0x6f, 0x2a, 0x0b, 0x11, 0x5f, 0x9a, 0xa9, 0x42, 0x9c, 0x26, 0xa8, 0x7f, 0x57, 0x13, 0xe6, 0xbf, + 0x53, 0x74, 0xf0, 0x38, 0xe9, 0xdb, 0x41, 0xfd, 0x2f, 0x34, 0xc8, 0x88, 0xda, 0x68, 0x03, 0xc6, + 0x28, 0x8a, 0xfa, 0x6a, 0x53, 0x7c, 0xd6, 0xfb, 0xcb, 0x1d, 0x97, 0x0c, 0x05, 0xb7, 0xa5, 0x8a, + 0x1f, 0x58, 0x22, 0xa6, 0xc2, 0xbb, 0xab, 0x04, 0x10, 0x16, 0x5f, 0x58, 0x4a, 0x1e, 0x51, 0x03, + 0x11, 0x73, 0xe1, 0x5d, 0x2d, 0xc1, 0x09, 0x3a, 0xfa, 0x32, 0x40, 0xac, 0x1e, 0x0d, 0xec, 0xf3, + 0xf3, 0xc3, 0x11, 0xb8, 0x38, 0xe8, 0x13, 0x0a, 0x96, 0xb1, 0x86, 0xec, 0xd8, 0x66, 0xb8, 0xb0, + 0x19, 0x12, 0xff, 0xce, 0x9d, 0x95, 0x28, 0xbf, 0x7b, 0xc9, 0x94, 0x39, 0xec, 0x8e, 0x70, 0x29, + 0x17, 0x23, 0x2e, 0xa0, 0xc4, 0x54, 0x43, 0x91, 0x41, 0x17, 0x53, 0x61, 0x92, 0x25, 0x6f, 0xe7, + 0x61, 0x4a, 0xb8, 0x6a, 0x98, 0x06, 0xe2, 0x6c, 0xfd, 0x34, 0x92, 0x65, 0xbb, 0x6d, 0xf3, 0xa4, + 0x24, 0x5a, 0x16, 0x09, 0x03, 0xe2, 0x6c, 0x7d, 0x15, 0x09, 0x9f, 0x29, 0xba, 0xdb, 0x47, 0xb2, + 0x48, 0x22, 0x20, 0xce, 0xd6, 0x47, 0x16, 0x3c, 0xe8, 0x13, 0xd3, 0x6b, 0xb7, 0x89, 0x6b, 0xf1, + 0x64, 0x70, 0x86, 0xdf, 0xb2, 0xdd, 0x1b, 0xbe, 0xc1, 0x2a, 0x32, 0x4b, 0x9b, 0xc6, 0x42, 0xeb, + 0x3f, 0x88, 0xfb, 0xd4, 0xc3, 0x7d, 0xb1, 0xa0, 0x36, 0x9c, 0xed, 0xb2, 0x34, 0x06, 0x7e, 0xc3, + 0x0d, 0x89, 0xbf, 0x63, 0x38, 0xc2, 0x9c, 0x56, 0x2a, 0x0b, 0xee, 0xdd, 0x24, 0x2a, 0x9c, 0xc6, + 0x8d, 0x7a, 0x54, 0xee, 0x10, 0xdd, 0x51, 0x48, 0x56, 0xcb, 0xe7, 0x74, 0xc2, 0x59, 0x74, 0x38, + 0x8f, 0x86, 0xfe, 0x55, 0x0d, 0x84, 0x83, 0x33, 0x7a, 0x30, 0x71, 0x73, 0x53, 0x4d, 0xdd, 0xda, + 0xc8, 0x60, 0xfa, 0x95, 0xdc, 0x60, 0xfa, 0x6f, 0x57, 0xe2, 0xdf, 0x8c, 0xc7, 0xbc, 0x8f, 0x63, + 0x56, 0x12, 0x81, 0xbc, 0x03, 0xc6, 0x09, 0xbf, 0x14, 0x8c, 0x24, 0x5a, 0xe6, 0x34, 0xbe, 0x24, + 0x0b, 0x71, 0x0c, 0xd7, 0xff, 0x58, 0x03, 0x81, 0x81, 0xa5, 0xad, 0x39, 0x54, 0xfa, 0x92, 0x03, + 0xbd, 0xb5, 0x94, 0xb4, 0x2b, 0x43, 0x85, 0x69, 0x57, 0x4e, 0x28, 0x1b, 0xc9, 0x6f, 0x6b, 0x70, + 0x36, 0x19, 0x90, 0x28, 0x40, 0x6f, 0x83, 0x31, 0x11, 0xb2, 0x50, 0xc4, 0x1c, 0x63, 0x4d, 0x45, + 0xcc, 0x00, 0x2c, 0x61, 0x49, 0xab, 0xd6, 0x00, 0x2a, 0x66, 0x7e, 0x5c, 0xa4, 0x03, 0xb4, 0xbd, + 0xcf, 0x4e, 0xc3, 0x28, 0x8f, 0x77, 0x47, 0x79, 0x5a, 0xce, 0xcb, 0xd6, 0xdb, 0xe5, 0xc3, 0xea, + 0x95, 0x79, 0x8a, 0xa8, 0x06, 0x56, 0xaf, 0xf4, 0x0d, 0xac, 0x8e, 0x79, 0x96, 0xa7, 0x01, 0x6e, + 0x30, 0x6a, 0xb8, 0x21, 0x92, 0x3b, 0xcb, 0x0c, 0x4f, 0x61, 0xc2, 0xb4, 0x3f, 0x5c, 0x5e, 0x72, + 0xe3, 0x03, 0xa0, 0x18, 0xf8, 0xcf, 0xf4, 0x35, 0xee, 0xcb, 0x80, 0x62, 0x23, 0xe5, 0xbd, 0x27, + 0xc5, 0x90, 0x1f, 0x22, 0xa0, 0x58, 0xb4, 0x91, 0x46, 0x0b, 0x37, 0xd2, 0x26, 0x8c, 0x89, 0xad, + 0x20, 0x98, 0xe3, 0xfb, 0x07, 0x48, 0x97, 0xa4, 0xc4, 0xc0, 0xe5, 0x05, 0x58, 0x22, 0xa7, 0x27, + 0x6e, 0xdb, 0xd8, 0xb5, 0xdb, 0xdd, 0x36, 0xe3, 0x88, 0x23, 0x6a, 0x55, 0x56, 0x8c, 0x25, 0x9c, + 0x55, 0xe5, 0x4e, 0xa7, 0x4c, 0x91, 0x52, 0xab, 0xf2, 0x62, 0x2c, 0xe1, 0xe8, 0x25, 0xa8, 0xb6, + 0x8d, 0xdd, 0x66, 0xd7, 0x6f, 0x11, 0x61, 0xd8, 0x2f, 0x96, 0xf1, 0xba, 0xa1, 0xed, 0xcc, 0x53, + 0xf5, 0x3f, 0xf4, 0xe7, 0x1b, 0x6e, 0x78, 0xc7, 0x6f, 0x86, 0x7e, 0x94, 0x33, 0x65, 0x45, 0x60, + 0xc1, 0x11, 0x3e, 0xe4, 0xc0, 0x99, 0xb6, 0xb1, 0x7b, 0xd7, 0x35, 0xa2, 0x1c, 0xea, 0x13, 0x25, + 0x29, 0xb0, 0x4b, 0xee, 0x95, 0x04, 0x2e, 0x9c, 0xc2, 0x9d, 0x73, 0x9f, 0x3e, 0x79, 0x52, 0xf7, + 0xe9, 0x0b, 0xd1, 0x33, 0x1e, 0xae, 0xb7, 0x5d, 0xce, 0x7b, 0x15, 0xd4, 0xff, 0x89, 0xce, 0xcb, + 0xd1, 0x13, 0x9d, 0x33, 0xe5, 0x6f, 0x3e, 0xfb, 0x3c, 0xcf, 0xe9, 0xc2, 0x04, 0x95, 0xb0, 0x79, + 0x29, 0x55, 0xac, 0x4a, 0x9b, 0x20, 0xeb, 0x11, 0x1a, 0x25, 0x27, 0x67, 0x8c, 0x1a, 0xab, 0x74, + 0xd0, 0x1d, 0x9e, 0x63, 0xdb, 0x21, 0x61, 0x5c, 0x85, 0x29, 0xf4, 0xd3, 0x6c, 0xff, 0x44, 0x29, + 0xb1, 0x33, 0x15, 0x70, 0x7e, 0xbb, 0x38, 0xf4, 0xc9, 0xb9, 0xfc, 0xd0, 0x27, 0xe8, 0xe7, 0xf3, + 0xcc, 0xf5, 0xa8, 0xfc, 0xb3, 0x48, 0xce, 0x1b, 0x4a, 0x1b, 0xed, 0x7f, 0x47, 0x83, 0x99, 0x76, + 0x41, 0xf2, 0x4a, 0x71, 0x8b, 0xb0, 0x3e, 0x00, 0x7f, 0x28, 0x4c, 0x88, 0xb9, 0xf8, 0xe8, 0xfe, + 0xde, 0xdc, 0x81, 0x69, 0x33, 0x71, 0x61, 0xdf, 0x90, 0x0f, 0x63, 0x41, 0x2f, 0x30, 0x43, 0x27, + 0x98, 0xb9, 0x50, 0x3e, 0x47, 0xa2, 0xe0, 0xac, 0x4d, 0x8e, 0x89, 0xb3, 0xd6, 0x38, 0xf2, 0x3a, + 0x2f, 0xc5, 0x92, 0xd0, 0xa0, 0x4f, 0xd8, 0x07, 0x88, 0xf6, 0x38, 0x7b, 0x1d, 0x26, 0xd5, 0x4e, + 0x1e, 0xe9, 0xe5, 0xfc, 0xaf, 0x69, 0x30, 0x9d, 0x3e, 0xb4, 0xd4, 0x34, 0xe6, 0xda, 0xc9, 0xa6, + 0x31, 0x57, 0xbc, 0x79, 0x2a, 0x7d, 0xbc, 0x79, 0x9e, 0x81, 0x4b, 0xf9, 0x6b, 0x99, 0x4a, 0x90, + 0x86, 0xe3, 0x78, 0xf7, 0x84, 0xe6, 0x16, 0xa7, 0x25, 0xa2, 0x85, 0x98, 0xc3, 0xf4, 0x4f, 0x40, + 0x3a, 0xb6, 0x2f, 0x7a, 0x05, 0xc6, 0x83, 0x60, 0x8b, 0x87, 0x6d, 0x14, 0x1f, 0x59, 0x4e, 0x65, + 0x97, 0xb1, 0x1f, 0xc5, 0x4b, 0x49, 0xf9, 0x13, 0xc7, 0xe8, 0x17, 0x5f, 0xfc, 0xe6, 0x0f, 0xae, + 0xbe, 0xe5, 0x3b, 0x3f, 0xb8, 0xfa, 0x96, 0xef, 0xfd, 0xe0, 0xea, 0x5b, 0x7e, 0x66, 0xff, 0xaa, + 0xf6, 0xcd, 0xfd, 0xab, 0xda, 0x77, 0xf6, 0xaf, 0x6a, 0xdf, 0xdb, 0xbf, 0xaa, 0xfd, 0xa7, 0xfd, + 0xab, 0xda, 0x2f, 0xfe, 0xe7, 0xab, 0x6f, 0x79, 0xe9, 0xc9, 0x98, 0xfa, 0x35, 0x49, 0x34, 0xfe, + 0xa7, 0xb3, 0xdd, 0xba, 0x46, 0xa9, 0xcb, 0x17, 0x4b, 0x8c, 0xfa, 0xff, 0x0b, 0x00, 0x00, 0xff, + 0xff, 0xf0, 0x64, 0x39, 0xba, 0x2e, 0xe4, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -5652,6 +5782,13 @@ func (m *AdmissionPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.KubeconfigSecretName != nil { + i -= len(*m.KubeconfigSecretName) + copy(dAtA[i:], *m.KubeconfigSecretName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.KubeconfigSecretName))) + i-- + dAtA[i] = 0x22 + } if m.Disabled != nil { i-- if *m.Disabled { @@ -7419,6 +7556,16 @@ func (m *ControllerResource) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.WorkerlessSupported != nil { + i-- + if *m.WorkerlessSupported { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if m.Lifecycle != nil { { size, err := m.Lifecycle.MarshalToSizedBuffer(dAtA[:i]) @@ -7861,6 +8008,82 @@ func (m *DeploymentRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ETCDEncryptionKeyRotation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ExpirableVersion) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8723,16 +8946,6 @@ func (m *KubeAPIServerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - if m.EnableBasicAuthentication != nil { - i-- - if *m.EnableBasicAuthentication { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x28 - } if m.AuditConfig != nil { { size, err := m.AuditConfig.MarshalToSizedBuffer(dAtA[:i]) @@ -9038,6 +9251,20 @@ func (m *KubeletConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.MemorySwap != nil { + { + size, err := m.MemorySwap.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd2 + } if m.StreamingConnectionIdleTimeout != nil { { size, err := m.StreamingConnectionIdleTimeout.MarshalToSizedBuffer(dAtA[:i]) @@ -10445,15 +10672,17 @@ func (m *MaintenanceAutoUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - i-- - if m.MachineImageVersion { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if m.MachineImageVersion != nil { + i-- + if *m.MachineImageVersion { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 } i-- - dAtA[i] = 0x10 - i-- if m.KubernetesVersion { dAtA[i] = 1 } else { @@ -10497,6 +10726,36 @@ func (m *MaintenanceTimeWindow) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MemorySwapConfiguration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MemorySwapConfiguration) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MemorySwapConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.SwapBehavior != nil { + i -= len(*m.SwapBehavior) + copy(dAtA[i:], *m.SwapBehavior) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SwapBehavior))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *Monitoring) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -10632,11 +10891,13 @@ func (m *Networking) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa + if m.Type != nil { + i -= len(*m.Type) + copy(dAtA[i:], *m.Type) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Type))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -12003,13 +12264,6 @@ func (m *SeedDNS) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if m.IngressDomain != nil { - i -= len(*m.IngressDomain) - copy(dAtA[i:], *m.IngressDomain) - i = encodeVarintGenerated(dAtA, i, uint64(len(*m.IngressDomain))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } @@ -12033,30 +12287,6 @@ func (m *SeedDNSProvider) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Zones != nil { - { - size, err := m.Zones.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Domains != nil { - { - size, err := m.Domains.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } { size, err := m.SecretRef.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -12308,6 +12538,30 @@ func (m *SeedSettingDependencyWatchdog) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.Prober != nil { + { + size, err := m.Prober.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Weeder != nil { + { + size, err := m.Weeder.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } if m.Probe != nil { { size, err := m.Probe.MarshalToSizedBuffer(dAtA[:i]) @@ -12397,6 +12651,68 @@ func (m *SeedSettingDependencyWatchdogProbe) MarshalToSizedBuffer(dAtA []byte) ( return len(dAtA) - i, nil } +func (m *SeedSettingDependencyWatchdogProber) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingExcessCapacityReservation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12617,6 +12933,37 @@ func (m *SeedSettingScheduling) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SeedSettingTopologyAwareRouting) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingTopologyAwareRouting) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingTopologyAwareRouting) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingVerticalPodAutoscaler) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12668,6 +13015,18 @@ func (m *SeedSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.TopologyAwareRouting != nil { + { + size, err := m.TopologyAwareRouting.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } if m.DependencyWatchdog != nil { { size, err := m.DependencyWatchdog.MarshalToSizedBuffer(dAtA[:i]) @@ -13227,6 +13586,82 @@ func (m *ServiceAccountConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ServiceAccountKeyRotation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *Shoot) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13443,82 +13878,6 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func (m *ShootETCDEncryptionKeyRotation) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ShootETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootKubeconfigRotation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13791,82 +14150,6 @@ func (m *ShootSSHKeypairRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *ShootServiceAccountKeyRotation) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ShootServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13975,11 +14258,13 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x72 } - i -= len(m.SecretBindingName) - copy(dAtA[i:], m.SecretBindingName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretBindingName))) - i-- - dAtA[i] = 0x6a + if m.SecretBindingName != nil { + i -= len(*m.SecretBindingName) + copy(dAtA[i:], *m.SecretBindingName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SecretBindingName))) + i-- + dAtA[i] = 0x6a + } i -= len(m.Region) copy(dAtA[i:], m.Region) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Region))) @@ -14026,16 +14311,18 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x42 } - { - size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if m.Networking != nil { + { + size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x3a } - i-- - dAtA[i] = 0x3a { size, err := m.Kubernetes.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -14843,6 +15130,32 @@ func (m *Worker) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Sysctls) > 0 { + keysForSysctls := make([]string, 0, len(m.Sysctls)) + for k := range m.Sysctls { + keysForSysctls = append(keysForSysctls, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + for iNdEx := len(keysForSysctls) - 1; iNdEx >= 0; iNdEx-- { + v := m.Sysctls[string(keysForSysctls[iNdEx])] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(keysForSysctls[iNdEx]) + copy(dAtA[i:], keysForSysctls[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(keysForSysctls[iNdEx]))) + i-- + dAtA[i] = 0xa + i = encodeVarintGenerated(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + } if m.MachineControllerManagerSettings != nil { { size, err := m.MachineControllerManagerSettings.MarshalToSizedBuffer(dAtA[:i]) @@ -15231,6 +15544,10 @@ func (m *AdmissionPlugin) Size() (n int) { if m.Disabled != nil { n += 2 } + if m.KubeconfigSecretName != nil { + l = len(*m.KubeconfigSecretName) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -15886,6 +16203,9 @@ func (m *ControllerResource) Size() (n int) { l = m.Lifecycle.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.WorkerlessSupported != nil { + n += 2 + } return n } @@ -16052,6 +16372,33 @@ func (m *DeploymentRef) Size() (n int) { return n } +func (m *ETCDEncryptionKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationFinishedTime != nil { + l = m.LastInitiationFinishedTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastCompletionTriggeredTime != nil { + l = m.LastCompletionTriggeredTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ExpirableVersion) Size() (n int) { if m == nil { return 0 @@ -16350,9 +16697,6 @@ func (m *KubeAPIServerConfig) Size() (n int) { l = m.AuditConfig.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.EnableBasicAuthentication != nil { - n += 2 - } if m.OIDCConfig != nil { l = m.OIDCConfig.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -16581,6 +16925,10 @@ func (m *KubeletConfig) Size() (n int) { l = m.StreamingConnectionIdleTimeout.Size() n += 2 + l + sovGenerated(uint64(l)) } + if m.MemorySwap != nil { + l = m.MemorySwap.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -17019,7 +17367,9 @@ func (m *MaintenanceAutoUpdate) Size() (n int) { var l int _ = l n += 2 - n += 2 + if m.MachineImageVersion != nil { + n += 2 + } return n } @@ -17036,6 +17386,19 @@ func (m *MaintenanceTimeWindow) Size() (n int) { return n } +func (m *MemorySwapConfiguration) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.SwapBehavior != nil { + l = len(*m.SwapBehavior) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *Monitoring) Size() (n int) { if m == nil { return 0 @@ -17068,8 +17431,10 @@ func (m *Networking) Size() (n int) { } var l int _ = l - l = len(m.Type) - n += 1 + l + sovGenerated(uint64(l)) + if m.Type != nil { + l = len(*m.Type) + n += 1 + l + sovGenerated(uint64(l)) + } if m.ProviderConfig != nil { l = m.ProviderConfig.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17593,10 +17958,6 @@ func (m *SeedDNS) Size() (n int) { } var l int _ = l - if m.IngressDomain != nil { - l = len(*m.IngressDomain) - n += 1 + l + sovGenerated(uint64(l)) - } if m.Provider != nil { l = m.Provider.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17614,14 +17975,6 @@ func (m *SeedDNSProvider) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = m.SecretRef.Size() n += 1 + l + sovGenerated(uint64(l)) - if m.Domains != nil { - l = m.Domains.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Zones != nil { - l = m.Zones.Size() - n += 1 + l + sovGenerated(uint64(l)) - } return n } @@ -17729,6 +18082,14 @@ func (m *SeedSettingDependencyWatchdog) Size() (n int) { l = m.Probe.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Weeder != nil { + l = m.Weeder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Prober != nil { + l = m.Prober.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17752,6 +18113,26 @@ func (m *SeedSettingDependencyWatchdogProbe) Size() (n int) { return n } +func (m *SeedSettingDependencyWatchdogProber) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + +func (m *SeedSettingDependencyWatchdogWeeder) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingExcessCapacityReservation) Size() (n int) { if m == nil { return 0 @@ -17832,6 +18213,16 @@ func (m *SeedSettingScheduling) Size() (n int) { return n } +func (m *SeedSettingTopologyAwareRouting) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingVerticalPodAutoscaler) Size() (n int) { if m == nil { return 0 @@ -17872,6 +18263,10 @@ func (m *SeedSettings) Size() (n int) { l = m.DependencyWatchdog.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.TopologyAwareRouting != nil { + l = m.TopologyAwareRouting.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -18052,81 +18447,7 @@ func (m *ServiceAccountConfig) Size() (n int) { return n } -func (m *Shoot) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.ObjectMeta.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Spec.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Status.Size() - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *ShootAdvertisedAddress) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.URL) - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *ShootCredentials) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Rotation != nil { - l = m.Rotation.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - -func (m *ShootCredentialsRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.CertificateAuthorities != nil { - l = m.CertificateAuthorities.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Kubeconfig != nil { - l = m.Kubeconfig.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.SSHKeypair != nil { - l = m.SSHKeypair.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Observability != nil { - l = m.Observability.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.ServiceAccountKey != nil { - l = m.ServiceAccountKey.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.ETCDEncryptionKey != nil { - l = m.ETCDEncryptionKey.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - -func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { +func (m *ServiceAccountKeyRotation) Size() (n int) { if m == nil { return 0 } @@ -18153,6 +18474,80 @@ func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { return n } +func (m *Shoot) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ShootAdvertisedAddress) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.URL) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ShootCredentials) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Rotation != nil { + l = m.Rotation.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ShootCredentialsRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.CertificateAuthorities != nil { + l = m.CertificateAuthorities.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Kubeconfig != nil { + l = m.Kubeconfig.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.SSHKeypair != nil { + l = m.SSHKeypair.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Observability != nil { + l = m.Observability.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ServiceAccountKey != nil { + l = m.ServiceAccountKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ETCDEncryptionKey != nil { + l = m.ETCDEncryptionKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ShootKubeconfigRotation) Size() (n int) { if m == nil { return 0 @@ -18257,33 +18652,6 @@ func (m *ShootSSHKeypairRotation) Size() (n int) { return n } -func (m *ShootServiceAccountKeyRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - if m.LastCompletionTime != nil { - l = m.LastCompletionTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationTime != nil { - l = m.LastInitiationTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationFinishedTime != nil { - l = m.LastInitiationFinishedTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastCompletionTriggeredTime != nil { - l = m.LastCompletionTriggeredTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *ShootSpec) Size() (n int) { if m == nil { return 0 @@ -18312,8 +18680,10 @@ func (m *ShootSpec) Size() (n int) { } l = m.Kubernetes.Size() n += 1 + l + sovGenerated(uint64(l)) - l = m.Networking.Size() - n += 1 + l + sovGenerated(uint64(l)) + if m.Networking != nil { + l = m.Networking.Size() + n += 1 + l + sovGenerated(uint64(l)) + } if m.Maintenance != nil { l = m.Maintenance.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -18330,8 +18700,10 @@ func (m *ShootSpec) Size() (n int) { } l = len(m.Region) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SecretBindingName) - n += 1 + l + sovGenerated(uint64(l)) + if m.SecretBindingName != nil { + l = len(*m.SecretBindingName) + n += 1 + l + sovGenerated(uint64(l)) + } if m.SeedName != nil { l = len(*m.SeedName) n += 1 + l + sovGenerated(uint64(l)) @@ -18722,6 +19094,14 @@ func (m *Worker) Size() (n int) { l = m.MachineControllerManagerSettings.Size() n += 2 + l + sovGenerated(uint64(l)) } + if len(m.Sysctls) > 0 { + for k, v := range m.Sysctls { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } return n } @@ -18800,6 +19180,7 @@ func (this *AdmissionPlugin) String() string { `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "RawExtension", "runtime.RawExtension", 1) + `,`, `Disabled:` + valueToStringGenerated(this.Disabled) + `,`, + `KubeconfigSecretName:` + valueToStringGenerated(this.KubeconfigSecretName) + `,`, `}`, }, "") return s @@ -19271,6 +19652,7 @@ func (this *ControllerResource) String() string { `ReconcileTimeout:` + strings.Replace(fmt.Sprintf("%v", this.ReconcileTimeout), "Duration", "v11.Duration", 1) + `,`, `Primary:` + valueToStringGenerated(this.Primary) + `,`, `Lifecycle:` + strings.Replace(this.Lifecycle.String(), "ControllerResourceLifecycle", "ControllerResourceLifecycle", 1) + `,`, + `WorkerlessSupported:` + valueToStringGenerated(this.WorkerlessSupported) + `,`, `}`, }, "") return s @@ -19382,6 +19764,20 @@ func (this *DeploymentRef) String() string { }, "") return s } +func (this *ETCDEncryptionKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ETCDEncryptionKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *ExpirableVersion) String() string { if this == nil { return "nil" @@ -19612,7 +20008,6 @@ func (this *KubeAPIServerConfig) String() string { `AdmissionPlugins:` + repeatedStringForAdmissionPlugins + `,`, `APIAudiences:` + fmt.Sprintf("%v", this.APIAudiences) + `,`, `AuditConfig:` + strings.Replace(this.AuditConfig.String(), "AuditConfig", "AuditConfig", 1) + `,`, - `EnableBasicAuthentication:` + valueToStringGenerated(this.EnableBasicAuthentication) + `,`, `OIDCConfig:` + strings.Replace(this.OIDCConfig.String(), "OIDCConfig", "OIDCConfig", 1) + `,`, `RuntimeConfig:` + mapStringForRuntimeConfig + `,`, `ServiceAccountConfig:` + strings.Replace(this.ServiceAccountConfig.String(), "ServiceAccountConfig", "ServiceAccountConfig", 1) + `,`, @@ -19717,6 +20112,7 @@ func (this *KubeletConfig) String() string { `ContainerLogMaxFiles:` + valueToStringGenerated(this.ContainerLogMaxFiles) + `,`, `ProtectKernelDefaults:` + valueToStringGenerated(this.ProtectKernelDefaults) + `,`, `StreamingConnectionIdleTimeout:` + strings.Replace(fmt.Sprintf("%v", this.StreamingConnectionIdleTimeout), "Duration", "v11.Duration", 1) + `,`, + `MemorySwap:` + strings.Replace(this.MemorySwap.String(), "MemorySwapConfiguration", "MemorySwapConfiguration", 1) + `,`, `}`, }, "") return s @@ -19988,7 +20384,7 @@ func (this *MaintenanceAutoUpdate) String() string { } s := strings.Join([]string{`&MaintenanceAutoUpdate{`, `KubernetesVersion:` + fmt.Sprintf("%v", this.KubernetesVersion) + `,`, - `MachineImageVersion:` + fmt.Sprintf("%v", this.MachineImageVersion) + `,`, + `MachineImageVersion:` + valueToStringGenerated(this.MachineImageVersion) + `,`, `}`, }, "") return s @@ -20004,6 +20400,16 @@ func (this *MaintenanceTimeWindow) String() string { }, "") return s } +func (this *MemorySwapConfiguration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MemorySwapConfiguration{`, + `SwapBehavior:` + valueToStringGenerated(this.SwapBehavior) + `,`, + `}`, + }, "") + return s +} func (this *Monitoring) String() string { if this == nil { return "nil" @@ -20030,7 +20436,7 @@ func (this *Networking) String() string { return "nil" } s := strings.Join([]string{`&Networking{`, - `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Type:` + valueToStringGenerated(this.Type) + `,`, `ProviderConfig:` + strings.Replace(fmt.Sprintf("%v", this.ProviderConfig), "RawExtension", "runtime.RawExtension", 1) + `,`, `Pods:` + valueToStringGenerated(this.Pods) + `,`, `Nodes:` + valueToStringGenerated(this.Nodes) + `,`, @@ -20424,7 +20830,6 @@ func (this *SeedDNS) String() string { return "nil" } s := strings.Join([]string{`&SeedDNS{`, - `IngressDomain:` + valueToStringGenerated(this.IngressDomain) + `,`, `Provider:` + strings.Replace(this.Provider.String(), "SeedDNSProvider", "SeedDNSProvider", 1) + `,`, `}`, }, "") @@ -20437,8 +20842,6 @@ func (this *SeedDNSProvider) String() string { s := strings.Join([]string{`&SeedDNSProvider{`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `SecretRef:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.SecretRef), "SecretReference", "v1.SecretReference", 1), `&`, ``, 1) + `,`, - `Domains:` + strings.Replace(this.Domains.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, - `Zones:` + strings.Replace(this.Zones.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, `}`, }, "") return s @@ -20505,6 +20908,8 @@ func (this *SeedSettingDependencyWatchdog) String() string { s := strings.Join([]string{`&SeedSettingDependencyWatchdog{`, `Endpoint:` + strings.Replace(this.Endpoint.String(), "SeedSettingDependencyWatchdogEndpoint", "SeedSettingDependencyWatchdogEndpoint", 1) + `,`, `Probe:` + strings.Replace(this.Probe.String(), "SeedSettingDependencyWatchdogProbe", "SeedSettingDependencyWatchdogProbe", 1) + `,`, + `Weeder:` + strings.Replace(this.Weeder.String(), "SeedSettingDependencyWatchdogWeeder", "SeedSettingDependencyWatchdogWeeder", 1) + `,`, + `Prober:` + strings.Replace(this.Prober.String(), "SeedSettingDependencyWatchdogProber", "SeedSettingDependencyWatchdogProber", 1) + `,`, `}`, }, "") return s @@ -20529,6 +20934,26 @@ func (this *SeedSettingDependencyWatchdogProbe) String() string { }, "") return s } +func (this *SeedSettingDependencyWatchdogProber) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogProber{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} +func (this *SeedSettingDependencyWatchdogWeeder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogWeeder{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingExcessCapacityReservation) String() string { if this == nil { return "nil" @@ -20608,6 +21033,16 @@ func (this *SeedSettingScheduling) String() string { }, "") return s } +func (this *SeedSettingTopologyAwareRouting) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingTopologyAwareRouting{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingVerticalPodAutoscaler) String() string { if this == nil { return "nil" @@ -20629,6 +21064,7 @@ func (this *SeedSettings) String() string { `VerticalPodAutoscaler:` + strings.Replace(this.VerticalPodAutoscaler.String(), "SeedSettingVerticalPodAutoscaler", "SeedSettingVerticalPodAutoscaler", 1) + `,`, `OwnerChecks:` + strings.Replace(this.OwnerChecks.String(), "SeedSettingOwnerChecks", "SeedSettingOwnerChecks", 1) + `,`, `DependencyWatchdog:` + strings.Replace(this.DependencyWatchdog.String(), "SeedSettingDependencyWatchdog", "SeedSettingDependencyWatchdog", 1) + `,`, + `TopologyAwareRouting:` + strings.Replace(this.TopologyAwareRouting.String(), "SeedSettingTopologyAwareRouting", "SeedSettingTopologyAwareRouting", 1) + `,`, `}`, }, "") return s @@ -20760,6 +21196,20 @@ func (this *ServiceAccountConfig) String() string { }, "") return s } +func (this *ServiceAccountKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccountKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *Shoot) String() string { if this == nil { return "nil" @@ -20802,22 +21252,8 @@ func (this *ShootCredentialsRotation) String() string { `Kubeconfig:` + strings.Replace(this.Kubeconfig.String(), "ShootKubeconfigRotation", "ShootKubeconfigRotation", 1) + `,`, `SSHKeypair:` + strings.Replace(this.SSHKeypair.String(), "ShootSSHKeypairRotation", "ShootSSHKeypairRotation", 1) + `,`, `Observability:` + strings.Replace(this.Observability.String(), "ShootObservabilityRotation", "ShootObservabilityRotation", 1) + `,`, - `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ShootServiceAccountKeyRotation", "ShootServiceAccountKeyRotation", 1) + `,`, - `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ShootETCDEncryptionKeyRotation", "ShootETCDEncryptionKeyRotation", 1) + `,`, - `}`, - }, "") - return s -} -func (this *ShootETCDEncryptionKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootETCDEncryptionKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ServiceAccountKeyRotation", "ServiceAccountKeyRotation", 1) + `,`, + `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ETCDEncryptionKeyRotation", "ETCDEncryptionKeyRotation", 1) + `,`, `}`, }, "") return s @@ -20894,20 +21330,6 @@ func (this *ShootSSHKeypairRotation) String() string { }, "") return s } -func (this *ShootServiceAccountKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootServiceAccountKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, - `}`, - }, "") - return s -} func (this *ShootSpec) String() string { if this == nil { return "nil" @@ -20934,13 +21356,13 @@ func (this *ShootSpec) String() string { `Extensions:` + repeatedStringForExtensions + `,`, `Hibernation:` + strings.Replace(this.Hibernation.String(), "Hibernation", "Hibernation", 1) + `,`, `Kubernetes:` + strings.Replace(strings.Replace(this.Kubernetes.String(), "Kubernetes", "Kubernetes", 1), `&`, ``, 1) + `,`, - `Networking:` + strings.Replace(strings.Replace(this.Networking.String(), "Networking", "Networking", 1), `&`, ``, 1) + `,`, + `Networking:` + strings.Replace(this.Networking.String(), "Networking", "Networking", 1) + `,`, `Maintenance:` + strings.Replace(this.Maintenance.String(), "Maintenance", "Maintenance", 1) + `,`, `Monitoring:` + strings.Replace(this.Monitoring.String(), "Monitoring", "Monitoring", 1) + `,`, `Provider:` + strings.Replace(strings.Replace(this.Provider.String(), "Provider", "Provider", 1), `&`, ``, 1) + `,`, `Purpose:` + valueToStringGenerated(this.Purpose) + `,`, `Region:` + fmt.Sprintf("%v", this.Region) + `,`, - `SecretBindingName:` + fmt.Sprintf("%v", this.SecretBindingName) + `,`, + `SecretBindingName:` + valueToStringGenerated(this.SecretBindingName) + `,`, `SeedName:` + valueToStringGenerated(this.SeedName) + `,`, `SeedSelector:` + strings.Replace(this.SeedSelector.String(), "SeedSelector", "SeedSelector", 1) + `,`, `Resources:` + repeatedStringForResources + `,`, @@ -21178,6 +21600,16 @@ func (this *Worker) String() string { mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) } mapStringForLabels += "}" + keysForSysctls := make([]string, 0, len(this.Sysctls)) + for k := range this.Sysctls { + keysForSysctls = append(keysForSysctls, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + mapStringForSysctls := "map[string]string{" + for _, k := range keysForSysctls { + mapStringForSysctls += fmt.Sprintf("%v: %v,", k, this.Sysctls[k]) + } + mapStringForSysctls += "}" s := strings.Join([]string{`&Worker{`, `Annotations:` + mapStringForAnnotations + `,`, `CABundle:` + valueToStringGenerated(this.CABundle) + `,`, @@ -21198,6 +21630,7 @@ func (this *Worker) String() string { `Zones:` + fmt.Sprintf("%v", this.Zones) + `,`, `SystemComponents:` + strings.Replace(this.SystemComponents.String(), "WorkerSystemComponents", "WorkerSystemComponents", 1) + `,`, `MachineControllerManagerSettings:` + strings.Replace(this.MachineControllerManagerSettings.String(), "MachineControllerManagerSettings", "MachineControllerManagerSettings", 1) + `,`, + `Sysctls:` + mapStringForSysctls + `,`, `}`, }, "") return s @@ -21551,59 +21984,9 @@ func (m *AdmissionPlugin) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.Disabled = &b - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Alerting) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Alerting: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Alerting: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EmailReceivers", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KubeconfigSecretName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -21631,7 +22014,8 @@ func (m *Alerting) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.EmailReceivers = append(m.EmailReceivers, string(dAtA[iNdEx:postIndex])) + s := string(dAtA[iNdEx:postIndex]) + m.KubeconfigSecretName = &s iNdEx = postIndex default: iNdEx = preIndex @@ -21654,7 +22038,7 @@ func (m *Alerting) Unmarshal(dAtA []byte) error { } return nil } -func (m *AuditConfig) Unmarshal(dAtA []byte) error { +func (m *Alerting) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -21677,17 +22061,17 @@ func (m *AuditConfig) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AuditConfig: wiretype end group for non-group") + return fmt.Errorf("proto: Alerting: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AuditConfig: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Alerting: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuditPolicy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EmailReceivers", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21697,27 +22081,109 @@ func (m *AuditConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.AuditPolicy == nil { - m.AuditPolicy = &AuditPolicy{} - } - if err := m.AuditPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.EmailReceivers = append(m.EmailReceivers, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AuditConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AuditConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AuditConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuditPolicy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AuditPolicy == nil { + m.AuditPolicy = &AuditPolicy{} + } + if err := m.AuditPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -26631,6 +27097,27 @@ func (m *ControllerResource) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field WorkerlessSupported", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.WorkerlessSupported = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -27777,7 +28264,7 @@ func (m *DeploymentRef) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { +func (m *ETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27800,15 +28287,15 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExpirableVersion: wiretype end group for non-group") + return fmt.Errorf("proto: ETCDEncryptionKeyRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExpirableVersion: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -27836,11 +28323,11 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExpirationDate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -27867,18 +28354,18 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ExpirationDate == nil { - m.ExpirationDate = &v11.Time{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.ExpirationDate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Classification", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -27888,24 +28375,99 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := VersionClassification(dAtA[iNdEx:postIndex]) - m.Classification = &s + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} + } + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} + } + if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -27928,7 +28490,7 @@ func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExposureClass) Unmarshal(dAtA []byte) error { +func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27951,48 +28513,15 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExposureClass: wiretype end group for non-group") + return fmt.Errorf("proto: ExpirableVersion: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExposureClass: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExpirableVersion: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Handler", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -28020,11 +28549,11 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Handler = string(dAtA[iNdEx:postIndex]) + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ExpirationDate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28051,13 +28580,46 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Scheduling == nil { - m.Scheduling = &ExposureClassScheduling{} + if m.ExpirationDate == nil { + m.ExpirationDate = &v11.Time{} } - if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ExpirationDate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Classification", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := VersionClassification(dAtA[iNdEx:postIndex]) + m.Classification = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -28079,7 +28641,7 @@ func (m *ExposureClass) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExposureClassList) Unmarshal(dAtA []byte) error { +func (m *ExposureClass) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -28102,15 +28664,15 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExposureClassList: wiretype end group for non-group") + return fmt.Errorf("proto: ExposureClass: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExposureClassList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExposureClass: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28137,13 +28699,45 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Handler", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Handler = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28170,8 +28764,10 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, ExposureClass{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Scheduling == nil { + m.Scheduling = &ExposureClassScheduling{} + } + if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -28196,7 +28792,7 @@ func (m *ExposureClassList) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { +func (m *ExposureClassList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -28219,15 +28815,15 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExposureClassScheduling: wiretype end group for non-group") + return fmt.Errorf("proto: ExposureClassList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExposureClassScheduling: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExposureClassList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SeedSelector", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28254,16 +28850,13 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SeedSelector == nil { - m.SeedSelector = &SeedSelector{} - } - if err := m.SeedSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28290,8 +28883,8 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Tolerations = append(m.Tolerations, Toleration{}) - if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, ExposureClass{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -28316,7 +28909,7 @@ func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { } return nil } -func (m *Extension) Unmarshal(dAtA []byte) error { +func (m *ExposureClassScheduling) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -28339,17 +28932,17 @@ func (m *Extension) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Extension: wiretype end group for non-group") + return fmt.Errorf("proto: ExposureClassScheduling: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Extension: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExposureClassScheduling: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SeedSelector", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -28359,27 +28952,31 @@ func (m *Extension) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + if m.SeedSelector == nil { + m.SeedSelector = &SeedSelector{} + } + if err := m.SeedSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28406,34 +29003,11 @@ func (m *Extension) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ProviderConfig == nil { - m.ProviderConfig = &runtime.RawExtension{} - } - if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Tolerations = append(m.Tolerations, Toleration{}) + if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Disabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - b := bool(v != 0) - m.Disabled = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -28455,7 +29029,7 @@ func (m *Extension) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { +func (m *Extension) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -28478,15 +29052,15 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExtensionResourceState: wiretype end group for non-group") + return fmt.Errorf("proto: Extension: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExtensionResourceState: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Extension: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -28514,77 +29088,11 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Kind = string(dAtA[iNdEx:postIndex]) + m.Type = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.Name = &s - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Purpose", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.Purpose = &s - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -28611,18 +29119,18 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.State == nil { - m.State = &runtime.RawExtension{} + if m.ProviderConfig == nil { + m.ProviderConfig = &runtime.RawExtension{} } - if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Disabled", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -28632,26 +29140,231 @@ func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Resources = append(m.Resources, NamedResourceReference{}) - if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + b := bool(v != 0) + m.Disabled = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExtensionResourceState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtensionResourceState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtensionResourceState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Name = &s + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Purpose", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Purpose = &s + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.State == nil { + m.State = &runtime.RawExtension{} + } + if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, NamedResourceReference{}) + if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -30115,27 +30828,6 @@ func (m *KubeAPIServerConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field EnableBasicAuthentication", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - b := bool(v != 0) - m.EnableBasicAuthentication = &b case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OIDCConfig", wireType) @@ -31946,6 +32638,42 @@ func (m *KubeletConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MemorySwap", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MemorySwap == nil { + m.MemorySwap = &MemorySwapConfiguration{} + } + if err := m.MemorySwap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35465,7 +36193,8 @@ func (m *MaintenanceAutoUpdate) Unmarshal(dAtA []byte) error { break } } - m.MachineImageVersion = bool(v != 0) + b := bool(v != 0) + m.MachineImageVersion = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35601,7 +36330,7 @@ func (m *MaintenanceTimeWindow) Unmarshal(dAtA []byte) error { } return nil } -func (m *Monitoring) Unmarshal(dAtA []byte) error { +func (m *MemorySwapConfiguration) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -35624,17 +36353,17 @@ func (m *Monitoring) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Monitoring: wiretype end group for non-group") + return fmt.Errorf("proto: MemorySwapConfiguration: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Monitoring: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MemorySwapConfiguration: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alerting", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SwapBehavior", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -35644,27 +36373,24 @@ func (m *Monitoring) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Alerting == nil { - m.Alerting = &Alerting{} - } - if err := m.Alerting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + s := SwapBehavior(dAtA[iNdEx:postIndex]) + m.SwapBehavior = &s iNdEx = postIndex default: iNdEx = preIndex @@ -35687,7 +36413,7 @@ func (m *Monitoring) Unmarshal(dAtA []byte) error { } return nil } -func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { +func (m *Monitoring) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -35710,47 +36436,15 @@ func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: NamedResourceReference: wiretype end group for non-group") + return fmt.Errorf("proto: Monitoring: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: NamedResourceReference: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Monitoring: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceRef", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Alerting", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -35777,7 +36471,10 @@ func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Alerting == nil { + m.Alerting = &Alerting{} + } + if err := m.Alerting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -35802,7 +36499,7 @@ func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { } return nil } -func (m *Networking) Unmarshal(dAtA []byte) error { +func (m *NamedResourceReference) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -35825,15 +36522,15 @@ func (m *Networking) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Networking: wiretype end group for non-group") + return fmt.Errorf("proto: NamedResourceReference: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Networking: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: NamedResourceReference: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -35861,11 +36558,11 @@ func (m *Networking) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResourceRef", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -35892,144 +36589,10 @@ func (m *Networking) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ProviderConfig == nil { - m.ProviderConfig = &runtime.RawExtension{} - } - if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ResourceRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.Pods = &s - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.Nodes = &s - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.Services = &s - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IPFamilies", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.IPFamilies = append(m.IPFamilies, IPFamily(dAtA[iNdEx:postIndex])) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -36051,7 +36614,7 @@ func (m *Networking) Unmarshal(dAtA []byte) error { } return nil } -func (m *NginxIngress) Unmarshal(dAtA []byte) error { +func (m *Networking) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -36074,15 +36637,48 @@ func (m *NginxIngress) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: NginxIngress: wiretype end group for non-group") + return fmt.Errorf("proto: Networking: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: NginxIngress: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Networking: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Addon", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Type = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -36109,13 +36705,230 @@ func (m *NginxIngress) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Addon.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.ProviderConfig == nil { + m.ProviderConfig = &runtime.RawExtension{} + } + if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerSourceRanges", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Pods = &s + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Nodes = &s + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Services = &s + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IPFamilies", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IPFamilies = append(m.IPFamilies, IPFamily(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NginxIngress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NginxIngress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NginxIngress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addon", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Addon.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerSourceRanges", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -40175,39 +40988,6 @@ func (m *SeedDNS) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: SeedDNS: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IngressDomain", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.IngressDomain = &s - iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Provider", wireType) @@ -40359,131 +41139,59 @@ func (m *SeedDNSProvider) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Domains", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Domains == nil { - m.Domains = &DNSIncludeExclude{} - } - if err := m.Domains.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Zones", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Zones == nil { - m.Zones = &DNSIncludeExclude{} - } - if err := m.Zones.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *SeedList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SeedList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SeedList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41214,6 +41922,78 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Weeder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Weeder == nil { + m.Weeder = &SeedSettingDependencyWatchdogWeeder{} + } + if err := m.Weeder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prober", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Prober == nil { + m.Prober = &SeedSettingDependencyWatchdogProber{} + } + if err := m.Prober.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41375,7 +42155,7 @@ func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogProber) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41398,10 +42178,10 @@ func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -41445,7 +42225,147 @@ func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingLoadBalancerServices) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogWeeder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingExcessCapacityReservation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingExcessCapacityReservation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingLoadBalancerServices) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -42071,7 +42991,7 @@ func (m *SeedSettingScheduling) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { +func (m *SeedSettingTopologyAwareRouting) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -42094,10 +43014,10 @@ func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingTopologyAwareRouting: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingTopologyAwareRouting: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -42141,7 +43061,7 @@ func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettings) Unmarshal(dAtA []byte) error { +func (m *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -42164,53 +43084,17 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettings: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettings: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingVerticalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExcessCapacityReservation", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ExcessCapacityReservation == nil { - m.ExcessCapacityReservation = &SeedSettingExcessCapacityReservation{} - } - if err := m.ExcessCapacityReservation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -42220,103 +43104,65 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Scheduling == nil { - m.Scheduling = &SeedSettingScheduling{} - } - if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Enabled = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerServices", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if m.LoadBalancerServices == nil { - m.LoadBalancerServices = &SeedSettingLoadBalancerServices{} - } - if err := m.LoadBalancerServices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VerticalPodAutoscaler", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettings) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - if m.VerticalPodAutoscaler == nil { - m.VerticalPodAutoscaler = &SeedSettingVerticalPodAutoscaler{} - } - if err := m.VerticalPodAutoscaler.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 6: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SeedSettings: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettings: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OwnerChecks", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ExcessCapacityReservation", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -42343,16 +43189,160 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.OwnerChecks == nil { - m.OwnerChecks = &SeedSettingOwnerChecks{} + if m.ExcessCapacityReservation == nil { + m.ExcessCapacityReservation = &SeedSettingExcessCapacityReservation{} } - if err := m.OwnerChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ExcessCapacityReservation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DependencyWatchdog", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Scheduling", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Scheduling == nil { + m.Scheduling = &SeedSettingScheduling{} + } + if err := m.Scheduling.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerServices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LoadBalancerServices == nil { + m.LoadBalancerServices = &SeedSettingLoadBalancerServices{} + } + if err := m.LoadBalancerServices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VerticalPodAutoscaler", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VerticalPodAutoscaler == nil { + m.VerticalPodAutoscaler = &SeedSettingVerticalPodAutoscaler{} + } + if err := m.VerticalPodAutoscaler.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OwnerChecks == nil { + m.OwnerChecks = &SeedSettingOwnerChecks{} + } + if err := m.OwnerChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DependencyWatchdog", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -42386,6 +43376,42 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopologyAwareRouting", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TopologyAwareRouting == nil { + m.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{} + } + if err := m.TopologyAwareRouting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -43906,156 +44932,7 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { } return nil } -func (m *Shoot) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Shoot: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { +func (m *ServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44078,47 +44955,15 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootAdvertisedAddress: wiretype end group for non-group") + return fmt.Errorf("proto: ServiceAccountKeyRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field URL", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -44146,219 +44991,11 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.URL = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootCredentials) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Rotation == nil { - m.Rotation = &ShootCredentialsRotation{} - } - if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.CertificateAuthorities == nil { - m.CertificateAuthorities = &CARotation{} - } - if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Kubeconfig == nil { - m.Kubeconfig = &ShootKubeconfigRotation{} - } - if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44385,16 +45022,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SSHKeypair == nil { - m.SSHKeypair = &ShootSSHKeypairRotation{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44421,16 +45058,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Observability == nil { - m.Observability = &ShootObservabilityRotation{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44457,16 +45094,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ServiceAccountKey == nil { - m.ServiceAccountKey = &ShootServiceAccountKeyRotation{} + if m.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} } - if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44493,10 +45130,10 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ETCDEncryptionKey == nil { - m.ETCDEncryptionKey = &ShootETCDEncryptionKeyRotation{} + if m.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} } - if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -44521,7 +45158,7 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { +func (m *Shoot) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44544,17 +45181,17 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: wiretype end group for non-group") + return fmt.Errorf("proto: Shoot: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44564,27 +45201,28 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44611,16 +45249,13 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} - } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44647,18 +45282,65 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ShootAdvertisedAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44668,33 +45350,29 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} - } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field URL", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -44704,27 +45382,23 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} - } - if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.URL = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -44747,7 +45421,7 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { +func (m *ShootCredentials) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44770,51 +45444,15 @@ func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootKubeconfigRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootKubeconfigRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44841,10 +45479,10 @@ func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.Rotation == nil { + m.Rotation = &ShootCredentialsRotation{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -44869,7 +45507,7 @@ func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootList) Unmarshal(dAtA []byte) error { +func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -44892,15 +45530,15 @@ func (m *ShootList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootList: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44927,13 +45565,52 @@ func (m *ShootList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.CertificateAuthorities == nil { + m.CertificateAuthorities = &CARotation{} + } + if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Kubeconfig == nil { + m.Kubeconfig = &ShootKubeconfigRotation{} + } + if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44960,66 +45637,18 @@ func (m *ShootList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, Shoot{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + if m.SSHKeypair == nil { + m.SSHKeypair = &ShootSSHKeypairRotation{} } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { + if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootMachineImage: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootMachineImage: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -45029,27 +45658,31 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + if m.Observability == nil { + m.Observability = &ShootObservabilityRotation{} + } + if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45076,18 +45709,18 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ProviderConfig == nil { - m.ProviderConfig = &runtime.RawExtension{} + if m.ServiceAccountKey == nil { + m.ServiceAccountKey = &ServiceAccountKeyRotation{} } - if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -45097,24 +45730,27 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Version = &s + if m.ETCDEncryptionKey == nil { + m.ETCDEncryptionKey = &ETCDEncryptionKeyRotation{} + } + if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -45137,7 +45773,7 @@ func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootNetworks) Unmarshal(dAtA []byte) error { +func (m *ShootKubeconfigRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -45160,17 +45796,17 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootNetworks: wiretype end group for non-group") + return fmt.Errorf("proto: ShootKubeconfigRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootNetworks: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootKubeconfigRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -45180,30 +45816,33 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Pods = &s + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -45213,24 +45852,27 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Services = &s + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -45253,7 +45895,7 @@ func (m *ShootNetworks) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { +func (m *ShootList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -45276,15 +45918,15 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootObservabilityRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootObservabilityRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45311,16 +45953,13 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45347,10 +45986,8 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} - } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, Shoot{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -45375,7 +46012,7 @@ func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { +func (m *ShootMachineImage) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -45398,17 +46035,17 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootSSHKeypairRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootMachineImage: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootSSHKeypairRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootMachineImage: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -45418,31 +46055,27 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ProviderConfig", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45469,13 +46102,46 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.ProviderConfig == nil { + m.ProviderConfig = &runtime.RawExtension{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ProviderConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Version = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -45497,7 +46163,7 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { +func (m *ShootNetworks) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -45520,15 +46186,48 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootServiceAccountKeyRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootNetworks: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootNetworks: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Pods = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -45556,11 +46255,62 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.Services = &s iNdEx = postIndex - case 2: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ShootObservabilityRotation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ShootObservabilityRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootObservabilityRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45587,16 +46337,16 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45623,16 +46373,66 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ShootSSHKeypairRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootSSHKeypairRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45659,16 +46459,16 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -45695,10 +46495,10 @@ func (m *ShootServiceAccountKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -45988,6 +46788,9 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } + if m.Networking == nil { + m.Networking = &Networking{} + } if err := m.Networking.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -46192,7 +46995,8 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretBindingName = string(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.SecretBindingName = &s iNdEx = postIndex case 14: if wireType != 2 { @@ -49317,6 +50121,133 @@ func (m *Worker) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sysctls", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Sysctls == nil { + m.Sysctls = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Sysctls[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto index f3140e757..930f184c5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -61,6 +61,10 @@ message AdmissionPlugin { // Disabled specifies whether this plugin should be disabled. // +optional optional bool disabled = 3; + + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + optional string kubeconfigSecretName = 4; } // Alerting contains information about how alerting will be done (i.e. who will receive alerts and how). @@ -575,6 +579,11 @@ message ControllerResource { // Migrate: "BeforeKubeAPIServer" // +optional optional ControllerResourceLifecycle lifecycle = 6; + + // WorkerlessSupported specifies whether this ControllerResource supports Workerless Shoot clusters. + // This field is only relevant when kind is "Extension". + // +optional + optional bool workerlessSupported = 7; } // ControllerResourceLifecycle defines the lifecycle of a controller resource. @@ -692,6 +701,31 @@ message DeploymentRef { optional string name = 1; } +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +message ETCDEncryptionKeyRotation { + // Phase describes the phase of the ETCD encryption key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // ExpirableVersion contains a version and an expiration date. message ExpirableVersion { // Version is the version identifier. @@ -840,7 +874,7 @@ message HibernationSchedule { // +optional optional string end = 2; - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional optional string location = 3; } @@ -917,12 +951,6 @@ message KubeAPIServerConfig { // +optional optional AuditConfig auditConfig = 4; - // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. - // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. - optional bool enableBasicAuthentication = 5; - // OIDCConfig contains configuration settings for the OIDC provider. // +optional optional OIDCConfig oidcConfig = 6; @@ -1207,6 +1235,10 @@ message KubeletConfig { // "5m" for Kubernetes >= v1.26. // +optional optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration streamingConnectionIdleTimeout = 25; + + // MemorySwap configures swap memory available to container workloads. + // +optional + optional MemorySwapConfiguration memorySwap = 26; } // KubeletConfigEviction contains kubelet eviction thresholds supporting either a resource.Quantity or a percentage based value. @@ -1559,6 +1591,7 @@ message MaintenanceAutoUpdate { optional bool kubernetesVersion = 1; // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). + // +optional optional bool machineImageVersion = 2; } @@ -1577,6 +1610,15 @@ message MaintenanceTimeWindow { optional string end = 2; } +// MemorySwapConfiguration contains kubelet swap configuration +// For more information, please see KEP: 2400-node-swap +message MemorySwapConfiguration { + // SwapBehavior configures swap memory available to container workloads. May be one of {"LimitedSwap", "UnlimitedSwap"} + // defaults to: LimitedSwap + // +optional + optional string swapBehavior = 1; +} + // Monitoring contains information about the monitoring configuration for the shoot. message Monitoring { // Alerting contains information about the alerting configuration for the shoot cluster. @@ -1596,6 +1638,7 @@ message NamedResourceReference { // Networking defines networking parameters for the shoot cluster. message Networking { // Type identifies the type of the networking plugin. This field is immutable. + // +optional optional string type = 1; // ProviderConfig is the configuration passed to network resource. @@ -1858,6 +1901,7 @@ message Provider { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge + // +optional repeated Worker workers = 4; // WorkersSettings contains settings for all workers. @@ -2020,12 +2064,6 @@ message SeedBackup { // SeedDNS contains DNS-relevant information about this seed cluster. message SeedDNS { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. - // +optional - optional string ingressDomain = 1; - // Provider configures a DNSProvider // +optional optional SeedDNSProvider provider = 2; @@ -2038,14 +2076,6 @@ message SeedDNSProvider { // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. optional k8s.io.api.core.v1.SecretReference secretRef = 2; - - // Domains contains information about which domains shall be included/excluded for this provider. - // +optional - optional DNSIncludeExclude domains = 3; - - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // +optional - optional DNSIncludeExclude zones = 4; } // SeedList is a collection of Seeds. @@ -2117,15 +2147,26 @@ message SeedSelector { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. message SeedSettingDependencyWatchdog { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional optional SeedSettingDependencyWatchdogEndpoint endpoint = 1; // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional optional SeedSettingDependencyWatchdogProbe probe = 2; + + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogWeeder weeder = 3; + + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogProber prober = 4; } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. message SeedSettingDependencyWatchdogEndpoint { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -2134,13 +2175,30 @@ message SeedSettingDependencyWatchdogEndpoint { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. message SeedSettingDependencyWatchdogProbe { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + optional bool enabled = 1; +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogProber { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. optional bool enabled = 1; } +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogWeeder { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + optional bool enabled = 1; +} + // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. message SeedSettingExcessCapacityReservation { // Enabled controls whether the excess capacity reservation should be enabled. @@ -2184,6 +2242,10 @@ message SeedSettingLoadBalancerServicesZones { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. message SeedSettingOwnerChecks { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -2197,6 +2259,14 @@ message SeedSettingScheduling { optional bool visible = 1; } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +message SeedSettingTopologyAwareRouting { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + optional bool enabled = 1; +} + // SeedSettingVerticalPodAutoscaler controls certain settings for the vertical pod autoscaler components deployed in the // seed. message SeedSettingVerticalPodAutoscaler { @@ -2225,12 +2295,21 @@ message SeedSettings { optional SeedSettingVerticalPodAutoscaler verticalPodAutoscaler = 5; // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional optional SeedSettingOwnerChecks ownerChecks = 6; // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional optional SeedSettingDependencyWatchdog dependencyWatchdog = 7; + + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + optional SeedSettingTopologyAwareRouting topologyAwareRouting = 8; } // SeedSpec is the specification of a Seed. @@ -2385,6 +2464,31 @@ message ServiceAccountConfig { repeated string acceptedIssuers = 5; } +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +message ServiceAccountKeyRotation { + // Phase describes the phase of the service account key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // Shoot represents a Shoot cluster created and managed by Gardener. message Shoot { // Standard object metadata. @@ -2437,36 +2541,11 @@ message ShootCredentialsRotation { // ServiceAccountKey contains information about the service account key credential rotation. // +optional - optional ShootServiceAccountKeyRotation serviceAccountKey = 5; + optional ServiceAccountKeyRotation serviceAccountKey = 5; // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - optional ShootETCDEncryptionKeyRotation etcdEncryptionKey = 6; -} - -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -message ShootETCDEncryptionKeyRotation { - // Phase describes the phase of the ETCD encryption key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; + optional ETCDEncryptionKeyRotation etcdEncryptionKey = 6; } // ShootKubeconfigRotation contains information about the kubeconfig credential rotation. @@ -2539,31 +2618,6 @@ message ShootSSHKeypairRotation { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -message ShootServiceAccountKeyRotation { - // Phase describes the phase of the service account key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the service account key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; -} - // ShootSpec is the specification of a Shoot. message ShootSpec { // Addons contains information about enabled/disabled addons and their configuration. @@ -2589,6 +2643,7 @@ message ShootSpec { optional Kubernetes kubernetes = 6; // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. + // +optional optional Networking networking = 7; // Maintenance contains information about the time window for maintenance operations and which @@ -2613,6 +2668,7 @@ message ShootSpec { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. + // +optional optional string secretBindingName = 13; // SeedName is the name of the seed cluster that runs the control plane of the Shoot. @@ -2960,6 +3016,10 @@ message Worker { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional optional MachineControllerManagerSettings machineControllerManager = 19; + + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + map sysctls = 20; } // WorkerKubernetes contains configuration for Kubernetes components related to this worker pool. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go index dc40c198c..55c701115 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go index 132205a7a..c139a54fe 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package helper import ( "errors" - "regexp" "strings" "time" @@ -56,84 +55,6 @@ func (e *ErrorWithCodes) Error() string { return e.err.Error() } -var ( - unauthenticatedRegexp = regexp.MustCompile(`(?i)(InvalidAuthenticationTokenTenant|Authentication failed|AuthFailure|invalid character|invalid_client|query returned no results|InvalidAccessKeyId|cannot fetch token|InvalidSecretAccessKey|InvalidSubscriptionId)`) - unauthorizedRegexp = regexp.MustCompile(`(?i)(Unauthorized|InvalidClientTokenId|SignatureDoesNotMatch|AuthorizationFailed|invalid_grant|Authorization Profile was not found|no active subscriptions|UnauthorizedOperation|not authorized|AccessDenied|OperationNotAllowed|Error 403|SERVICE_ACCOUNT_ACCESS_DENIED)`) - quotaExceededRegexp = regexp.MustCompile(`(?i)((?:^|[^t]|(?:[^s]|^)t|(?:[^e]|^)st|(?:[^u]|^)est|(?:[^q]|^)uest|(?:[^e]|^)quest|(?:[^r]|^)equest)LimitExceeded|Quotas|Quota.*exceeded|exceeded quota|Quota has been met|QUOTA_EXCEEDED|Maximum number of ports exceeded|ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS|VolumeSizeExceedsAvailableQuota)`) - rateLimitsExceededRegexp = regexp.MustCompile(`(?i)(RequestLimitExceeded|Throttling|Too many requests)`) - dependenciesRegexp = regexp.MustCompile(`(?i)(PendingVerification|Access Not Configured|accessNotConfigured|DependencyViolation|OptInRequired|DeleteConflict|Conflict|inactive billing state|ReadOnlyDisabledSubscription|is already being used|InUseSubnetCannotBeDeleted|VnetInUse|InUseRouteTableCannotBeDeleted|timeout while waiting for state to become|InvalidCidrBlock|already busy for|InsufficientFreeAddressesInSubnet|InternalServerError|internalerror|internal server error|A resource with the ID|VnetAddressSpaceCannotChangeDueToPeerings|InternalBillingError|There are not enough hosts available)`) - retryableDependenciesRegexp = regexp.MustCompile(`(?i)(RetryableError)`) - resourcesDepletedRegexp = regexp.MustCompile(`(?i)(not available in the current hardware cluster|InsufficientInstanceCapacity|SkuNotAvailable|ZonalAllocationFailed|out of stock|Zone.NotOnSale)`) - configurationProblemRegexp = regexp.MustCompile(`(?i)(AzureBastionSubnet|not supported in your requested Availability Zone|InvalidParameter|InvalidParameterValue|notFound|NetcfgInvalidSubnet|InvalidSubnet|Invalid value|KubeletHasInsufficientMemory|KubeletHasDiskPressure|KubeletHasInsufficientPID|violates constraint|no attached internet gateway found|Your query returned no results|PrivateEndpointNetworkPoliciesCannotBeEnabledOnPrivateEndpointSubnet|invalid VPC attributes|PrivateLinkServiceNetworkPoliciesCannotBeEnabledOnPrivateLinkServiceSubnet|unrecognized feature gate|runtime-config invalid key|LoadBalancingRuleMustDisableSNATSinceSameFrontendIPConfigurationIsReferencedByOutboundRule|strict decoder error|not allowed to configure an unsupported|error during apply of object .* is invalid:|OverconstrainedZonalAllocationRequest|duplicate zones|overlapping zones)`) - retryableConfigurationProblemRegexp = regexp.MustCompile(`(?i)(is misconfigured and requires zero voluntary evictions|SDK.CanNotResolveEndpoint|The requested configuration is currently not supported)`) -) - -// DeprecatedDetermineError determines the Gardener error codes for the given error and returns an ErrorWithCodes with the error and codes. -// This function is deprecated and will be removed in a future version. -func DeprecatedDetermineError(err error) error { - if err == nil { - return nil - } - - // try to re-use codes from error - var coder Coder - if errors.As(err, &coder) { - return err - } - - codes := DeprecatedDetermineErrorCodes(err) - if len(codes) == 0 { - return err - } - - return &ErrorWithCodes{err, codes} -} - -// DeprecatedDetermineErrorCodes determines error codes based on the given error. -// This function is deprecated and will be removed in a future version. -func DeprecatedDetermineErrorCodes(err error) []gardencorev1beta1.ErrorCode { - var ( - coder Coder - message = err.Error() - codes = sets.New[string]() - - knownCodes = map[gardencorev1beta1.ErrorCode]func(string) bool{ - gardencorev1beta1.ErrorInfraUnauthenticated: unauthenticatedRegexp.MatchString, - gardencorev1beta1.ErrorInfraUnauthorized: unauthorizedRegexp.MatchString, - gardencorev1beta1.ErrorInfraQuotaExceeded: quotaExceededRegexp.MatchString, - gardencorev1beta1.ErrorInfraRateLimitsExceeded: rateLimitsExceededRegexp.MatchString, - gardencorev1beta1.ErrorInfraDependencies: dependenciesRegexp.MatchString, - gardencorev1beta1.ErrorRetryableInfraDependencies: retryableDependenciesRegexp.MatchString, - gardencorev1beta1.ErrorInfraResourcesDepleted: resourcesDepletedRegexp.MatchString, - gardencorev1beta1.ErrorConfigurationProblem: configurationProblemRegexp.MatchString, - gardencorev1beta1.ErrorRetryableConfigurationProblem: retryableConfigurationProblemRegexp.MatchString, - } - ) - - // try to re-use codes from error - if errors.As(err, &coder) { - for _, code := range coder.Codes() { - codes.Insert(string(code)) - // found codes don't need to be checked any more - delete(knownCodes, code) - } - } - - // determine error codes - for code, matchFn := range knownCodes { - if !codes.Has(string(code)) && matchFn(message) { - codes.Insert(string(code)) - } - } - - // compute error code list based on code string set - var out []gardencorev1beta1.ErrorCode - for _, c := range sets.List(codes) { - out = append(out, gardencorev1beta1.ErrorCode(c)) - } - return out -} - // Coder is an error that may produce a ErrorCodes visible to the outside. type Coder interface { error @@ -223,23 +144,6 @@ type WrappedLastErrors struct { LastErrors []gardencorev1beta1.LastError } -// DeprecatedNewWrappedLastErrors returns a list of last errors. -func DeprecatedNewWrappedLastErrors(description string, err error) *WrappedLastErrors { - var lastErrors []gardencorev1beta1.LastError - - for _, partError := range errorsutils.Errors(err) { - lastErrors = append(lastErrors, *LastErrorWithTaskID( - partError.Error(), - errorsutils.GetID(partError), - DeprecatedDetermineErrorCodes(partError)...)) - } - - return &WrappedLastErrors{ - Description: description, - LastErrors: lastErrors, - } -} - // NewWrappedLastErrors returns a list of last errors. func NewWrappedLastErrors(description string, err error) *WrappedLastErrors { var lastErrors []gardencorev1beta1.LastError diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go index 43cbe0688..fb58ee7bc 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -470,19 +470,6 @@ func ShootWantsAlertManager(shoot *gardencorev1beta1.Shoot) bool { return !ShootIgnoresAlerts(shoot) && shoot.Spec.Monitoring != nil && shoot.Spec.Monitoring.Alerting != nil && len(shoot.Spec.Monitoring.Alerting.EmailReceivers) > 0 } -// ShootWantsBasicAuthentication returns true if basic authentication is not configured or -// if it is set explicitly to 'true'. -func ShootWantsBasicAuthentication(shoot *gardencorev1beta1.Shoot) bool { - kubeAPIServerConfig := shoot.Spec.Kubernetes.KubeAPIServer - if kubeAPIServerConfig == nil { - return true - } - if kubeAPIServerConfig.EnableBasicAuthentication == nil { - return true - } - return *kubeAPIServerConfig.EnableBasicAuthentication -} - // ShootUsesUnmanagedDNS returns true if the shoot's DNS section is marked as 'unmanaged'. func ShootUsesUnmanagedDNS(shoot *gardencorev1beta1.Shoot) bool { return shoot.Spec.DNS != nil && len(shoot.Spec.DNS.Providers) > 0 && shoot.Spec.DNS.Providers[0].Type != nil && *shoot.Spec.DNS.Providers[0].Type == "unmanaged" @@ -511,14 +498,19 @@ func SeedSettingOwnerChecksEnabled(settings *gardencorev1beta1.SeedSettings) boo return settings == nil || settings.OwnerChecks == nil || settings.OwnerChecks.Enabled } -// SeedSettingDependencyWatchdogEndpointEnabled returns true if the depedency-watchdog-endpoint is enabled. -func SeedSettingDependencyWatchdogEndpointEnabled(settings *gardencorev1beta1.SeedSettings) bool { - return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Endpoint == nil || settings.DependencyWatchdog.Endpoint.Enabled +// SeedSettingDependencyWatchdogWeederEnabled returns true if the dependency-watchdog-weeder is enabled. +func SeedSettingDependencyWatchdogWeederEnabled(settings *gardencorev1beta1.SeedSettings) bool { + return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Weeder == nil || settings.DependencyWatchdog.Weeder.Enabled +} + +// SeedSettingDependencyWatchdogProberEnabled returns true if the dependency-watchdog-prober is enabled. +func SeedSettingDependencyWatchdogProberEnabled(settings *gardencorev1beta1.SeedSettings) bool { + return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Prober == nil || settings.DependencyWatchdog.Prober.Enabled } -// SeedSettingDependencyWatchdogProbeEnabled returns true if the depedency-watchdog-probe is enabled. -func SeedSettingDependencyWatchdogProbeEnabled(settings *gardencorev1beta1.SeedSettings) bool { - return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Probe == nil || settings.DependencyWatchdog.Probe.Enabled +// SeedSettingTopologyAwareRoutingEnabled returns true if the topology-aware routing is enabled. +func SeedSettingTopologyAwareRoutingEnabled(settings *gardencorev1beta1.SeedSettings) bool { + return settings != nil && settings.TopologyAwareRouting != nil && settings.TopologyAwareRouting.Enabled } // SeedUsesNginxIngressController returns true if the seed's specification requires an nginx ingress controller to be deployed. @@ -540,18 +532,18 @@ func DetermineMachineImageForName(cloudProfile *gardencorev1beta1.CloudProfile, // FindMachineImageVersion finds the machine image version in the for the given and . // In case no machine image version can be found with the given or , false is being returned. -func FindMachineImageVersion(cloudProfile *gardencorev1beta1.CloudProfile, name, version string) (bool, gardencorev1beta1.MachineImageVersion) { - for _, image := range cloudProfile.Spec.MachineImages { +func FindMachineImageVersion(machineImages []gardencorev1beta1.MachineImage, name, version string) (gardencorev1beta1.MachineImageVersion, bool) { + for _, image := range machineImages { if image.Name == name { for _, imageVersion := range image.Versions { if imageVersion.Version == version { - return true, imageVersion + return imageVersion, true } } } } - return false, gardencorev1beta1.MachineImageVersion{} + return gardencorev1beta1.MachineImageVersion{}, false } // ShootMachineImageVersionExists checks if the shoot machine image (name, version) exists in the machine image constraint and returns true if yes and the index in the versions slice @@ -1040,8 +1032,8 @@ func GetShootAuditPolicyConfigMapRef(apiServerConfig *gardencorev1beta1.KubeAPIS return nil } -// ShootWantsAnonymousAuthentication returns true if anonymous authentication is set explicitly to 'true' and false otherwise. -func ShootWantsAnonymousAuthentication(kubeAPIServerConfig *gardencorev1beta1.KubeAPIServerConfig) bool { +// AnonymousAuthenticationEnabled returns true if anonymous authentication is set explicitly to 'true' and false otherwise. +func AnonymousAuthenticationEnabled(kubeAPIServerConfig *gardencorev1beta1.KubeAPIServerConfig) bool { if kubeAPIServerConfig == nil { return false } @@ -1098,7 +1090,7 @@ func SecretBindingHasType(secretBinding *gardencorev1beta1.SecretBinding, provid return false } - return sets.New[string](types...).Has(providerType) + return sets.New(types...).Has(providerType) } // AddTypeToSecretBinding adds the given provider type to the SecretBinding. @@ -1111,7 +1103,7 @@ func AddTypeToSecretBinding(secretBinding *gardencorev1beta1.SecretBinding, prov } types := GetSecretBindingTypes(secretBinding) - if !sets.New[string](types...).Has(providerType) { + if !sets.New(types...).Has(providerType) { types = append(types, providerType) } secretBinding.Provider.Type = strings.Join(types, ",") @@ -1307,7 +1299,7 @@ func GetShootServiceAccountKeyRotationPhase(credentials *gardencorev1beta1.Shoot // MutateShootServiceAccountKeyRotation mutates the .status.credentials.rotation.serviceAccountKey field based on the // provided mutation function. If the field is nil then it is initialized. -func MutateShootServiceAccountKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ShootServiceAccountKeyRotation)) { +func MutateShootServiceAccountKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ServiceAccountKeyRotation)) { if f == nil { return } @@ -1319,7 +1311,7 @@ func MutateShootServiceAccountKeyRotation(shoot *gardencorev1beta1.Shoot, f func shoot.Status.Credentials.Rotation = &gardencorev1beta1.ShootCredentialsRotation{} } if shoot.Status.Credentials.Rotation.ServiceAccountKey == nil { - shoot.Status.Credentials.Rotation.ServiceAccountKey = &gardencorev1beta1.ShootServiceAccountKeyRotation{} + shoot.Status.Credentials.Rotation.ServiceAccountKey = &gardencorev1beta1.ServiceAccountKeyRotation{} } f(shoot.Status.Credentials.Rotation.ServiceAccountKey) @@ -1336,7 +1328,7 @@ func GetShootETCDEncryptionKeyRotationPhase(credentials *gardencorev1beta1.Shoot // MutateShootETCDEncryptionKeyRotation mutates the .status.credentials.rotation.etcdEncryptionKey field based on the // provided mutation function. If the field is nil then it is initialized. -func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ShootETCDEncryptionKeyRotation)) { +func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ETCDEncryptionKeyRotation)) { if f == nil { return } @@ -1348,7 +1340,7 @@ func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func shoot.Status.Credentials.Rotation = &gardencorev1beta1.ShootCredentialsRotation{} } if shoot.Status.Credentials.Rotation.ETCDEncryptionKey == nil { - shoot.Status.Credentials.Rotation.ETCDEncryptionKey = &gardencorev1beta1.ShootETCDEncryptionKeyRotation{} + shoot.Status.Credentials.Rotation.ETCDEncryptionKey = &gardencorev1beta1.ETCDEncryptionKeyRotation{} } f(shoot.Status.Credentials.Rotation.ETCDEncryptionKey) @@ -1356,6 +1348,11 @@ func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func // IsPSPDisabled returns true if the PodSecurityPolicy plugin is explicitly disabled in the ShootSpec or the cluster version is >= 1.25. func IsPSPDisabled(shoot *gardencorev1beta1.Shoot) bool { + // we have disabled the policy/v1beta1/podsecuritypolicies API for workerless Shoots + if IsWorkerless(shoot) { + return true + } + if versionutils.ConstraintK8sGreaterEqual125.Check(semver.MustParse(shoot.Spec.Kubernetes.Version)) { return true } @@ -1390,9 +1387,15 @@ func IsMultiZonalShootControlPlane(shoot *gardencorev1beta1.Shoot) bool { return shoot.Spec.ControlPlane != nil && shoot.Spec.ControlPlane.HighAvailability != nil && shoot.Spec.ControlPlane.HighAvailability.FailureTolerance.Type == gardencorev1beta1.FailureToleranceTypeZone } +// IsWorkerless checks if the shoot has zero workers. +func IsWorkerless(shoot *gardencorev1beta1.Shoot) bool { + return len(shoot.Spec.Provider.Workers) == 0 +} + // ShootEnablesSSHAccess returns true if ssh access to worker nodes should be allowed for the given shoot. func ShootEnablesSSHAccess(shoot *gardencorev1beta1.Shoot) bool { - return shoot.Spec.Provider.WorkersSettings == nil || shoot.Spec.Provider.WorkersSettings.SSHAccess == nil || shoot.Spec.Provider.WorkersSettings.SSHAccess.Enabled + return !IsWorkerless(shoot) && + (shoot.Spec.Provider.WorkersSettings == nil || shoot.Spec.Provider.WorkersSettings.SSHAccess == nil || shoot.Spec.Provider.WorkersSettings.SSHAccess.Enabled) } // GetFailureToleranceType determines the failure tolerance type of the given shoot. @@ -1407,3 +1410,9 @@ func GetFailureToleranceType(shoot *gardencorev1beta1.Shoot) *gardencorev1beta1. func SeedWantsManagedIngress(seed *gardencorev1beta1.Seed) bool { return seed.Spec.DNS.Provider != nil && seed.Spec.Ingress != nil && seed.Spec.Ingress.Controller.Kind == v1beta1constants.IngressKindNginx } + +// IsTopologyAwareRoutingForShootControlPlaneEnabled returns whether the topology aware routing is enabled for the given Shoot control plane. +// Topology-aware routing is enabled when the corresponding Seed setting is enabled and the Shoot has a multi-zonal control plane. +func IsTopologyAwareRoutingForShootControlPlaneEnabled(seed *gardencorev1beta1.Seed, shoot *gardencorev1beta1.Shoot) bool { + return SeedSettingTopologyAwareRoutingEnabled(seed.Spec.Settings) && IsMultiZonalShootControlPlane(shoot) +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go index fdc135062..294637c7c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go index a9a673f87..a289a2855 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go index 7aa68a047..6d276f00d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go index 1a0ac34c1..6161722e5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go index bade121b6..039cf7568 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go index 41ae24aec..6617a8bdb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go index b4e011838..b2b9e36d4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go index 534ebcaa7..fc2545c21 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go index d23a4347d..6ad1d4162 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go index e2aa68618..a80c13707 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -82,6 +82,10 @@ type ControllerResource struct { // Migrate: "BeforeKubeAPIServer" // +optional Lifecycle *ControllerResourceLifecycle `json:"lifecycle,omitempty" protobuf:"bytes,6,opt,name=lifecycle"` + // WorkerlessSupported specifies whether this ControllerResource supports Workerless Shoot clusters. + // This field is only relevant when kind is "Extension". + // +optional + WorkerlessSupported *bool `json:"workerlessSupported,omitempty" protobuf:"varint,7,opt,name=workerlessSupported"` } // DeploymentRef contains information about `ControllerDeployment` references. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go index f66857d53..aa71449ec 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go index d71d19bd5..ca7947395 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go index 39febf0ef..9e4efb357 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go index 099e675f4..d4ba7b619 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go index b15c8e400..c68d4f039 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -140,11 +140,9 @@ type SeedBackup struct { // SeedDNS contains DNS-relevant information about this seed cluster. type SeedDNS struct { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. - // +optional - IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // IngressDomain is tombstoned to show why 1 is reserved protobuf tag. + // IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // Provider configures a DNSProvider // +optional Provider *SeedDNSProvider `json:"provider,omitempty" protobuf:"bytes,2,opt,name=provider"` @@ -156,12 +154,12 @@ type SeedDNSProvider struct { Type string `json:"type" protobuf:"bytes,1,opt,name=type"` // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference `json:"secretRef" protobuf:"bytes,2,opt,name=secretRef"` - // Domains contains information about which domains shall be included/excluded for this provider. - // +optional - Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // +optional - Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` + + // Domains is tombstoned to show why 3 is reserved protobuf tag. + // Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` + + // Zones is tombstoned to show why 4 is reserved protobuf tag. + // Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` } // Ingress configures the Ingress specific settings of the Seed cluster @@ -248,11 +246,19 @@ type SeedSettings struct { // +optional VerticalPodAutoscaler *SeedSettingVerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty" protobuf:"bytes,5,opt,name=verticalPodAutoscaler"` // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional OwnerChecks *SeedSettingOwnerChecks `json:"ownerChecks,omitempty" protobuf:"bytes,6,opt,name=ownerChecks"` // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional DependencyWatchdog *SeedSettingDependencyWatchdog `json:"dependencyWatchdog,omitempty" protobuf:"bytes,7,opt,name=dependencyWatchdog"` + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + TopologyAwareRouting *SeedSettingTopologyAwareRouting `json:"topologyAwareRouting,omitempty" protobuf:"bytes,8,opt,name=topologyAwareRouting"` } // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. @@ -310,6 +316,10 @@ type SeedSettingVerticalPodAutoscaler struct { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. type SeedSettingOwnerChecks struct { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -319,14 +329,23 @@ type SeedSettingOwnerChecks struct { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. type SeedSettingDependencyWatchdog struct { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional Endpoint *SeedSettingDependencyWatchdogEndpoint `json:"endpoint,omitempty" protobuf:"bytes,1,opt,name=endpoint"` // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional Probe *SeedSettingDependencyWatchdogProbe `json:"probe,omitempty" protobuf:"bytes,2,opt,name=probe"` + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + Weeder *SeedSettingDependencyWatchdogWeeder `json:"weeder,omitempty" protobuf:"bytes,3,opt,name=weeder"` + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + Prober *SeedSettingDependencyWatchdogProber `json:"prober,omitempty" protobuf:"bytes,4,opt,name=prober"` } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. type SeedSettingDependencyWatchdogEndpoint struct { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -335,13 +354,38 @@ type SeedSettingDependencyWatchdogEndpoint struct { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. type SeedSettingDependencyWatchdogProbe struct { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogWeeder struct { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogProber struct { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SeedSettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + // SeedTaint describes a taint on a seed. type SeedTaint struct { // Key is the taint key to be applied to a seed. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go index b0b158e1f..642f14023 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -85,7 +85,8 @@ type ShootSpec struct { // Kubernetes contains the version and configuration settings of the control plane components. Kubernetes Kubernetes `json:"kubernetes" protobuf:"bytes,6,opt,name=kubernetes"` // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. - Networking Networking `json:"networking" protobuf:"bytes,7,opt,name=networking"` + // +optional + Networking *Networking `json:"networking,omitempty" protobuf:"bytes,7,opt,name=networking"` // Maintenance contains information about the time window for maintenance operations and which // operations should be performed. // +optional @@ -103,7 +104,8 @@ type ShootSpec struct { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. - SecretBindingName string `json:"secretBindingName" protobuf:"bytes,13,opt,name=secretBindingName"` + // +optional + SecretBindingName *string `json:"secretBindingName,omitempty" protobuf:"bytes,13,opt,name=secretBindingName"` // SeedName is the name of the seed cluster that runs the control plane of the Shoot. // This field is immutable when the SeedChange feature gate is disabled. // +optional @@ -235,10 +237,10 @@ type ShootCredentialsRotation struct { Observability *ShootObservabilityRotation `json:"observability,omitempty" protobuf:"bytes,4,opt,name=observability"` // ServiceAccountKey contains information about the service account key credential rotation. // +optional - ServiceAccountKey *ShootServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` + ServiceAccountKey *ServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - ETCDEncryptionKey *ShootETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` + ETCDEncryptionKey *ETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` } // CARotation contains information about the certificate authority credential rotation. @@ -292,8 +294,8 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -type ShootServiceAccountKeyRotation struct { +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +type ServiceAccountKeyRotation struct { // Phase describes the phase of the service account key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the service account key credential rotation was successfully @@ -313,8 +315,8 @@ type ShootServiceAccountKeyRotation struct { LastCompletionTriggeredTime *metav1.Time `json:"lastCompletionTriggeredTime,omitempty" protobuf:"bytes,5,opt,name=lastCompletionTriggeredTime"` } -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -type ShootETCDEncryptionKeyRotation struct { +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ETCDEncryptionKeyRotation struct { // Phase describes the phase of the ETCD encryption key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully @@ -382,9 +384,6 @@ type KubernetesDashboard struct { } const ( - // KubernetesDashboardAuthModeBasic uses basic authentication mode for auth. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. - KubernetesDashboardAuthModeBasic = "basic" // KubernetesDashboardAuthModeToken uses token-based mode for auth. KubernetesDashboardAuthModeToken = "token" ) @@ -503,7 +502,7 @@ type HibernationSchedule struct { // End is a Cron spec at which time a Shoot will be woken up. // +optional End *string `json:"end,omitempty" protobuf:"bytes,2,opt,name=end"` - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional Location *string `json:"location,omitempty" protobuf:"bytes,3,opt,name=location"` } @@ -675,11 +674,10 @@ type KubeAPIServerConfig struct { // AuditConfig contains configuration settings for the audit of the kube-apiserver. // +optional AuditConfig *AuditConfig `json:"auditConfig,omitempty" protobuf:"bytes,4,opt,name=auditConfig"` - // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. - // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. - EnableBasicAuthentication *bool `json:"enableBasicAuthentication,omitempty" protobuf:"varint,5,opt,name=enableBasicAuthentication"` + + // EnableBasicAuthentication is tombstoned to show why 5 is reserved protobuf tag. + // EnableBasicAuthentication *bool `json:"enableBasicAuthentication,omitempty" protobuf:"varint,5,opt,name=enableBasicAuthentication"` + // OIDCConfig contains configuration settings for the OIDC provider. // +optional OIDCConfig *OIDCConfig `json:"oidcConfig,omitempty" protobuf:"bytes,6,opt,name=oidcConfig"` @@ -853,6 +851,9 @@ type AdmissionPlugin struct { // Disabled specifies whether this plugin should be disabled. // +optional Disabled *bool `json:"disabled,omitempty" protobuf:"varint,3,opt,name=disabled"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + KubeconfigSecretName *string `json:"kubeconfigSecretName,omitempty" protobuf:"bytes,4,opt,name=kubeconfigSecretName"` } // WatchCacheSizes contains configuration of the API server's watch cache sizes. @@ -1113,6 +1114,9 @@ type KubeletConfig struct { // "5m" for Kubernetes >= v1.26. // +optional StreamingConnectionIdleTimeout *metav1.Duration `json:"streamingConnectionIdleTimeout,omitempty" protobuf:"bytes,25,opt,name=streamingConnectionIdleTimeout"` + // MemorySwap configures swap memory available to container workloads. + // +optional + MemorySwap *MemorySwapConfiguration `json:"memorySwap,omitempty" protobuf:"bytes,26,opt,name=memorySwap"` } // KubeletConfigEviction contains kubelet eviction thresholds supporting either a resource.Quantity or a percentage based value. @@ -1188,10 +1192,32 @@ type KubeletConfigReserved struct { PID *resource.Quantity `json:"pid,omitempty" protobuf:"bytes,4,opt,name=pid"` } +// SwapBehavior configures swap memory available to container workloads +type SwapBehavior string + +const ( + // LimitedSwap is a constant for the kubelet's swap behavior limitting the amount of swap usable for Kubernetes workloads. Workloads on the node not managed by Kubernetes can still swap. + // - cgroupsv1 host: Kubernetes workloads can use any combination of memory and swap, up to the pod's memory limit + // - cgroupsv2 host: swap is managed independently from memory. Kubernetes workloads cannot use swap memory. + LimitedSwap SwapBehavior = "LimitedSwap" + // UnlimitedSwap is a constant for the kubelet's swap behavior enabling Kubernetes workloads to use as much swap memory as required, up to the system limit (not limited by pod or container memory limits). + UnlimitedSwap SwapBehavior = "UnlimitedSwap" +) + +// MemorySwapConfiguration contains kubelet swap configuration +// For more information, please see KEP: 2400-node-swap +type MemorySwapConfiguration struct { + // SwapBehavior configures swap memory available to container workloads. May be one of {"LimitedSwap", "UnlimitedSwap"} + // defaults to: LimitedSwap + // +optional + SwapBehavior *SwapBehavior `json:"swapBehavior,omitempty" protobuf:"bytes,1,opt,name=swapBehavior"` +} + // Networking defines networking parameters for the shoot cluster. type Networking struct { // Type identifies the type of the networking plugin. This field is immutable. - Type string `json:"type" protobuf:"bytes,1,opt,name=type"` + // +optional + Type *string `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` // ProviderConfig is the configuration passed to network resource. // +optional ProviderConfig *runtime.RawExtension `json:"providerConfig,omitempty" protobuf:"bytes,2,opt,name=providerConfig"` @@ -1247,7 +1273,8 @@ type MaintenanceAutoUpdate struct { // KubernetesVersion indicates whether the patch Kubernetes version may be automatically updated (default: true). KubernetesVersion bool `json:"kubernetesVersion" protobuf:"varint,1,opt,name=kubernetesVersion"` // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). - MachineImageVersion bool `json:"machineImageVersion" protobuf:"varint,2,opt,name=machineImageVersion"` + // +optional + MachineImageVersion *bool `json:"machineImageVersion,omitempty" protobuf:"varint,2,opt,name=machineImageVersion"` } // MaintenanceTimeWindow contains information about the time window for maintenance operations. @@ -1294,7 +1321,8 @@ type Provider struct { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge - Workers []Worker `json:"workers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` + // +optional + Workers []Worker `json:"workers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` // WorkersSettings contains settings for all workers. // +optional WorkersSettings *WorkersSettings `json:"workersSettings,omitempty" protobuf:"bytes,5,opt,name=workersSettings"` @@ -1357,6 +1385,9 @@ type Worker struct { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional MachineControllerManagerSettings *MachineControllerManagerSettings `json:"machineControllerManager,omitempty" protobuf:"bytes,19,opt,name=machineControllerManager"` + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + Sysctls map[string]string `json:"sysctls,omitempty" protobuf:"bytes,20,rep,name=sysctls"` } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go index e887322f0..7e461818a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go index bb2149caa..1ef1a1ec7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go index 67a4433d7..60aac78e4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -492,6 +492,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ETCDEncryptionKeyRotation)(nil), (*core.ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(a.(*ETCDEncryptionKeyRotation), b.(*core.ETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ETCDEncryptionKeyRotation)(nil), (*ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(a.(*core.ETCDEncryptionKeyRotation), b.(*ETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ExpirableVersion)(nil), (*core.ExpirableVersion)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ExpirableVersion_To_core_ExpirableVersion(a.(*ExpirableVersion), b.(*core.ExpirableVersion), scope) }); err != nil { @@ -912,6 +922,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*MemorySwapConfiguration)(nil), (*core.MemorySwapConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(a.(*MemorySwapConfiguration), b.(*core.MemorySwapConfiguration), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.MemorySwapConfiguration)(nil), (*MemorySwapConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_MemorySwapConfiguration_To_v1beta1_MemorySwapConfiguration(a.(*core.MemorySwapConfiguration), b.(*MemorySwapConfiguration), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*Monitoring)(nil), (*core.Monitoring)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_Monitoring_To_core_Monitoring(a.(*Monitoring), b.(*core.Monitoring), scope) }); err != nil { @@ -1242,6 +1262,26 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogProber)(nil), (*core.SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(a.(*SeedSettingDependencyWatchdogProber), b.(*core.SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogProber)(nil), (*SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(a.(*core.SeedSettingDependencyWatchdogProber), b.(*SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogWeeder)(nil), (*core.SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(a.(*SeedSettingDependencyWatchdogWeeder), b.(*core.SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogWeeder)(nil), (*SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(a.(*core.SeedSettingDependencyWatchdogWeeder), b.(*SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingExcessCapacityReservation)(nil), (*core.SeedSettingExcessCapacityReservation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(a.(*SeedSettingExcessCapacityReservation), b.(*core.SeedSettingExcessCapacityReservation), scope) }); err != nil { @@ -1292,6 +1332,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingTopologyAwareRouting)(nil), (*core.SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(a.(*SeedSettingTopologyAwareRouting), b.(*core.SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingTopologyAwareRouting)(nil), (*SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(a.(*core.SeedSettingTopologyAwareRouting), b.(*SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingVerticalPodAutoscaler)(nil), (*core.SeedSettingVerticalPodAutoscaler)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(a.(*SeedSettingVerticalPodAutoscaler), b.(*core.SeedSettingVerticalPodAutoscaler), scope) }); err != nil { @@ -1382,6 +1432,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ServiceAccountKeyRotation)(nil), (*core.ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(a.(*ServiceAccountKeyRotation), b.(*core.ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ServiceAccountKeyRotation)(nil), (*ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(a.(*core.ServiceAccountKeyRotation), b.(*ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*Shoot)(nil), (*core.Shoot)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_Shoot_To_core_Shoot(a.(*Shoot), b.(*core.Shoot), scope) }); err != nil { @@ -1422,16 +1482,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootETCDEncryptionKeyRotation)(nil), (*core.ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(a.(*ShootETCDEncryptionKeyRotation), b.(*core.ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootETCDEncryptionKeyRotation)(nil), (*ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(a.(*core.ShootETCDEncryptionKeyRotation), b.(*ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootKubeconfigRotation)(nil), (*core.ShootKubeconfigRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(a.(*ShootKubeconfigRotation), b.(*core.ShootKubeconfigRotation), scope) }); err != nil { @@ -1492,16 +1542,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootServiceAccountKeyRotation)(nil), (*core.ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(a.(*ShootServiceAccountKeyRotation), b.(*core.ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootServiceAccountKeyRotation)(nil), (*ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(a.(*core.ShootServiceAccountKeyRotation), b.(*ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootSpec)(nil), (*core.ShootSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ShootSpec_To_core_ShootSpec(a.(*ShootSpec), b.(*core.ShootSpec), scope) }); err != nil { @@ -1731,6 +1771,7 @@ func autoConvert_v1beta1_AdmissionPlugin_To_core_AdmissionPlugin(in *AdmissionPl out.Name = in.Name out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -1743,6 +1784,7 @@ func autoConvert_core_AdmissionPlugin_To_v1beta1_AdmissionPlugin(in *core.Admiss out.Name = in.Name out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -2594,6 +2636,7 @@ func autoConvert_v1beta1_ControllerResource_To_core_ControllerResource(in *Contr out.ReconcileTimeout = (*metav1.Duration)(unsafe.Pointer(in.ReconcileTimeout)) out.Primary = (*bool)(unsafe.Pointer(in.Primary)) out.Lifecycle = (*core.ControllerResourceLifecycle)(unsafe.Pointer(in.Lifecycle)) + out.WorkerlessSupported = (*bool)(unsafe.Pointer(in.WorkerlessSupported)) return nil } @@ -2609,6 +2652,7 @@ func autoConvert_core_ControllerResource_To_v1beta1_ControllerResource(in *core. out.ReconcileTimeout = (*metav1.Duration)(unsafe.Pointer(in.ReconcileTimeout)) out.Primary = (*bool)(unsafe.Pointer(in.Primary)) out.Lifecycle = (*ControllerResourceLifecycle)(unsafe.Pointer(in.Lifecycle)) + out.WorkerlessSupported = (*bool)(unsafe.Pointer(in.WorkerlessSupported)) return nil } @@ -2821,6 +2865,34 @@ func Convert_core_DeploymentRef_To_v1beta1_DeploymentRef(in *core.DeploymentRef, return autoConvert_core_DeploymentRef_To_v1beta1_DeploymentRef(in, out, s) } +func autoConvert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in, out, s) +} + +func autoConvert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(in, out, s) +} + func autoConvert_v1beta1_ExpirableVersion_To_core_ExpirableVersion(in *ExpirableVersion, out *core.ExpirableVersion, s conversion.Scope) error { out.Version = in.Version out.ExpirationDate = (*metav1.Time)(unsafe.Pointer(in.ExpirationDate)) @@ -3198,7 +3270,6 @@ func autoConvert_v1beta1_KubeAPIServerConfig_To_core_KubeAPIServerConfig(in *Kub } out.APIAudiences = *(*[]string)(unsafe.Pointer(&in.APIAudiences)) out.AuditConfig = (*core.AuditConfig)(unsafe.Pointer(in.AuditConfig)) - out.EnableBasicAuthentication = (*bool)(unsafe.Pointer(in.EnableBasicAuthentication)) out.OIDCConfig = (*core.OIDCConfig)(unsafe.Pointer(in.OIDCConfig)) out.RuntimeConfig = *(*map[string]bool)(unsafe.Pointer(&in.RuntimeConfig)) out.ServiceAccountConfig = (*core.ServiceAccountConfig)(unsafe.Pointer(in.ServiceAccountConfig)) @@ -3234,7 +3305,6 @@ func autoConvert_core_KubeAPIServerConfig_To_v1beta1_KubeAPIServerConfig(in *cor } out.APIAudiences = *(*[]string)(unsafe.Pointer(&in.APIAudiences)) out.AuditConfig = (*AuditConfig)(unsafe.Pointer(in.AuditConfig)) - out.EnableBasicAuthentication = (*bool)(unsafe.Pointer(in.EnableBasicAuthentication)) out.OIDCConfig = (*OIDCConfig)(unsafe.Pointer(in.OIDCConfig)) out.RuntimeConfig = *(*map[string]bool)(unsafe.Pointer(&in.RuntimeConfig)) out.ServiceAccountConfig = (*ServiceAccountConfig)(unsafe.Pointer(in.ServiceAccountConfig)) @@ -3413,6 +3483,7 @@ func autoConvert_v1beta1_KubeletConfig_To_core_KubeletConfig(in *KubeletConfig, out.ContainerLogMaxFiles = (*int32)(unsafe.Pointer(in.ContainerLogMaxFiles)) out.ProtectKernelDefaults = (*bool)(unsafe.Pointer(in.ProtectKernelDefaults)) out.StreamingConnectionIdleTimeout = (*metav1.Duration)(unsafe.Pointer(in.StreamingConnectionIdleTimeout)) + out.MemorySwap = (*core.MemorySwapConfiguration)(unsafe.Pointer(in.MemorySwap)) return nil } @@ -3449,6 +3520,7 @@ func autoConvert_core_KubeletConfig_To_v1beta1_KubeletConfig(in *core.KubeletCon out.SeccompDefault = (*bool)(unsafe.Pointer(in.SeccompDefault)) out.ProtectKernelDefaults = (*bool)(unsafe.Pointer(in.ProtectKernelDefaults)) out.StreamingConnectionIdleTimeout = (*metav1.Duration)(unsafe.Pointer(in.StreamingConnectionIdleTimeout)) + out.MemorySwap = (*MemorySwapConfiguration)(unsafe.Pointer(in.MemorySwap)) return nil } @@ -3987,7 +4059,7 @@ func Convert_core_Maintenance_To_v1beta1_Maintenance(in *core.Maintenance, out * func autoConvert_v1beta1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *MaintenanceAutoUpdate, out *core.MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -3998,7 +4070,7 @@ func Convert_v1beta1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *Mai func autoConvert_core_MaintenanceAutoUpdate_To_v1beta1_MaintenanceAutoUpdate(in *core.MaintenanceAutoUpdate, out *MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -4029,6 +4101,26 @@ func Convert_core_MaintenanceTimeWindow_To_v1beta1_MaintenanceTimeWindow(in *cor return autoConvert_core_MaintenanceTimeWindow_To_v1beta1_MaintenanceTimeWindow(in, out, s) } +func autoConvert_v1beta1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(in *MemorySwapConfiguration, out *core.MemorySwapConfiguration, s conversion.Scope) error { + out.SwapBehavior = (*core.SwapBehavior)(unsafe.Pointer(in.SwapBehavior)) + return nil +} + +// Convert_v1beta1_MemorySwapConfiguration_To_core_MemorySwapConfiguration is an autogenerated conversion function. +func Convert_v1beta1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(in *MemorySwapConfiguration, out *core.MemorySwapConfiguration, s conversion.Scope) error { + return autoConvert_v1beta1_MemorySwapConfiguration_To_core_MemorySwapConfiguration(in, out, s) +} + +func autoConvert_core_MemorySwapConfiguration_To_v1beta1_MemorySwapConfiguration(in *core.MemorySwapConfiguration, out *MemorySwapConfiguration, s conversion.Scope) error { + out.SwapBehavior = (*SwapBehavior)(unsafe.Pointer(in.SwapBehavior)) + return nil +} + +// Convert_core_MemorySwapConfiguration_To_v1beta1_MemorySwapConfiguration is an autogenerated conversion function. +func Convert_core_MemorySwapConfiguration_To_v1beta1_MemorySwapConfiguration(in *core.MemorySwapConfiguration, out *MemorySwapConfiguration, s conversion.Scope) error { + return autoConvert_core_MemorySwapConfiguration_To_v1beta1_MemorySwapConfiguration(in, out, s) +} + func autoConvert_v1beta1_Monitoring_To_core_Monitoring(in *Monitoring, out *core.Monitoring, s conversion.Scope) error { out.Alerting = (*core.Alerting)(unsafe.Pointer(in.Alerting)) return nil @@ -4072,7 +4164,7 @@ func Convert_core_NamedResourceReference_To_v1beta1_NamedResourceReference(in *c } func autoConvert_v1beta1_Networking_To_core_Networking(in *Networking, out *core.Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4087,7 +4179,7 @@ func Convert_v1beta1_Networking_To_core_Networking(in *Networking, out *core.Net } func autoConvert_core_Networking_To_v1beta1_Networking(in *core.Networking, out *Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4733,7 +4825,6 @@ func Convert_core_SeedBackup_To_v1beta1_SeedBackup(in *core.SeedBackup, out *See } func autoConvert_v1beta1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*core.SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4744,7 +4835,6 @@ func Convert_v1beta1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s c } func autoConvert_core_SeedDNS_To_v1beta1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4757,8 +4847,6 @@ func Convert_core_SeedDNS_To_v1beta1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s c func autoConvert_v1beta1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvider, out *core.SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4770,8 +4858,6 @@ func Convert_v1beta1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvider func autoConvert_core_SeedDNSProvider_To_v1beta1_SeedDNSProvider(in *core.SeedDNSProvider, out *SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4903,6 +4989,8 @@ func Convert_core_SeedSelector_To_v1beta1_SeedSelector(in *core.SeedSelector, ou func autoConvert_v1beta1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependencyWatchdog(in *SeedSettingDependencyWatchdog, out *core.SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*core.SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*core.SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*core.SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*core.SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -4914,6 +5002,8 @@ func Convert_v1beta1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependency func autoConvert_core_SeedSettingDependencyWatchdog_To_v1beta1_SeedSettingDependencyWatchdog(in *core.SeedSettingDependencyWatchdog, out *SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -4962,6 +5052,46 @@ func Convert_core_SeedSettingDependencyWatchdogProbe_To_v1beta1_SeedSettingDepen return autoConvert_core_SeedSettingDependencyWatchdogProbe_To_v1beta1_SeedSettingDependencyWatchdogProbe(in, out, s) } +func autoConvert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + func autoConvert_v1beta1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(in *SeedSettingExcessCapacityReservation, out *core.SeedSettingExcessCapacityReservation, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5070,6 +5200,26 @@ func Convert_core_SeedSettingScheduling_To_v1beta1_SeedSettingScheduling(in *cor return autoConvert_core_SeedSettingScheduling_To_v1beta1_SeedSettingScheduling(in, out, s) } +func autoConvert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in, out, s) +} + +func autoConvert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(in, out, s) +} + func autoConvert_v1beta1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(in *SeedSettingVerticalPodAutoscaler, out *core.SeedSettingVerticalPodAutoscaler, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5097,6 +5247,7 @@ func autoConvert_v1beta1_SeedSettings_To_core_SeedSettings(in *SeedSettings, out out.VerticalPodAutoscaler = (*core.SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*core.SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*core.SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*core.SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5112,6 +5263,7 @@ func autoConvert_core_SeedSettings_To_v1beta1_SeedSettings(in *core.SeedSettings out.VerticalPodAutoscaler = (*SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5320,6 +5472,34 @@ func Convert_core_ServiceAccountConfig_To_v1beta1_ServiceAccountConfig(in *core. return autoConvert_core_ServiceAccountConfig_To_v1beta1_ServiceAccountConfig(in, out, s) } +func autoConvert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in, out, s) +} + +func autoConvert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(in, out, s) +} + func autoConvert_v1beta1_Shoot_To_core_Shoot(in *Shoot, out *core.Shoot, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta if err := Convert_v1beta1_ShootSpec_To_core_ShootSpec(&in.Spec, &out.Spec, s); err != nil { @@ -5399,8 +5579,8 @@ func autoConvert_v1beta1_ShootCredentialsRotation_To_core_ShootCredentialsRotati out.Kubeconfig = (*core.ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*core.ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*core.ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*core.ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*core.ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*core.ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*core.ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5414,8 +5594,8 @@ func autoConvert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotati out.Kubeconfig = (*ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5424,34 +5604,6 @@ func Convert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotation(i return autoConvert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotation(in, out, s) } -func autoConvert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in, out, s) -} - -func autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in, out, s) -} - func autoConvert_v1beta1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(in *ShootKubeconfigRotation, out *core.ShootKubeconfigRotation, s conversion.Scope) error { out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) @@ -5610,34 +5762,6 @@ func Convert_core_ShootSSHKeypairRotation_To_v1beta1_ShootSSHKeypairRotation(in return autoConvert_core_ShootSSHKeypairRotation_To_v1beta1_ShootSSHKeypairRotation(in, out, s) } -func autoConvert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in, out, s) -} - -func autoConvert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in, out, s) -} - func autoConvert_v1beta1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.ShootSpec, s conversion.Scope) error { out.Addons = (*core.Addons)(unsafe.Pointer(in.Addons)) out.CloudProfileName = in.CloudProfileName @@ -5647,9 +5771,7 @@ func autoConvert_v1beta1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.Sh if err := Convert_v1beta1_Kubernetes_To_core_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_v1beta1_Networking_To_core_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*core.Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*core.Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*core.Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_v1beta1_Provider_To_core_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5657,7 +5779,7 @@ func autoConvert_v1beta1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.Sh } out.Purpose = (*core.ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*core.SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]core.NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -5682,9 +5804,7 @@ func autoConvert_core_ShootSpec_To_v1beta1_ShootSpec(in *core.ShootSpec, out *Sh if err := Convert_core_Kubernetes_To_v1beta1_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_core_Networking_To_v1beta1_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_core_Provider_To_v1beta1_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5692,7 +5812,7 @@ func autoConvert_core_ShootSpec_To_v1beta1_ShootSpec(in *core.ShootSpec, out *Sh } out.Purpose = (*ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -6044,6 +6164,7 @@ func autoConvert_v1beta1_Worker_To_core_Worker(in *Worker, out *core.Worker, s c out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.SystemComponents = (*core.WorkerSystemComponents)(unsafe.Pointer(in.SystemComponents)) out.MachineControllerManagerSettings = (*core.MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } @@ -6082,6 +6203,7 @@ func autoConvert_core_Worker_To_v1beta1_Worker(in *core.Worker, out *Worker, s c out.KubeletDataVolumeName = (*string)(unsafe.Pointer(in.KubeletDataVolumeName)) out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.MachineControllerManagerSettings = (*MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go index 184f7db88..0d4ad35e9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -84,6 +84,11 @@ func (in *AdmissionPlugin) DeepCopyInto(out *AdmissionPlugin) { *out = new(bool) **out = **in } + if in.KubeconfigSecretName != nil { + in, out := &in.KubeconfigSecretName, &out.KubeconfigSecretName + *out = new(string) + **out = **in + } return } @@ -1064,6 +1069,11 @@ func (in *ControllerResource) DeepCopyInto(out *ControllerResource) { *out = new(ControllerResourceLifecycle) (*in).DeepCopyInto(*out) } + if in.WorkerlessSupported != nil { + in, out := &in.WorkerlessSupported, &out.WorkerlessSupported + *out = new(bool) + **out = **in + } return } @@ -1308,6 +1318,38 @@ func (in *DeploymentRef) DeepCopy() *DeploymentRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ETCDEncryptionKeyRotation) DeepCopyInto(out *ETCDEncryptionKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ETCDEncryptionKeyRotation. +func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ETCDEncryptionKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ExpirableVersion) DeepCopyInto(out *ExpirableVersion) { *out = *in @@ -1719,11 +1761,6 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(AuditConfig) (*in).DeepCopyInto(*out) } - if in.EnableBasicAuthentication != nil { - in, out := &in.EnableBasicAuthentication, &out.EnableBasicAuthentication - *out = new(bool) - **out = **in - } if in.OIDCConfig != nil { in, out := &in.OIDCConfig, &out.OIDCConfig *out = new(OIDCConfig) @@ -2056,6 +2093,11 @@ func (in *KubeletConfig) DeepCopyInto(out *KubeletConfig) { *out = new(metav1.Duration) **out = **in } + if in.MemorySwap != nil { + in, out := &in.MemorySwap, &out.MemorySwap + *out = new(MemorySwapConfiguration) + (*in).DeepCopyInto(*out) + } return } @@ -2616,7 +2658,7 @@ func (in *Maintenance) DeepCopyInto(out *Maintenance) { if in.AutoUpdate != nil { in, out := &in.AutoUpdate, &out.AutoUpdate *out = new(MaintenanceAutoUpdate) - **out = **in + (*in).DeepCopyInto(*out) } if in.TimeWindow != nil { in, out := &in.TimeWindow, &out.TimeWindow @@ -2644,6 +2686,11 @@ func (in *Maintenance) DeepCopy() *Maintenance { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaintenanceAutoUpdate) DeepCopyInto(out *MaintenanceAutoUpdate) { *out = *in + if in.MachineImageVersion != nil { + in, out := &in.MachineImageVersion, &out.MachineImageVersion + *out = new(bool) + **out = **in + } return } @@ -2673,6 +2720,27 @@ func (in *MaintenanceTimeWindow) DeepCopy() *MaintenanceTimeWindow { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MemorySwapConfiguration) DeepCopyInto(out *MemorySwapConfiguration) { + *out = *in + if in.SwapBehavior != nil { + in, out := &in.SwapBehavior, &out.SwapBehavior + *out = new(SwapBehavior) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemorySwapConfiguration. +func (in *MemorySwapConfiguration) DeepCopy() *MemorySwapConfiguration { + if in == nil { + return nil + } + out := new(MemorySwapConfiguration) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Monitoring) DeepCopyInto(out *Monitoring) { *out = *in @@ -2714,6 +2782,11 @@ func (in *NamedResourceReference) DeepCopy() *NamedResourceReference { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } if in.ProviderConfig != nil { in, out := &in.ProviderConfig, &out.ProviderConfig *out = new(runtime.RawExtension) @@ -3463,15 +3536,10 @@ func (in *SeedBackup) DeepCopy() *SeedBackup { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedDNS) DeepCopyInto(out *SeedDNS) { *out = *in - if in.IngressDomain != nil { - in, out := &in.IngressDomain, &out.IngressDomain - *out = new(string) - **out = **in - } if in.Provider != nil { in, out := &in.Provider, &out.Provider *out = new(SeedDNSProvider) - (*in).DeepCopyInto(*out) + **out = **in } return } @@ -3490,16 +3558,6 @@ func (in *SeedDNS) DeepCopy() *SeedDNS { func (in *SeedDNSProvider) DeepCopyInto(out *SeedDNSProvider) { *out = *in out.SecretRef = in.SecretRef - if in.Domains != nil { - in, out := &in.Domains, &out.Domains - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } - if in.Zones != nil { - in, out := &in.Zones, &out.Zones - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } return } @@ -3643,6 +3701,16 @@ func (in *SeedSettingDependencyWatchdog) DeepCopyInto(out *SeedSettingDependency *out = new(SeedSettingDependencyWatchdogProbe) **out = **in } + if in.Weeder != nil { + in, out := &in.Weeder, &out.Weeder + *out = new(SeedSettingDependencyWatchdogWeeder) + **out = **in + } + if in.Prober != nil { + in, out := &in.Prober, &out.Prober + *out = new(SeedSettingDependencyWatchdogProber) + **out = **in + } return } @@ -3688,6 +3756,38 @@ func (in *SeedSettingDependencyWatchdogProbe) DeepCopy() *SeedSettingDependencyW return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogProber) DeepCopyInto(out *SeedSettingDependencyWatchdogProber) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogProber. +func (in *SeedSettingDependencyWatchdogProber) DeepCopy() *SeedSettingDependencyWatchdogProber { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogProber) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopyInto(out *SeedSettingDependencyWatchdogWeeder) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogWeeder. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopy() *SeedSettingDependencyWatchdogWeeder { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogWeeder) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingExcessCapacityReservation) DeepCopyInto(out *SeedSettingExcessCapacityReservation) { *out = *in @@ -3799,6 +3899,22 @@ func (in *SeedSettingScheduling) DeepCopy() *SeedSettingScheduling { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingTopologyAwareRouting) DeepCopyInto(out *SeedSettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingTopologyAwareRouting. +func (in *SeedSettingTopologyAwareRouting) DeepCopy() *SeedSettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SeedSettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingVerticalPodAutoscaler) DeepCopyInto(out *SeedSettingVerticalPodAutoscaler) { *out = *in @@ -3848,6 +3964,11 @@ func (in *SeedSettings) DeepCopyInto(out *SeedSettings) { *out = new(SeedSettingDependencyWatchdog) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SeedSettingTopologyAwareRouting) + **out = **in + } return } @@ -4085,6 +4206,38 @@ func (in *ServiceAccountConfig) DeepCopy() *ServiceAccountConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountKeyRotation) DeepCopyInto(out *ServiceAccountKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountKeyRotation. +func (in *ServiceAccountKeyRotation) DeepCopy() *ServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Shoot) DeepCopyInto(out *Shoot) { *out = *in @@ -4175,12 +4328,12 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) } if in.ServiceAccountKey != nil { in, out := &in.ServiceAccountKey, &out.ServiceAccountKey - *out = new(ShootServiceAccountKeyRotation) + *out = new(ServiceAccountKeyRotation) (*in).DeepCopyInto(*out) } if in.ETCDEncryptionKey != nil { in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey - *out = new(ShootETCDEncryptionKeyRotation) + *out = new(ETCDEncryptionKeyRotation) (*in).DeepCopyInto(*out) } return @@ -4196,38 +4349,6 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. -func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { - if in == nil { - return nil - } - out := new(ShootETCDEncryptionKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4385,38 +4506,6 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. -func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { - if in == nil { - return nil - } - out := new(ShootServiceAccountKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in @@ -4443,7 +4532,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { (*in).DeepCopyInto(*out) } in.Kubernetes.DeepCopyInto(&out.Kubernetes) - in.Networking.DeepCopyInto(&out.Networking) + if in.Networking != nil { + in, out := &in.Networking, &out.Networking + *out = new(Networking) + (*in).DeepCopyInto(*out) + } if in.Maintenance != nil { in, out := &in.Maintenance, &out.Maintenance *out = new(Maintenance) @@ -4460,6 +4553,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = new(ShootPurpose) **out = **in } + if in.SecretBindingName != nil { + in, out := &in.SecretBindingName, &out.SecretBindingName + *out = new(string) + **out = **in + } if in.SeedName != nil { in, out := &in.SeedName, &out.SeedName *out = new(string) @@ -4975,6 +5073,13 @@ func (in *Worker) DeepCopyInto(out *Worker) { *out = new(MachineControllerManagerSettings) (*in).DeepCopyInto(*out) } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go index 1134741da..752ae794d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -142,10 +142,18 @@ func SetObjectDefaults_Shoot(in *Shoot) { if in.Spec.Kubernetes.ClusterAutoscaler != nil { SetDefaults_ClusterAutoscaler(in.Spec.Kubernetes.ClusterAutoscaler) } + if in.Spec.Kubernetes.KubeAPIServer != nil { + SetDefaults_KubeAPIServerConfig(in.Spec.Kubernetes.KubeAPIServer) + } + if in.Spec.Kubernetes.KubeControllerManager != nil { + SetDefaults_KubeControllerManagerConfig(in.Spec.Kubernetes.KubeControllerManager) + } if in.Spec.Kubernetes.VerticalPodAutoscaler != nil { SetDefaults_VerticalPodAutoscaler(in.Spec.Kubernetes.VerticalPodAutoscaler) } - SetDefaults_Networking(&in.Spec.Networking) + if in.Spec.Networking != nil { + SetDefaults_Networking(in.Spec.Networking) + } if in.Spec.Maintenance != nil { SetDefaults_Maintenance(in.Spec.Maintenance) } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go index d6da1e2e6..837e4f497 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -84,6 +84,11 @@ func (in *AdmissionPlugin) DeepCopyInto(out *AdmissionPlugin) { *out = new(runtime.RawExtension) (*in).DeepCopyInto(*out) } + if in.KubeconfigSecretName != nil { + in, out := &in.KubeconfigSecretName, &out.KubeconfigSecretName + *out = new(string) + **out = **in + } return } @@ -1066,6 +1071,11 @@ func (in *ControllerResource) DeepCopyInto(out *ControllerResource) { *out = new(ControllerResourceLifecycle) (*in).DeepCopyInto(*out) } + if in.WorkerlessSupported != nil { + in, out := &in.WorkerlessSupported, &out.WorkerlessSupported + *out = new(bool) + **out = **in + } return } @@ -1310,6 +1320,38 @@ func (in *DeploymentRef) DeepCopy() *DeploymentRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ETCDEncryptionKeyRotation) DeepCopyInto(out *ETCDEncryptionKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ETCDEncryptionKeyRotation. +func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ETCDEncryptionKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ExpirableVersion) DeepCopyInto(out *ExpirableVersion) { *out = *in @@ -1721,11 +1763,6 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(AuditConfig) (*in).DeepCopyInto(*out) } - if in.EnableBasicAuthentication != nil { - in, out := &in.EnableBasicAuthentication, &out.EnableBasicAuthentication - *out = new(bool) - **out = **in - } if in.OIDCConfig != nil { in, out := &in.OIDCConfig, &out.OIDCConfig *out = new(OIDCConfig) @@ -2058,6 +2095,11 @@ func (in *KubeletConfig) DeepCopyInto(out *KubeletConfig) { *out = new(metav1.Duration) **out = **in } + if in.MemorySwap != nil { + in, out := &in.MemorySwap, &out.MemorySwap + *out = new(MemorySwapConfiguration) + (*in).DeepCopyInto(*out) + } return } @@ -2618,7 +2660,7 @@ func (in *Maintenance) DeepCopyInto(out *Maintenance) { if in.AutoUpdate != nil { in, out := &in.AutoUpdate, &out.AutoUpdate *out = new(MaintenanceAutoUpdate) - **out = **in + (*in).DeepCopyInto(*out) } if in.TimeWindow != nil { in, out := &in.TimeWindow, &out.TimeWindow @@ -2646,6 +2688,11 @@ func (in *Maintenance) DeepCopy() *Maintenance { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaintenanceAutoUpdate) DeepCopyInto(out *MaintenanceAutoUpdate) { *out = *in + if in.MachineImageVersion != nil { + in, out := &in.MachineImageVersion, &out.MachineImageVersion + *out = new(bool) + **out = **in + } return } @@ -2675,6 +2722,27 @@ func (in *MaintenanceTimeWindow) DeepCopy() *MaintenanceTimeWindow { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MemorySwapConfiguration) DeepCopyInto(out *MemorySwapConfiguration) { + *out = *in + if in.SwapBehavior != nil { + in, out := &in.SwapBehavior, &out.SwapBehavior + *out = new(SwapBehavior) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemorySwapConfiguration. +func (in *MemorySwapConfiguration) DeepCopy() *MemorySwapConfiguration { + if in == nil { + return nil + } + out := new(MemorySwapConfiguration) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Monitoring) DeepCopyInto(out *Monitoring) { *out = *in @@ -2716,6 +2784,11 @@ func (in *NamedResourceReference) DeepCopy() *NamedResourceReference { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } if in.ProviderConfig != nil { in, out := &in.ProviderConfig, &out.ProviderConfig *out = new(runtime.RawExtension) @@ -3465,15 +3538,10 @@ func (in *SeedBackup) DeepCopy() *SeedBackup { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedDNS) DeepCopyInto(out *SeedDNS) { *out = *in - if in.IngressDomain != nil { - in, out := &in.IngressDomain, &out.IngressDomain - *out = new(string) - **out = **in - } if in.Provider != nil { in, out := &in.Provider, &out.Provider *out = new(SeedDNSProvider) - (*in).DeepCopyInto(*out) + **out = **in } return } @@ -3492,16 +3560,6 @@ func (in *SeedDNS) DeepCopy() *SeedDNS { func (in *SeedDNSProvider) DeepCopyInto(out *SeedDNSProvider) { *out = *in out.SecretRef = in.SecretRef - if in.Domains != nil { - in, out := &in.Domains, &out.Domains - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } - if in.Zones != nil { - in, out := &in.Zones, &out.Zones - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } return } @@ -3645,6 +3703,16 @@ func (in *SeedSettingDependencyWatchdog) DeepCopyInto(out *SeedSettingDependency *out = new(SeedSettingDependencyWatchdogProbe) **out = **in } + if in.Weeder != nil { + in, out := &in.Weeder, &out.Weeder + *out = new(SeedSettingDependencyWatchdogWeeder) + **out = **in + } + if in.Prober != nil { + in, out := &in.Prober, &out.Prober + *out = new(SeedSettingDependencyWatchdogProber) + **out = **in + } return } @@ -3690,6 +3758,38 @@ func (in *SeedSettingDependencyWatchdogProbe) DeepCopy() *SeedSettingDependencyW return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogProber) DeepCopyInto(out *SeedSettingDependencyWatchdogProber) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogProber. +func (in *SeedSettingDependencyWatchdogProber) DeepCopy() *SeedSettingDependencyWatchdogProber { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogProber) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopyInto(out *SeedSettingDependencyWatchdogWeeder) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogWeeder. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopy() *SeedSettingDependencyWatchdogWeeder { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogWeeder) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingExcessCapacityReservation) DeepCopyInto(out *SeedSettingExcessCapacityReservation) { *out = *in @@ -3801,6 +3901,22 @@ func (in *SeedSettingScheduling) DeepCopy() *SeedSettingScheduling { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingTopologyAwareRouting) DeepCopyInto(out *SeedSettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingTopologyAwareRouting. +func (in *SeedSettingTopologyAwareRouting) DeepCopy() *SeedSettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SeedSettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingVerticalPodAutoscaler) DeepCopyInto(out *SeedSettingVerticalPodAutoscaler) { *out = *in @@ -3850,6 +3966,11 @@ func (in *SeedSettings) DeepCopyInto(out *SeedSettings) { *out = new(SeedSettingDependencyWatchdog) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SeedSettingTopologyAwareRouting) + **out = **in + } return } @@ -4087,6 +4208,38 @@ func (in *ServiceAccountConfig) DeepCopy() *ServiceAccountConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountKeyRotation) DeepCopyInto(out *ServiceAccountKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountKeyRotation. +func (in *ServiceAccountKeyRotation) DeepCopy() *ServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Shoot) DeepCopyInto(out *Shoot) { *out = *in @@ -4177,12 +4330,12 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) } if in.ServiceAccountKey != nil { in, out := &in.ServiceAccountKey, &out.ServiceAccountKey - *out = new(ShootServiceAccountKeyRotation) + *out = new(ServiceAccountKeyRotation) (*in).DeepCopyInto(*out) } if in.ETCDEncryptionKey != nil { in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey - *out = new(ShootETCDEncryptionKeyRotation) + *out = new(ETCDEncryptionKeyRotation) (*in).DeepCopyInto(*out) } return @@ -4198,38 +4351,6 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { - *out = *in - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. -func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { - if in == nil { - return nil - } - out := new(ShootETCDEncryptionKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4382,38 +4503,6 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { - *out = *in - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. -func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { - if in == nil { - return nil - } - out := new(ShootServiceAccountKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in @@ -4440,7 +4529,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { (*in).DeepCopyInto(*out) } in.Kubernetes.DeepCopyInto(&out.Kubernetes) - in.Networking.DeepCopyInto(&out.Networking) + if in.Networking != nil { + in, out := &in.Networking, &out.Networking + *out = new(Networking) + (*in).DeepCopyInto(*out) + } if in.Maintenance != nil { in, out := &in.Maintenance, &out.Maintenance *out = new(Maintenance) @@ -4457,6 +4550,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = new(ShootPurpose) **out = **in } + if in.SecretBindingName != nil { + in, out := &in.SecretBindingName, &out.SecretBindingName + *out = new(string) + **out = **in + } if in.SeedName != nil { in, out := &in.SeedName, &out.SeedName *out = new(string) @@ -4972,6 +5070,13 @@ func (in *Worker) DeepCopyInto(out *Worker) { *out = new(MachineControllerManagerSettings) (*in).DeepCopyInto(*out) } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go index 5a16fbd58..468e19676 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go index 6ffa98abc..57be4c38b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go index e6d7ece11..246bc2557 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go index 34c645959..bcedab9fb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go index beb103332..737588902 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go index 02cc03624..9d11fec01 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go index eb80dac50..428799ecd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go index df700279c..1c4542a05 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go index 9c412aeb2..4c444e45e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go index 63859b320..10efc67ea 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go index 616a47370..4afb853de 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go index ef4225b0c..12a3a19ac 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go index 4bfdfba80..4fa761723 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go index 1b4a45d50..32609974f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go index 8740f674d..0dcaf6586 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go index 145fbd274..4fc3a6a5c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go index 2fdce7222..543899d76 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -210,6 +210,9 @@ type WorkerStatus struct { // +patchMergeKey=name // +patchStrategy=merge MachineDeployments []MachineDeployment `json:"machineDeployments,omitempty" patchStrategy:"merge" patchMergeKey:"name"` + // MachineDeploymentsLastUpdateTime is the timestamp when the status.MachineDeployments slice was last updated. + // +optional + MachineDeploymentsLastUpdateTime *metav1.Time `json:"machineDeploymentsLastUpdateTime,omitempty"` } // MachineDeployment is a created machine deployment. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go index 13f78d957..68625f215 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1760,6 +1760,10 @@ func (in *WorkerStatus) DeepCopyInto(out *WorkerStatus) { *out = make([]MachineDeployment, len(*in)) copy(*out, *in) } + if in.MachineDeploymentsLastUpdateTime != nil { + in, out := &in.MachineDeploymentsLastUpdateTime, &out.MachineDeploymentsLastUpdateTime + *out = (*in).DeepCopy() + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go index d2396d8ff..26449004c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/field_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/field_constants.go index adf156ebf..51515fd03 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/field_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/field_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/install/install.go index e495da002..6cf53311c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/register.go index 4a862bc91..13ae6efbc 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go index 94c7d6839..d041c1539 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go index 420038a43..2c7c7acdd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go index adfa160e6..1cfd02212 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go index 740ea2e7f..02e82163a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go index 06799b478..472f71336 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto index 6f68e0241..71243ddbe 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go index 87b5c49fa..f7fe90648 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go index b1e1a9ab7..f09afef0c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go index 98477e435..cfdb7487b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go index 5c7c80d1a..49b3715f0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go index f31795e55..441363770 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go index e9763bcf6..b57cd1a12 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/register.go index ae4eb753f..94ed0355b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go index 232f23236..be9f677af 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go index 11779bdbf..d1374dbdb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go index f13651a85..288f257b9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go index d1c0a2858..16a07c8c9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -63,6 +63,8 @@ type GardenSpec struct { // RuntimeCluster contains configuration for the runtime cluster. type RuntimeCluster struct { + // Networking defines the networking configuration of the runtime cluster. + Networking RuntimeNetworking `json:"networking"` // Provider defines the provider-specific information for this cluster. Provider Provider `json:"provider"` // Settings contains certain settings for this cluster. @@ -70,6 +72,26 @@ type RuntimeCluster struct { Settings *Settings `json:"settings,omitempty"` } +// RuntimeNetworking defines the networking configuration of the runtime cluster. +type RuntimeNetworking struct { + // Nodes is the CIDR of the node network. This field is immutable. + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable" + // +optional + Nodes *string `json:"nodes,omitempty"` + // Pods is the CIDR of the pod network. This field is immutable. + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable" + Pods string `json:"pods"` + // Services is the CIDR of the service network. This field is immutable. + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable" + Services string `json:"services"` + // BlockCIDRs is a list of network addresses that should be blocked. + // +optional + BlockCIDRs []string `json:"blockCIDRs,omitempty"` +} + // Provider defines the provider-specific information for this cluster. type Provider struct { // Zones is the list of availability zones the cluster is deployed to. @@ -87,6 +109,10 @@ type Settings struct { // cluster. // +optional VerticalPodAutoscaler *SettingVerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty"` + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the cluster. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + TopologyAwareRouting *SettingTopologyAwareRouting `json:"topologyAwareRouting,omitempty"` } // SettingLoadBalancerServices controls certain settings for services of type load balancer that are created in the @@ -109,16 +135,41 @@ type SettingVerticalPodAutoscaler struct { Enabled *bool `json:"enabled,omitempty"` } +// SettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the cluster. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the cluster should be topology-aware. + // These Services are virtual-garden-etcd-main-client, virtual-garden-etcd-events-client and virtual-garden-kube-apiserver. + // Additionally, other components that are deployed to the runtime cluster via other means can read this field and + // according to its value enable/disable topology-aware routing for their Services. + Enabled bool `json:"enabled"` +} + // VirtualCluster contains configuration for the virtual cluster. type VirtualCluster struct { // ControlPlane holds information about the general settings for the control plane of the virtual cluster. // +optional ControlPlane *ControlPlane `json:"controlPlane,omitempty"` + // DNS holds information about DNS settings. + DNS DNS `json:"dns"` // ETCD contains configuration for the etcds of the virtual garden cluster. // +optional ETCD *ETCD `json:"etcd,omitempty"` + // Kubernetes contains the version and configuration options for the Kubernetes components of the virtual garden + // cluster. + Kubernetes Kubernetes `json:"kubernetes"` // Maintenance contains information about the time window for maintenance operations. Maintenance Maintenance `json:"maintenance"` + // Networking contains information about cluster networking such as CIDRs, etc. + Networking Networking `json:"networking"` +} + +// DNS holds information about DNS settings. +type DNS struct { + // Domain is the external domain of the virtual garden cluster. This field is immutable. + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable" + Domain string `json:"domain"` } // ETCD contains configuration for the etcds of the virtual garden cluster. @@ -188,6 +239,159 @@ type ControlPlane struct { // HighAvailability specifies the configuration settings for high availability for a resource. type HighAvailability struct{} +// Kubernetes contains the version and configuration options for the Kubernetes components of the virtual garden +// cluster. +type Kubernetes struct { + // KubeAPIServer contains configuration settings for the kube-apiserver. + // +optional + KubeAPIServer *KubeAPIServerConfig `json:"kubeAPIServer,omitempty"` + // KubeControllerManager contains configuration settings for the kube-controller-manager. + // +optional + KubeControllerManager *KubeControllerManagerConfig `json:"kubeControllerManager,omitempty"` + // Version is the semantic Kubernetes version to use for the virtual garden cluster. + // +kubebuilder:validation:MinLength=1 + Version string `json:"version"` +} + +// KubeAPIServerConfig contains configuration settings for the kube-apiserver. +type KubeAPIServerConfig struct { + // KubeAPIServerConfig contains all configuration values not specific to the virtual garden cluster. + // +optional + *gardencorev1beta1.KubeAPIServerConfig `json:",inline"` + // AuditWebhook contains settings related to an audit webhook configuration. + // +optional + AuditWebhook *AuditWebhook `json:"auditWebhook,omitempty"` + // Authentication contains settings related to authentication. + // +optional + Authentication *Authentication `json:"authentication,omitempty"` + // Authorization contains settings related to authorization. + // +optional + Authorization *Authorization `json:"authorization,omitempty"` + // ResourcesToStoreInETCDEvents contains a list of resources which should be stored in etcd-events instead of + // etcd-main. The 'events' resource is always stored in etcd-events. Note that adding or removing resources from + // this list will not migrate them automatically from the etcd-main to etcd-events or vice versa. + // +optional + ResourcesToStoreInETCDEvents []GroupResource `json:"resourcesToStoreInETCDEvents,omitempty"` + // SNI contains configuration options for the TLS SNI settings. + // +optional + SNI *SNI `json:"sni,omitempty"` +} + +// AuditWebhook contains settings related to an audit webhook configuration. +type AuditWebhook struct { + // BatchMaxSize is the maximum size of a batch. + // +kubebuilder:default=30 + // +kubebuilder:validation:Minimum=1 + // +optional + BatchMaxSize *int32 `json:"batchMaxSize,omitempty"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this webhook. + // +kubebuilder:validation:MinLength=1 + KubeconfigSecretName string `json:"kubeconfigSecretName"` + // Version is the API version to send and expect from the webhook. + // +kubebuilder:default=audit.k8s.io/v1 + // +kubebuilder:validation:Enum=audit.k8s.io/v1 + // +optional + Version *string `json:"version,omitempty"` +} + +// Authentication contains settings related to authentication. +type Authentication struct { + // Webhook contains settings related to an authentication webhook configuration. + // +optional + Webhook *AuthenticationWebhook `json:"webhook,omitempty"` +} + +// AuthenticationWebhook contains settings related to an authentication webhook configuration. +type AuthenticationWebhook struct { + // CacheTTL is the duration to cache responses from the webhook authenticator. + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" + // +optional + CacheTTL *metav1.Duration `json:"cacheTTL,omitempty"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this webhook. + // +kubebuilder:validation:MinLength=1 + KubeconfigSecretName string `json:"kubeconfigSecretName"` + // Version is the API version to send and expect from the webhook. + // +kubebuilder:default=v1beta1 + // +kubebuilder:validation:Enum=v1alpha1;v1beta1;v1 + // +optional + Version *string `json:"version,omitempty"` +} + +// Authorization contains settings related to authorization. +type Authorization struct { + // Webhook contains settings related to an authorization webhook configuration. + // +optional + Webhook *AuthorizationWebhook `json:"webhook,omitempty"` +} + +// AuthorizationWebhook contains settings related to an authorization webhook configuration. +type AuthorizationWebhook struct { + // CacheAuthorizedTTL is the duration to cache 'authorized' responses from the webhook authorizer. + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" + // +optional + CacheAuthorizedTTL *metav1.Duration `json:"cacheAuthorizedTTL,omitempty"` + // CacheUnauthorizedTTL is the duration to cache 'unauthorized' responses from the webhook authorizer. + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" + // +optional + CacheUnauthorizedTTL *metav1.Duration `json:"cacheUnauthorizedTTL,omitempty"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this webhook. + // +kubebuilder:validation:MinLength=1 + KubeconfigSecretName string `json:"kubeconfigSecretName"` + // Version is the API version to send and expect from the webhook. + // +kubebuilder:default=v1beta1 + // +kubebuilder:validation:Enum=v1beta1;v1 + // +optional + Version *string `json:"version,omitempty"` +} + +// GroupResource contains a list of resources which should be stored in etcd-events instead of etcd-main. +type GroupResource struct { + // Group is the API group name. + // +kubebuilder:validation:MinLength=1 + Group string `json:"group"` + // Resource is the resource name. + // +kubebuilder:validation:MinLength=1 + Resource string `json:"resource"` +} + +// SNI contains configuration options for the TLS SNI settings. +type SNI struct { + // SecretName is the name of a secret containing the TLS certificate and private key. + // +kubebuilder:validation:MinLength=1 + SecretName string `json:"secretName"` + // DomainPatterns is a list of fully qualified domain names, possibly with prefixed wildcard segments. The domain + // patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address + // requested by a client. If no domain patterns are provided, the names of the certificate are extracted. + // Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. + // +optional + DomainPatterns []string `json:"domainPatterns,omitempty"` +} + +// Networking defines networking parameters for the virtual garden cluster. +type Networking struct { + // Services is the CIDR of the service network. This field is immutable. + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable" + Services string `json:"services"` +} + +// KubeControllerManagerConfig contains configuration settings for the kube-controller-manager. +type KubeControllerManagerConfig struct { + // KubeControllerManagerConfig contains all configuration values not specific to the virtual garden cluster. + // +optional + *gardencorev1beta1.KubeControllerManagerConfig `json:",inline"` + // CertificateSigningDuration is the maximum length of duration signed certificates will be given. Individual CSRs + // may request shorter certs by setting `spec.expirationSeconds`. + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" + // +kubebuilder:default=`48h` + // +optional + CertificateSigningDuration *metav1.Duration `json:"certificateSigningDuration,omitempty"` +} + // GardenStatus is the status of a garden environment. type GardenStatus struct { // Gardener holds information about the Gardener which last acted on the Garden. @@ -214,6 +418,12 @@ type CredentialsRotation struct { // CertificateAuthorities contains information about the certificate authority credential rotation. // +optional CertificateAuthorities *gardencorev1beta1.CARotation `json:"certificateAuthorities,omitempty"` + // ServiceAccountKey contains information about the service account key credential rotation. + // +optional + ServiceAccountKey *gardencorev1beta1.ServiceAccountKeyRotation `json:"serviceAccountKey,omitempty"` + // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. + // +optional + ETCDEncryptionKey *gardencorev1beta1.ETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty"` } const ( @@ -222,10 +432,14 @@ const ( ) // AvailableOperationAnnotations is the set of available operation annotations for Garden resources. -var AvailableOperationAnnotations = sets.New[string]( +var AvailableOperationAnnotations = sets.New( v1beta1constants.GardenerOperationReconcile, v1beta1constants.OperationRotateCAStart, v1beta1constants.OperationRotateCAComplete, + v1beta1constants.OperationRotateServiceAccountKeyStart, + v1beta1constants.OperationRotateServiceAccountKeyComplete, + v1beta1constants.OperationRotateETCDEncryptionKeyStart, + v1beta1constants.OperationRotateETCDEncryptionKeyComplete, v1beta1constants.OperationRotateCredentialsStart, v1beta1constants.OperationRotateCredentialsComplete, ) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go index 2461c394c..da5cd75d1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,9 +23,135 @@ package v1alpha1 import ( v1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuditWebhook) DeepCopyInto(out *AuditWebhook) { + *out = *in + if in.BatchMaxSize != nil { + in, out := &in.BatchMaxSize, &out.BatchMaxSize + *out = new(int32) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuditWebhook. +func (in *AuditWebhook) DeepCopy() *AuditWebhook { + if in == nil { + return nil + } + out := new(AuditWebhook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Authentication) DeepCopyInto(out *Authentication) { + *out = *in + if in.Webhook != nil { + in, out := &in.Webhook, &out.Webhook + *out = new(AuthenticationWebhook) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Authentication. +func (in *Authentication) DeepCopy() *Authentication { + if in == nil { + return nil + } + out := new(Authentication) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthenticationWebhook) DeepCopyInto(out *AuthenticationWebhook) { + *out = *in + if in.CacheTTL != nil { + in, out := &in.CacheTTL, &out.CacheTTL + *out = new(v1.Duration) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthenticationWebhook. +func (in *AuthenticationWebhook) DeepCopy() *AuthenticationWebhook { + if in == nil { + return nil + } + out := new(AuthenticationWebhook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Authorization) DeepCopyInto(out *Authorization) { + *out = *in + if in.Webhook != nil { + in, out := &in.Webhook, &out.Webhook + *out = new(AuthorizationWebhook) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Authorization. +func (in *Authorization) DeepCopy() *Authorization { + if in == nil { + return nil + } + out := new(Authorization) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthorizationWebhook) DeepCopyInto(out *AuthorizationWebhook) { + *out = *in + if in.CacheAuthorizedTTL != nil { + in, out := &in.CacheAuthorizedTTL, &out.CacheAuthorizedTTL + *out = new(v1.Duration) + **out = **in + } + if in.CacheUnauthorizedTTL != nil { + in, out := &in.CacheUnauthorizedTTL, &out.CacheUnauthorizedTTL + *out = new(v1.Duration) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthorizationWebhook. +func (in *AuthorizationWebhook) DeepCopy() *AuthorizationWebhook { + if in == nil { + return nil + } + out := new(AuthorizationWebhook) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Backup) DeepCopyInto(out *Backup) { *out = *in @@ -93,6 +219,16 @@ func (in *CredentialsRotation) DeepCopyInto(out *CredentialsRotation) { *out = new(v1beta1.CARotation) (*in).DeepCopyInto(*out) } + if in.ServiceAccountKey != nil { + in, out := &in.ServiceAccountKey, &out.ServiceAccountKey + *out = new(v1beta1.ServiceAccountKeyRotation) + (*in).DeepCopyInto(*out) + } + if in.ETCDEncryptionKey != nil { + in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey + *out = new(v1beta1.ETCDEncryptionKeyRotation) + (*in).DeepCopyInto(*out) + } return } @@ -106,6 +242,22 @@ func (in *CredentialsRotation) DeepCopy() *CredentialsRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNS) DeepCopyInto(out *DNS) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNS. +func (in *DNS) DeepCopy() *DNS { + if in == nil { + return nil + } + out := new(DNS) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ETCD) DeepCopyInto(out *ETCD) { *out = *in @@ -291,6 +443,22 @@ func (in *GardenStatus) DeepCopy() *GardenStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupResource) DeepCopyInto(out *GroupResource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupResource. +func (in *GroupResource) DeepCopy() *GroupResource { + if in == nil { + return nil + } + out := new(GroupResource) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *HighAvailability) DeepCopyInto(out *HighAvailability) { *out = *in @@ -307,6 +475,104 @@ func (in *HighAvailability) DeepCopy() *HighAvailability { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { + *out = *in + if in.KubeAPIServerConfig != nil { + in, out := &in.KubeAPIServerConfig, &out.KubeAPIServerConfig + *out = new(v1beta1.KubeAPIServerConfig) + (*in).DeepCopyInto(*out) + } + if in.AuditWebhook != nil { + in, out := &in.AuditWebhook, &out.AuditWebhook + *out = new(AuditWebhook) + (*in).DeepCopyInto(*out) + } + if in.Authentication != nil { + in, out := &in.Authentication, &out.Authentication + *out = new(Authentication) + (*in).DeepCopyInto(*out) + } + if in.Authorization != nil { + in, out := &in.Authorization, &out.Authorization + *out = new(Authorization) + (*in).DeepCopyInto(*out) + } + if in.ResourcesToStoreInETCDEvents != nil { + in, out := &in.ResourcesToStoreInETCDEvents, &out.ResourcesToStoreInETCDEvents + *out = make([]GroupResource, len(*in)) + copy(*out, *in) + } + if in.SNI != nil { + in, out := &in.SNI, &out.SNI + *out = new(SNI) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeAPIServerConfig. +func (in *KubeAPIServerConfig) DeepCopy() *KubeAPIServerConfig { + if in == nil { + return nil + } + out := new(KubeAPIServerConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeControllerManagerConfig) DeepCopyInto(out *KubeControllerManagerConfig) { + *out = *in + if in.KubeControllerManagerConfig != nil { + in, out := &in.KubeControllerManagerConfig, &out.KubeControllerManagerConfig + *out = new(v1beta1.KubeControllerManagerConfig) + (*in).DeepCopyInto(*out) + } + if in.CertificateSigningDuration != nil { + in, out := &in.CertificateSigningDuration, &out.CertificateSigningDuration + *out = new(v1.Duration) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeControllerManagerConfig. +func (in *KubeControllerManagerConfig) DeepCopy() *KubeControllerManagerConfig { + if in == nil { + return nil + } + out := new(KubeControllerManagerConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Kubernetes) DeepCopyInto(out *Kubernetes) { + *out = *in + if in.KubeAPIServer != nil { + in, out := &in.KubeAPIServer, &out.KubeAPIServer + *out = new(KubeAPIServerConfig) + (*in).DeepCopyInto(*out) + } + if in.KubeControllerManager != nil { + in, out := &in.KubeControllerManager, &out.KubeControllerManager + *out = new(KubeControllerManagerConfig) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kubernetes. +func (in *Kubernetes) DeepCopy() *Kubernetes { + if in == nil { + return nil + } + out := new(Kubernetes) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Maintenance) DeepCopyInto(out *Maintenance) { *out = *in @@ -324,6 +590,22 @@ func (in *Maintenance) DeepCopy() *Maintenance { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Networking) DeepCopyInto(out *Networking) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networking. +func (in *Networking) DeepCopy() *Networking { + if in == nil { + return nil + } + out := new(Networking) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Provider) DeepCopyInto(out *Provider) { *out = *in @@ -348,6 +630,7 @@ func (in *Provider) DeepCopy() *Provider { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RuntimeCluster) DeepCopyInto(out *RuntimeCluster) { *out = *in + in.Networking.DeepCopyInto(&out.Networking) in.Provider.DeepCopyInto(&out.Provider) if in.Settings != nil { in, out := &in.Settings, &out.Settings @@ -367,6 +650,53 @@ func (in *RuntimeCluster) DeepCopy() *RuntimeCluster { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuntimeNetworking) DeepCopyInto(out *RuntimeNetworking) { + *out = *in + if in.Nodes != nil { + in, out := &in.Nodes, &out.Nodes + *out = new(string) + **out = **in + } + if in.BlockCIDRs != nil { + in, out := &in.BlockCIDRs, &out.BlockCIDRs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeNetworking. +func (in *RuntimeNetworking) DeepCopy() *RuntimeNetworking { + if in == nil { + return nil + } + out := new(RuntimeNetworking) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SNI) DeepCopyInto(out *SNI) { + *out = *in + if in.DomainPatterns != nil { + in, out := &in.DomainPatterns, &out.DomainPatterns + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SNI. +func (in *SNI) DeepCopy() *SNI { + if in == nil { + return nil + } + out := new(SNI) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SettingLoadBalancerServices) DeepCopyInto(out *SettingLoadBalancerServices) { *out = *in @@ -390,6 +720,22 @@ func (in *SettingLoadBalancerServices) DeepCopy() *SettingLoadBalancerServices { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingTopologyAwareRouting) DeepCopyInto(out *SettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingTopologyAwareRouting. +func (in *SettingTopologyAwareRouting) DeepCopy() *SettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SettingVerticalPodAutoscaler) DeepCopyInto(out *SettingVerticalPodAutoscaler) { *out = *in @@ -424,6 +770,11 @@ func (in *Settings) DeepCopyInto(out *Settings) { *out = new(SettingVerticalPodAutoscaler) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SettingTopologyAwareRouting) + **out = **in + } return } @@ -471,12 +822,15 @@ func (in *VirtualCluster) DeepCopyInto(out *VirtualCluster) { *out = new(ControlPlane) (*in).DeepCopyInto(*out) } + out.DNS = in.DNS if in.ETCD != nil { in, out := &in.ETCD, &out.ETCD *out = new(ETCD) (*in).DeepCopyInto(*out) } + in.Kubernetes.DeepCopyInto(&out.Kubernetes) out.Maintenance = in.Maintenance + out.Networking = in.Networking return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go index 10862a1eb..7408b398e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go index 640dbae36..9189a5f8f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go index 78bc88a70..fd8578cd5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go index 36921a43a..9e39d4ae4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -146,6 +146,12 @@ const ( // adding the pod-template-hash selector to the topology spread constraint. PodTopologySpreadConstraintsSkip = "topology-spread-constraints.resources.gardener.cloud/skip" + // EndpointSliceHintsConsider is a constant for a label on an Service which indicates that the EndpointSlices of the + // Service should be considered by the EndpointSlice hints webhook. This label is added to the Service object, Kubernetes + // maintains the Service label as EndpointSlice label. Finally, the EndpointSlice hints webhook mutates EndpointSlice resources + // containing this label. + EndpointSliceHintsConsider = "endpoint-slice-hints.resources.gardener.cloud/consider" + // NetworkingNamespaceSelectors is a constant for an annotation on a Service which contains a list of namespace // selectors. By default, NetworkPolicy resources are only created in the Service's namespace. If any selector is // present, NetworkPolicy resources are also created in all namespaces matching any of the provided selectors. @@ -161,10 +167,24 @@ const ( // NetworkingFromPolicyPodLabelSelector is a constant for an annotation on a Service which contains the label // selector which should be used for pods initiating the communication with this Service. Note that the ports must // be container ports, not service ports. + // Deprecated: Use `networking.resources.gardener.cloud/from--allowed-ports` + // (NetworkPolicyFromPolicyAnnotationPrefix and NetworkPolicyFromPolicyAnnotationSuffix) instead. NetworkingFromPolicyPodLabelSelector = "networking.resources.gardener.cloud/from-policy-pod-label-selector" // NetworkingFromPolicyAllowedPorts is a constant for an annotation on a Service which contains a list of ports to // which ingress traffic shall be allowed. Note that the ports must be container ports, not service ports. + // Deprecated: Use `networking.resources.gardener.cloud/from--allowed-ports` + // (NetworkPolicyFromPolicyAnnotationPrefix and NetworkPolicyFromPolicyAnnotationSuffix) instead. NetworkingFromPolicyAllowedPorts = "networking.resources.gardener.cloud/from-policy-allowed-ports" + // NetworkPolicyFromPolicyAnnotationPrefix is a constant for an annotation key prefix on a Service which contains + // the label selector alias which is used by pods initiating the communication to this Service. The annotation key + // must be suffixed with NetworkPolicyFromPolicyAnnotationSuffix, and the annotations value must be a list of + // container ports (not service ports). + NetworkPolicyFromPolicyAnnotationPrefix = "networking.resources.gardener.cloud/from-" + // NetworkPolicyFromPolicyAnnotationSuffix is a constant for an annotation key suffix on a Service which contains + // the label selector alias which is used by pods initiating the communication to this Service. The annotation key + // must be prefixed with NetworkPolicyFromPolicyAnnotationPrefix, and the annotations value must be a list of + // container ports (not service ports). + NetworkPolicyFromPolicyAnnotationSuffix = "-allowed-ports" // NetworkingServiceName is a constant for a label on a NetworkPolicy which contains the name of the Service is has // been created for. NetworkingServiceName = "networking.resources.gardener.cloud/service-name" diff --git a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go index c97ea2d9e..3cba1bd52 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go index 7c323f911..e1d166c6e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go index 831edb528..14d95075b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go index f9f7cff12..25a4fba1e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go index c8bce1846..d61f55c54 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go index ae284d1a8..f41404b48 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go index c51f4997e..7761f547b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go index d2dfc9d4c..5b72b45f5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go index 299dc20ba..67a962961 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go index a1d2bd4a7..013523f8f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go index 467326467..1d61ffdda 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go index 67e1e223a..96ba366a2 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go index 226922d9c..fbe07f6fe 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto index 4532a1ce8..8fe94b3a0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go index a3a90a8b3..2bc4c071c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go index 9b0f9fc8f..4af67b824 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go index efa0bd00c..7101579b1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go index eb55453ab..1d340acab 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go index b1e50e24b..c593678a6 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go index 51c6b6699..f48688494 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go index 9500fbf47..5a80c616f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/doc.go index 61b8fbc26..c8f92f2f4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/install/install.go index 87523ade8..9ee66de1a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/register.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/register.go index a87296094..8f9b7a0e6 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go index 45d1a77e2..100972443 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go index 5871f8735..b24ff1931 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go index 8f4e7bba4..75dd1a44a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go index 8e91ce30a..4209c0cd1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go index 348524d09..1f49dcbb9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go index 32799ca53..536720450 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto index 210958a05..9613ec5ef 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go index c783212b7..f389dc296 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go index 8422e9e77..ab3cef179 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go index b5ae47697..afc8b9380 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go index 416893921..ebc64a882 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go index c5b4e23a6..678317e7c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go index e9271028d..702d4eaa1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go index c404a374a..3bd0f7a87 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go index c9fa3a126..0ad85dc1c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go index 945fa146c..9332a82f1 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/chartrenderer/factory.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/factory.go index e93b44f92..bc0112222 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/factory.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/factory.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go index d53de6623..d2e0f000b 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/applier.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/applier.go index 515e6a39a..66d8971b4 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/applier.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/applier.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/cache.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/aggregator.go similarity index 96% rename from vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/cache.go rename to vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/aggregator.go index d183ecfb5..bcd45a017 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/cache.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/aggregator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go index 0f683b888..fc49d35c2 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/single_object.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/single_object.go new file mode 100644 index 000000000..193e78acd --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/single_object.go @@ -0,0 +1,267 @@ +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "context" + "fmt" + "sync" + "sync/atomic" + "time" + + "github.com/go-logr/logr" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/rest" + "k8s.io/utils/clock" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" + + "github.com/gardener/gardener/pkg/utils" +) + +var _ cache.Cache = &singleObject{} + +type singleObject struct { + parentCtx context.Context + log logr.Logger + restConfig *rest.Config + newCache cache.NewCacheFunc + opts func() cache.Options + gvk schema.GroupVersionKind + + started bool + startWait chan struct{} // startWait is a channel that is closed after the cache has been started + + lock sync.RWMutex + store map[client.ObjectKey]*objectCache + + clock clock.Clock + garbageCollectionInterval time.Duration + maxIdleTime time.Duration +} + +type objectCache struct { + cache cache.Cache + cancel context.CancelFunc + lastAccessTime atomic.Value +} + +// NewSingleObject creates a new instance of the singleObject cache.Cache implementation. +// This cache maintains a separate cache per `client.ObjectKey` and invalidates them when not accessed for the +// given `maxIdleTime`. A new cache for a particular object is added or re-added as soon as the caches `Get()` function +// is invoked. Please note that object types are not differentiated by this cache (only object keys), i.e. it must not +// be used with mixed GVKs. +func NewSingleObject( + log logr.Logger, + restConfig *rest.Config, + newCache cache.NewCacheFunc, + opts cache.Options, + gvk schema.GroupVersionKind, + clock clock.Clock, + maxIdleTime time.Duration, + garbageCollectionInterval time.Duration, +) cache.Cache { + return &singleObject{ + log: log, + restConfig: restConfig, + newCache: newCache, + opts: func() cache.Options { return opts }, + gvk: gvk, + startWait: make(chan struct{}), + store: make(map[client.ObjectKey]*objectCache), + clock: clock, + garbageCollectionInterval: garbageCollectionInterval, + maxIdleTime: maxIdleTime, + } +} + +func (s *singleObject) Start(ctx context.Context) error { + if s.parentCtx != nil { + return fmt.Errorf("the Start method cannot be called multiple times") + } + + logger := s.log.WithName("garbage-collector").WithValues("interval", s.garbageCollectionInterval, "maxIdleTime", s.maxIdleTime) + logger.V(1).Info("Starting") + + s.parentCtx = ctx + s.started = true + close(s.startWait) + + wait.Until(func() { + s.lock.Lock() + defer s.lock.Unlock() + + for key, objCache := range s.store { + var ( + lastAccessTime, ok = (objCache.lastAccessTime.Load()).(*time.Time) + now = s.clock.Now().UTC() + log = logger.WithValues( + "key", key, + "now", now, + "lastAccessTime", utils.TimePtrDeref(lastAccessTime, time.Time{}), + ) + ) + + if !ok || lastAccessTime == nil || !now.After(lastAccessTime.Add(s.maxIdleTime)) { + log.V(1).Info("Cache was accessed recently, no need to close it") + continue + } + + // close cache for object because it was not accessed for at least the max idle time + log.V(1).Info("Cache was not accessed recently, closing it") + objCache.cancel() + delete(s.store, key) + } + }, s.garbageCollectionInterval, ctx.Done()) + + logger.V(1).Info("Stopping") + return nil +} + +func (s *singleObject) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error { + cache, err := s.getOrCreateCache(key) + if err != nil { + return err + } + return cache.Get(ctx, key, obj, opts...) +} + +func (s *singleObject) GetInformer(ctx context.Context, obj client.Object) (cache.Informer, error) { + cache, err := s.getOrCreateCache(client.ObjectKeyFromObject(obj)) + if err != nil { + return nil, err + } + return cache.GetInformer(ctx, obj) +} + +func (s *singleObject) IndexField(ctx context.Context, obj client.Object, field string, extractValue client.IndexerFunc) error { + cache, err := s.getOrCreateCache(client.ObjectKeyFromObject(obj)) + if err != nil { + return err + } + return cache.IndexField(ctx, obj, field, extractValue) +} + +func (s *singleObject) getOrCreateCache(key client.ObjectKey) (cache.Cache, error) { + if !s.started { + return nil, &cache.ErrCacheNotStarted{} + } + + log := s.log.WithValues("key", key) + + cache, found := func() (*objectCache, bool) { + s.lock.RLock() + defer s.lock.RUnlock() + cache, found := s.store[key] + return cache, found + }() + + if !found { + log.V(1).Info("Cache not found, creating it") + + var err error + cache, err = s.createAndStartCache(log, key) + if err != nil { + return nil, err + } + } else { + log.V(1).Info("Cache found, accessing it") + } + + now := s.clock.Now().UTC() + cache.lastAccessTime.Store(&now) + log.V(1).Info("Cache was accessed, renewing last access time", "lastAccessTime", now) + + return cache.cache, nil +} + +func (s *singleObject) createAndStartCache(log logr.Logger, key client.ObjectKey) (*objectCache, error) { + s.lock.Lock() + defer s.lock.Unlock() + + // Cache could have been created since last read lock was set, so we need to check again if the cache is available. + if objCache, ok := s.store[key]; ok { + log.V(1).Info("Cache created mid-air, no need to create it again") + return objCache, nil + } + + opts := s.opts() + opts.Namespace = key.Namespace + opts.DefaultSelector = cache.ObjectSelector{Field: fields.SelectorFromSet(fields.Set{metav1.ObjectNameField: key.Name})} + opts.SelectorsByObject = nil + + log.V(1).Info("Creating new cache") + cache, err := s.newCache(s.restConfig, opts) + if err != nil { + return nil, fmt.Errorf("failed creating new cache: %w", err) + } + + cacheCtx, cancel := context.WithCancel(s.parentCtx) + + go func() { + log.V(1).Info("Starting new cache") + if err := cache.Start(cacheCtx); err != nil { + log.Error(err, "Cache failed to start") + } + }() + + waitForSyncCtx, waitForSyncCancel := context.WithTimeout(s.parentCtx, 5*time.Second) + defer waitForSyncCancel() + + log.V(1).Info("Waiting for cache to be synced") + if !cache.WaitForCacheSync(waitForSyncCtx) { + cancel() + return nil, fmt.Errorf("failed waiting for cache to be synced") + } + + // The controller-runtime starts informers (which start the real WATCH on the API servers) only lazily with the + // first call on the cache. Hence, after we have started the cache above and waited for its sync, in fact no + // informer was started yet. + // Hence, when we newly start a cache here, we need to perform a call on such cache to make it starting the + // underlying informer. This is blocking because it implicitly waits for this informer to be synced. That's why we + // use a context with a small timeout, especially to exit early in case of any permission errors. + if _, err := cache.GetInformerForKind(waitForSyncCtx, s.gvk); err != nil { + cancel() + return nil, fmt.Errorf("failed getting informer: %w", err) + } + + log.V(1).Info("Cache was synced successfully") + s.store[key] = &objectCache{ + cache: cache, + cancel: cancel, + } + + return s.store[key], nil +} + +func (s *singleObject) WaitForCacheSync(ctx context.Context) bool { + select { + case <-s.startWait: + return true + case <-ctx.Done(): + return false + } +} + +func (s *singleObject) List(_ context.Context, _ client.ObjectList, _ ...client.ListOption) error { + return fmt.Errorf("the List operation is not supported by singleObject cache") +} + +func (s *singleObject) GetInformerForKind(_ context.Context, _ schema.GroupVersionKind) (cache.Informer, error) { + return nil, fmt.Errorf("the GetInformerForKind operation is not supported by singleObject cache") +} diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go index d97b16f11..e8c0f9106 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go index d07b6e2a5..f9e035c2d 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go index 75e7b5d95..965b82fd0 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -37,7 +37,6 @@ import ( settingsinstall "github.com/gardener/gardener/pkg/apis/settings/install" kubernetescache "github.com/gardener/gardener/pkg/client/kubernetes/cache" "github.com/gardener/gardener/pkg/utils" - versionutils "github.com/gardener/gardener/pkg/utils/version" ) const ( @@ -232,30 +231,6 @@ func ValidateConfigWithAllowList(config clientcmdapi.Config, allowedFields []str return nil } -var supportedKubernetesVersions = []string{ - "1.20", - "1.21", - "1.22", - "1.23", - "1.24", - "1.25", - "1.26", -} - -func checkIfSupportedKubernetesVersion(gitVersion string) error { - for _, supportedVersion := range supportedKubernetesVersions { - ok, err := versionutils.CompareVersions(gitVersion, "~", supportedVersion) - if err != nil { - return err - } - - if ok { - return nil - } - } - return fmt.Errorf("unsupported kubernetes version %q", gitVersion) -} - // NewWithConfig returns a new Kubernetes base client. func NewWithConfig(fns ...ConfigFunc) (Interface, error) { conf := &Config{} diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go index d72979494..44827a19c 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import ( logf "sigs.k8s.io/controller-runtime/pkg/log" "github.com/gardener/gardener/pkg/chartrenderer" + "github.com/gardener/gardener/pkg/utils/validation/kubernetesversion" ) // clientSet is a struct containing the configuration for the respective Kubernetes @@ -118,7 +119,7 @@ func (c *clientSet) DiscoverVersion() (*version.Info, error) { return nil, err } - if err := checkIfSupportedKubernetesVersion(serverVersion.GitVersion); err != nil { + if err := kubernetesversion.CheckIfSupported(serverVersion.GitVersion); err != nil { return nil, err } diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go index f6d874034..19c3b9785 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go index 3e73cb742..92782eb60 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/options.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/options.go index c924bbde5..2900cb20d 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/options.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/pods.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/pods.go index ff4784321..178ebca95 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/pods.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/pods.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go index 55dd3e807..aacabe79b 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,10 +18,12 @@ import ( "fmt" "time" + "github.com/go-logr/logr" "golang.org/x/time/rate" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/rest" + "k8s.io/utils/clock" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" @@ -34,6 +36,24 @@ const ( defaultCacheResyncPeriod = 6 * time.Hour ) +// NewRuntimeCache creates a new cache.Cache with the given config and options. It can be used +// for creating new controller-runtime clients with caches. +func NewRuntimeCache(config *rest.Config, options cache.Options) (cache.Cache, error) { + if err := setCacheOptionsDefaults(&options); err != nil { + return nil, err + } + + return cache.New(config, options) +} + +func setCacheOptionsDefaults(options *cache.Options) error { + if options.Resync == nil { + options.Resync = pointer.Duration(defaultCacheResyncPeriod) + } + + return nil +} + func setClientOptionsDefaults(config *rest.Config, options *client.Options) error { if options.Mapper == nil { // default the client's REST mapper to a dynamic REST mapper (automatically rediscovers resources on NoMatchErrors) @@ -82,20 +102,18 @@ func AggregatorCacheFunc(newCache cache.NewCacheFunc, typeToNewCache map[client. } } -// NewRuntimeCache creates a new cache.Cache with the given config and options. It can be used -// for creating new controller-runtime clients with caches. -func NewRuntimeCache(config *rest.Config, options cache.Options) (cache.Cache, error) { - if err := setCacheOptionsDefaults(&options); err != nil { - return nil, err - } +// SingleObjectCacheFunc returns a cache.NewCacheFunc for the SingleObject implementation. +func SingleObjectCacheFunc(log logr.Logger, scheme *runtime.Scheme, obj client.Object) cache.NewCacheFunc { + return func(restConfig *rest.Config, options cache.Options) (cache.Cache, error) { + gvk, err := apiutil.GVKForObject(obj, scheme) + if err != nil { + return nil, err + } - return cache.New(config, options) -} + logger := log. + WithName("single-object-cache"). + WithValues("groupVersion", gvk.GroupVersion().String(), "kind", gvk.Kind) -func setCacheOptionsDefaults(options *cache.Options) error { - if options.Resync == nil { - options.Resync = pointer.Duration(defaultCacheResyncPeriod) + return kubernetescache.NewSingleObject(logger, restConfig, cache.New, options, gvk, clock.RealClock{}, 10*time.Minute, time.Minute), nil } - - return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go index 615f4ace8..be98ccb36 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -54,10 +54,7 @@ func ScaleDeployment(ctx context.Context, c client.Client, key client.ObjectKey, // scaleResource scales resource's 'spec.replicas' to replicas count func scaleResource(ctx context.Context, c client.Client, obj client.Object, replicas int32) error { patch := []byte(fmt.Sprintf(`{"spec":{"replicas":%d}}`, replicas)) - - // TODO: replace this with call to scale subresource once controller-runtime supports it - // see: https://github.com/kubernetes-sigs/controller-runtime/issues/172 - return c.Patch(ctx, obj, client.RawPatch(types.MergePatchType, patch)) + return c.SubResource("scale").Patch(ctx, obj, client.RawPatch(types.MergePatchType, patch)) } // WaitUntilDeploymentScaledToDesiredReplicas waits for the number of available replicas to be equal to the deployment's desired replicas count. diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/types.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/types.go index ee8961e3d..048a4aff6 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/types.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,10 +17,11 @@ package kubernetes import ( "context" + fluentbitv1alpha2 "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2" druidv1alpha1 "github.com/gardener/etcd-druid/api/v1alpha1" hvpav1alpha1 "github.com/gardener/hvpa-controller/api/v1alpha1" machinev1alpha1 "github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1" - volumesnapshotv1beta1 "github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1" + volumesnapshotv1 "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" istionetworkingv1alpha3 "istio.io/client-go/pkg/apis/networking/v1alpha3" istionetworkingv1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1" apiextensionsscheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme" @@ -114,6 +115,7 @@ var ( apiextensionsscheme.AddToScheme, istionetworkingv1beta1.AddToScheme, istionetworkingv1alpha3.AddToScheme, + fluentbitv1alpha2.AddToScheme, ) shootSchemeBuilder = runtime.NewSchemeBuilder( @@ -122,7 +124,7 @@ var ( apiregistrationscheme.AddToScheme, vpaautoscalingv1.AddToScheme, metricsv1beta1.AddToScheme, - volumesnapshotv1beta1.AddToScheme, + volumesnapshotv1.AddToScheme, ) ) diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go index f18e216f4..8df156735 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import ( "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/gardener/gardener/pkg/apis/core" @@ -50,7 +51,7 @@ func DetermineShootsAssociatedTo(ctx context.Context, gardenClient client.Reader } case *gardencorev1beta1.SecretBinding: binding := obj.(*gardencorev1beta1.SecretBinding) - if shoot.Spec.SecretBindingName == binding.Name && shoot.Namespace == binding.Namespace { + if pointer.StringDeref(shoot.Spec.SecretBindingName, "") == binding.Name && shoot.Namespace == binding.Namespace { associatedShoots = append(associatedShoots, fmt.Sprintf("%s/%s", shoot.Namespace, shoot.Name)) } case *gardencorev1beta1.ExposureClass: diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go index 5a382bae6..511a5d35d 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go index 87f3ca8c8..f83e0bb84 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/enqueue_mapped.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/enqueue_mapped.go index fc0e8b39c..f8e0820f3 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/enqueue_mapped.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/enqueue_mapped.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/mapper.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/mapper.go index 5abd15238..1217a2d38 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/mapper.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/mapper/mapper.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go index d42ff5497..56da039bf 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ package controllerutils import ( + "context" "strings" "time" @@ -27,6 +28,9 @@ import ( "github.com/gardener/gardener/pkg/utils" ) +// DefaultReconciliationTimeout is the default timeout for the context of reconciliation functions. +const DefaultReconciliationTimeout = 1 * time.Minute + const separator = "," // GetTasks returns the list of tasks in the ShootTasks annotation. @@ -124,3 +128,25 @@ func ReconcileOncePer24hDuration(clock clock.Clock, objectMeta metav1.ObjectMeta return 0 } + +// GetMainReconciliationContext returns a context with timeout for the controller's main client. The resulting context has a timeout equal to the timeout passed in the argument but +// not more than DefaultReconciliationTimeout. +func GetMainReconciliationContext(ctx context.Context, timeout time.Duration) (context.Context, context.CancelFunc) { + t := timeout + if timeout > DefaultReconciliationTimeout { + t = DefaultReconciliationTimeout + } + + return context.WithTimeout(ctx, t) +} + +// GetChildReconciliationContext returns context with timeout for the controller's secondary client. The resulting context has a timeout equal to half of the timeout +// for the controller's main client. +func GetChildReconciliationContext(ctx context.Context, timeout time.Duration) (context.Context, context.CancelFunc) { + t := timeout + if timeout > DefaultReconciliationTimeout { + t = DefaultReconciliationTimeout + } + + return context.WithTimeout(ctx, t/2) +} diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go index ccf577fe5..280135014 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/predicate/predicate.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/predicate/predicate.go index cc012d453..9a3c4d69b 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/predicate/predicate.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/predicate/predicate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go index 68e7fa6f4..4a62c73a5 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go index 88af92bde..3c75a01d5 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2011 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2011 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go index 988a8e64f..c121da93b 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/runner.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/runner.go index 68f8424b8..b03cc6b7b 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/runner.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/runner.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/source.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/source.go index 37490120d..f486d588d 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/source.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/source.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/update.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/update.go index 628d1cf45..0c6131f0d 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/update.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/update.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/extensions/cluster.go b/vendor/github.com/gardener/gardener/pkg/extensions/cluster.go index 38347fc66..f186d23fc 100644 --- a/vendor/github.com/gardener/gardener/pkg/extensions/cluster.go +++ b/vendor/github.com/gardener/gardener/pkg/extensions/cluster.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/extensions/constants.go b/vendor/github.com/gardener/gardener/pkg/extensions/constants.go index 3f6f29d84..cf27ff818 100644 --- a/vendor/github.com/gardener/gardener/pkg/extensions/constants.go +++ b/vendor/github.com/gardener/gardener/pkg/extensions/constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/extensions/customresources.go b/vendor/github.com/gardener/gardener/pkg/extensions/customresources.go index 9e1fb6c2e..16989e1a6 100644 --- a/vendor/github.com/gardener/gardener/pkg/extensions/customresources.go +++ b/vendor/github.com/gardener/gardener/pkg/extensions/customresources.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -123,9 +123,9 @@ func WaitUntilObjectReadyWithHealthFunction( }); err != nil { message := fmt.Sprintf("Error while waiting for %s to become ready", extensionKey(kind, namespace, name)) if lastObservedError != nil { - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, lastObservedError), v1beta1helper.DeprecatedDetermineErrorCodes(lastObservedError)...) + return fmt.Errorf("%s: %w", message, lastObservedError) } - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, err), v1beta1helper.DeprecatedDetermineErrorCodes(err)...) + return fmt.Errorf("%s: %w", message, err) } return nil @@ -235,9 +235,9 @@ func WaitUntilExtensionObjectDeleted( }); err != nil { message := fmt.Sprintf("Failed to delete %s", extensionKey(kind, namespace, name)) if lastObservedError != nil { - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, lastObservedError), v1beta1helper.DeprecatedDetermineErrorCodes(lastObservedError)...) + return fmt.Errorf("%s: %w", message, lastObservedError) } - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, err), v1beta1helper.DeprecatedDetermineErrorCodes(err)...) + return fmt.Errorf("%s: %w", message, err) } return nil @@ -284,7 +284,7 @@ func RestoreExtensionObjectState( extensionStatus.SetResources(extensionResourceState.Resources) if err := c.Status().Patch(ctx, extensionObj, patch); err != nil { - return v1beta1helper.NewErrorWithCodes(err, v1beta1helper.DeprecatedDetermineErrorCodes(err)...) + return err } for _, r := range extensionResourceState.Resources { @@ -299,10 +299,10 @@ func RestoreExtensionObjectState( if resourceData != nil { obj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&resourceData.Data) if err != nil { - return v1beta1helper.DeprecatedDetermineError(err) + return err } if err := unstructuredutils.CreateOrPatchObjectByRef(ctx, c, &resourceRef, extensionObj.GetNamespace(), obj); err != nil { - return v1beta1helper.DeprecatedDetermineError(err) + return err } } } @@ -338,7 +338,7 @@ func MigrateExtensionObjects( return err } - return v1beta1helper.DeprecatedDetermineError(flow.Parallel(fns...)(ctx)) + return flow.Parallel(fns...)(ctx) } // WaitUntilExtensionObjectMigrated waits until the migrate operation for the extension object is successful. @@ -352,7 +352,7 @@ func WaitUntilExtensionObjectMigrated( interval time.Duration, timeout time.Duration, ) error { - if err := retry.UntilTimeout(ctx, interval, timeout, func(ctx context.Context) (done bool, err error) { + return retry.UntilTimeout(ctx, interval, timeout, func(ctx context.Context) (done bool, err error) { if err := c.Get(ctx, client.ObjectKeyFromObject(obj), obj); err != nil { if client.IgnoreNotFound(err) == nil { return retry.Ok() @@ -369,10 +369,7 @@ func WaitUntilExtensionObjectMigrated( } return retry.MinorError(fmt.Errorf("error while waiting for %s to be successfully migrated", extensionKey(kind, obj.GetNamespace(), obj.GetName()))) - }); err != nil { - return v1beta1helper.DeprecatedDetermineError(err) - } - return nil + }) } // WaitUntilExtensionObjectsMigrated lists all extension objects of a given kind and waits until they are migrated. @@ -395,14 +392,14 @@ func WaitUntilExtensionObjectsMigrated( return err } - return v1beta1helper.DeprecatedDetermineError(flow.Parallel(fns...)(ctx)) + return flow.Parallel(fns...)(ctx) } // AnnotateObjectWithOperation annotates the object with the provided operation annotation value. func AnnotateObjectWithOperation(ctx context.Context, w client.Writer, obj client.Object, operation string) error { patch := client.MergeFrom(obj.DeepCopyObject().(client.Object)) kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerOperation, operation) - kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().String()) + kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().Format(time.RFC3339Nano)) return w.Patch(ctx, obj, patch) } diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go index 3e61bbf75..7fdba1b7e 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go index cd4aa54f2..0a6599b24 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go index dc3009de5..eb24ba0b8 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -71,6 +71,8 @@ type GardenletConfiguration struct { ExposureClassHandlers []ExposureClassHandler // MonitoringConfig is optional and adds additional settings for the monitoring stack. Monitoring *MonitoringConfig + // NodeToleration contains optional settings for default tolerations. + NodeToleration *NodeToleration } // GardenClientConnection specifies the kubeconfig file and the client connection settings @@ -133,8 +135,6 @@ type GardenletControllerConfiguration struct { BackupBucket *BackupBucketControllerConfiguration // BackupEntry defines the configuration of the BackupEntry controller. BackupEntry *BackupEntryControllerConfiguration - // BackupEntryMigration defines the configuration of the BackupEntryMigration controller. - BackupEntryMigration *BackupEntryMigrationControllerConfiguration // Bastion defines the configuration of the Bastion controller. Bastion *BastionControllerConfiguration // ControllerInstallation defines the configuration of the ControllerInstallation controller. @@ -151,8 +151,6 @@ type GardenletControllerConfiguration struct { Shoot *ShootControllerConfiguration // ShootCare defines the configuration of the ShootCare controller. ShootCare *ShootCareControllerConfiguration - // ShootMigration defines the configuration of the ShootMigration controller. - ShootMigration *ShootMigrationControllerConfiguration // ShootStateSync defines the configuration of the ShootState controller. ShootStateSync *ShootStateSyncControllerConfiguration // NetworkPolicy defines the configuration of the NetworkPolicy controller. @@ -183,21 +181,6 @@ type BackupEntryControllerConfiguration struct { DeletionGracePeriodShootPurposes []gardencore.ShootPurpose } -// BackupEntryMigrationControllerConfiguration defines the configuration of the BackupEntryMigration -// controller. -type BackupEntryMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - ConcurrentSyncs *int - // SyncPeriod is the duration how often the existing resources are reconciled. - // It is only relevant for backup entries that are currently being migrated. - SyncPeriod *metav1.Duration - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - GracePeriod *metav1.Duration - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - LastOperationStaleDuration *metav1.Duration -} - // BastionControllerConfiguration defines the configuration of the Bastion // controller. type BastionControllerConfiguration struct { @@ -306,21 +289,6 @@ type SeedCareControllerConfiguration struct { ConditionThresholds []ConditionThreshold } -// ShootMigrationControllerConfiguration defines the configuration of the ShootMigration -// controller. -type ShootMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - ConcurrentSyncs *int - // SyncPeriod is the duration how often the existing resources are reconciled. - // It is only relevant for shoots that are currently being migrated. - SyncPeriod *metav1.Duration - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - GracePeriod *metav1.Duration - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - LastOperationStaleDuration *metav1.Duration -} - // ShootSecretControllerConfiguration defines the configuration of the ShootSecret controller. type ShootSecretControllerConfiguration struct { // ConcurrentSyncs is the number of workers used for the controller to work on events. @@ -358,6 +326,9 @@ type ShootStateSyncControllerConfiguration struct { type NetworkPolicyControllerConfiguration struct { // ConcurrentSyncs is the number of workers used for the controller to work on events. ConcurrentSyncs *int + // AdditionalNamespaceSelectors is a list of label selectors for additional namespaces that should be considered by + // the controller. + AdditionalNamespaceSelectors []metav1.LabelSelector } // ManagedSeedControllerConfiguration defines the configuration of the ManagedSeed controller. @@ -393,40 +364,19 @@ type SeedConfig struct { gardencore.SeedTemplate } -// FluentBit contains configuration for Fluent Bit. -type FluentBit struct { - // ServiceSection defines [SERVICE] configuration for the fluent-bit. - // If it is nil, fluent-bit uses default service configuration. - ServiceSection *string - // InputSection defines [INPUT] configuration for the fluent-bit. - // If it is nil, fluent-bit uses default input configuration. - InputSection *string - // OutputSection defines [OUTPUT] configuration for the fluent-bit. - // If it is nil, fluent-bit uses default output configuration. - OutputSection *string - // NetworkPolicy defines settings for the fluent-bit NetworkPolicy. - NetworkPolicy *FluentBitNetworkPolicy -} - -// FluentBitNetworkPolicy defines settings for the fluent-bit NetworkPolicy. -type FluentBitNetworkPolicy struct { - // AdditionalEgressIPBlocks contains IP CIDRs for the egress network policy. - AdditionalEgressIPBlocks []string -} - -// Loki contains configuration for the Loki. -type Loki struct { - // Enabled is used to enable or disable the shoot and seed Loki. - // If FluentBit is used with a custom output the Loki can, Loki is maybe unused and can be disabled. - // If not set, by default Loki is enabled. +// Vali contains configuration for the Vali. +type Vali struct { + // Enabled is used to enable or disable the shoot and seed Vali. + // If FluentBit is used with a custom output the Vali can, Vali is maybe unused and can be disabled. + // If not set, by default Vali is enabled. Enabled *bool - // Garden contains configuration for the Loki in garden namespace. - Garden *GardenLoki + // Garden contains configuration for the Vali in garden namespace. + Garden *GardenVali } -// GardenLoki contains configuration for the Loki in garden namespace. -type GardenLoki struct { - // Storage is the disk storage capacity of the central Loki. +// GardenVali contains configuration for the Vali in garden namespace. +type GardenVali struct { + // Storage is the disk storage capacity of the central Vali. // Defaults to 100Gi. Storage *resource.Quantity } @@ -447,10 +397,8 @@ type ShootEventLogging struct { type Logging struct { // Enabled is used to enable or disable logging stack for clusters. Enabled *bool - // FluentBit contains configurations for the fluent-bit. - FluentBit *FluentBit - // Loki contains configuration for the Loki. - Loki *Loki + // Vali contains configuration for the Vali. + Vali *Vali // ShootNodeLogging contains configurations for the shoot node logging. ShootNodeLogging *ShootNodeLogging // ShootEventLogging contains configurations for the shoot event logger. @@ -592,3 +540,13 @@ type RemoteWriteMonitoringConfig struct { // QueueConfig contains the queue_config for prometheus remote write. QueueConfig *string } + +// NodeToleration contains information about node toleration options. +type NodeToleration struct { + // DefaultNotReadyTolerationSeconds specifies the seconds for the `node.kubernetes.io/not-ready` toleration that + // should be added to pods not already tolerating this taint. + DefaultNotReadyTolerationSeconds *int64 + // DefaultUnreachableTolerationSeconds specifies the seconds for the `node.kubernetes.io/unreachable` toleration that + // should be added to pods not already tolerating this taint. + DefaultUnreachableTolerationSeconds *int64 +} diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go index fcd4a62ab..3f2d218ed 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go index 49c306d6d..606824373 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -141,9 +141,6 @@ func SetDefaults_GardenletControllerConfiguration(obj *GardenletControllerConfig if obj.BackupEntry == nil { obj.BackupEntry = &BackupEntryControllerConfiguration{} } - if obj.BackupEntryMigration == nil { - obj.BackupEntryMigration = &BackupEntryMigrationControllerConfiguration{} - } if obj.Bastion == nil { obj.Bastion = &BastionControllerConfiguration{} } @@ -168,9 +165,6 @@ func SetDefaults_GardenletControllerConfiguration(obj *GardenletControllerConfig if obj.SeedCare == nil { obj.SeedCare = &SeedCareControllerConfiguration{} } - if obj.ShootMigration == nil { - obj.ShootMigration = &ShootMigrationControllerConfiguration{} - } if obj.ShootSecret == nil { obj.ShootSecret = &ShootSecretControllerConfiguration{} } @@ -249,29 +243,6 @@ func SetDefaults_ShootMonitoringConfig(obj *ShootMonitoringConfig) { } } -// SetDefaults_BackupEntryMigrationControllerConfiguration sets defaults for the backup entry migration controller. -func SetDefaults_BackupEntryMigrationControllerConfiguration(obj *BackupEntryMigrationControllerConfiguration) { - if obj.ConcurrentSyncs == nil { - v := 5 - obj.ConcurrentSyncs = &v - } - - if obj.SyncPeriod == nil { - v := metav1.Duration{Duration: time.Minute} - obj.SyncPeriod = &v - } - - if obj.GracePeriod == nil { - v := metav1.Duration{Duration: 10 * time.Minute} - obj.GracePeriod = &v - } - - if obj.LastOperationStaleDuration == nil { - v := metav1.Duration{Duration: 2 * time.Minute} - obj.LastOperationStaleDuration = &v - } -} - // SetDefaults_BastionControllerConfiguration sets defaults for the backup bucket controller. func SetDefaults_BastionControllerConfiguration(obj *BastionControllerConfiguration) { if obj.ConcurrentSyncs == nil { @@ -385,29 +356,6 @@ func SetDefaults_ShootCareControllerConfiguration(obj *ShootCareControllerConfig } } -// SetDefaults_ShootMigrationControllerConfiguration sets defaults for the shoot migration controller. -func SetDefaults_ShootMigrationControllerConfiguration(obj *ShootMigrationControllerConfiguration) { - if obj.ConcurrentSyncs == nil { - v := 5 - obj.ConcurrentSyncs = &v - } - - if obj.SyncPeriod == nil { - v := metav1.Duration{Duration: time.Minute} - obj.SyncPeriod = &v - } - - if obj.GracePeriod == nil { - v := metav1.Duration{Duration: 2 * time.Hour} - obj.GracePeriod = &v - } - - if obj.LastOperationStaleDuration == nil { - v := metav1.Duration{Duration: 10 * time.Minute} - obj.LastOperationStaleDuration = &v - } -} - // SetDefaults_StaleExtensionHealthChecks sets defaults for the stale extension health checks. func SetDefaults_StaleExtensionHealthChecks(obj *StaleExtensionHealthChecks) { if obj.Threshold == nil { @@ -433,11 +381,10 @@ func SetDefaults_ShootStateSyncControllerConfiguration(obj *ShootStateSyncContro } } -// SetDefaults_NetworkPolicyControllerConfiguration sets defaults for the seed apiserver endpoints controller. +// SetDefaults_NetworkPolicyControllerConfiguration sets defaults for the network policy controller. func SetDefaults_NetworkPolicyControllerConfiguration(obj *NetworkPolicyControllerConfiguration) { if obj.ConcurrentSyncs == nil { - // only use few workers for each seed, as the API server endpoints should stay the same most of the time. - v := 3 + v := 5 obj.ConcurrentSyncs = &v } } @@ -504,17 +451,17 @@ func SetDefaults_Logging(obj *Logging) { if obj.Enabled == nil { obj.Enabled = pointer.Bool(false) } - if obj.Loki == nil { - obj.Loki = &Loki{} + if obj.Vali == nil { + obj.Vali = &Vali{} } - if obj.Loki.Enabled == nil { - obj.Loki.Enabled = obj.Enabled + if obj.Vali.Enabled == nil { + obj.Vali.Enabled = obj.Enabled } - if obj.Loki.Garden == nil { - obj.Loki.Garden = &GardenLoki{} + if obj.Vali.Garden == nil { + obj.Vali.Garden = &GardenVali{} } - if obj.Loki.Garden.Storage == nil { - obj.Loki.Garden.Storage = &DefaultCentralLokiStorage + if obj.Vali.Garden.Storage == nil { + obj.Vali.Garden.Storage = &DefaultCentralValiStorage } if obj.ShootEventLogging == nil { obj.ShootEventLogging = &ShootEventLogging{} diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go index fa831411a..5e71867f8 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go index 0a27ae866..69541a56d 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go index 0cf9faa0a..d077a7b69 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -87,6 +87,9 @@ type GardenletConfiguration struct { // MonitoringConfig is optional and adds additional settings for the monitoring stack. // +optional Monitoring *MonitoringConfig `json:"monitoring,omitempty"` + // NodeToleration contains optional settings for default tolerations. + // +optional + NodeToleration *NodeToleration `json:"nodeToleration,omitempty"` } // GardenClientConnection specifies the kubeconfig file and the client connection settings @@ -159,9 +162,6 @@ type GardenletControllerConfiguration struct { // BackupEntry defines the configuration of the BackupEntry controller. // +optional BackupEntry *BackupEntryControllerConfiguration `json:"backupEntry,omitempty"` - // BackupEntryMigration defines the configuration of the BackupEntryMigration controller. - // +optional - BackupEntryMigration *BackupEntryMigrationControllerConfiguration `json:"backupEntryMigration,omitempty"` // Bastion defines the configuration of the Bastion controller. // +optional Bastion *BastionControllerConfiguration `json:"bastion,omitempty"` @@ -186,9 +186,6 @@ type GardenletControllerConfiguration struct { // ShootCare defines the configuration of the ShootCare controller. // +optional ShootCare *ShootCareControllerConfiguration `json:"shootCare,omitempty"` - // ShootMigration defines the configuration of the ShootMigration controller. - // +optional - ShootMigration *ShootMigrationControllerConfiguration `json:"shootMigration,omitempty"` // ShootStateSync defines the configuration of the ShootState controller // +optional ShootStateSync *ShootStateSyncControllerConfiguration `json:"shootStateSync,omitempty"` @@ -227,25 +224,6 @@ type BackupEntryControllerConfiguration struct { DeletionGracePeriodShootPurposes []gardencorev1beta1.ShootPurpose `json:"deletionGracePeriodShootPurposes,omitempty"` } -// BackupEntryMigrationControllerConfiguration defines the configuration of the BackupEntryMigration -// controller. -type BackupEntryMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - // +optional - ConcurrentSyncs *int `json:"concurrentSyncs,omitempty"` - // SyncPeriod is the duration how often the existing resources are reconciled. - // It is only relevant for backup entries that are currently being migrated. - // +optional - SyncPeriod *metav1.Duration `json:"syncPeriod,omitempty"` - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - // +optional - GracePeriod *metav1.Duration `json:"gracePeriod,omitempty"` - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - // +optional - LastOperationStaleDuration *metav1.Duration `json:"lastOperationStaleDuration,omitempty"` -} - // BastionControllerConfiguration defines the configuration of the Bastion // controller. type BastionControllerConfiguration struct { @@ -377,25 +355,6 @@ type SeedCareControllerConfiguration struct { ConditionThresholds []ConditionThreshold `json:"conditionThresholds,omitempty"` } -// ShootMigrationControllerConfiguration defines the configuration of the ShootMigration -// controller. -type ShootMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - // +optional - ConcurrentSyncs *int `json:"concurrentSyncs,omitempty"` - // SyncPeriod is the duration how often the existing resources are reconciled. - // +optional - SyncPeriod *metav1.Duration `json:"syncPeriod,omitempty"` - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - // It is only relevant for shoots that are currently being migrated. - // +optional - GracePeriod *metav1.Duration `json:"gracePeriod,omitempty"` - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - // +optional - LastOperationStaleDuration *metav1.Duration `json:"lastOperationStaleDuration,omitempty"` -} - // ShootSecretControllerConfiguration defines the configuration of the ShootSecret controller. type ShootSecretControllerConfiguration struct { // ConcurrentSyncs is the number of workers used for the controller to work on events. @@ -437,6 +396,10 @@ type NetworkPolicyControllerConfiguration struct { // ConcurrentSyncs is the number of workers used for the controller to work on events. // +optional ConcurrentSyncs *int `json:"concurrentSyncs,omitempty"` + // AdditionalNamespaceSelectors is a list of label selectors for additional namespaces that should be considered by + // the controller. + // +optional + AdditionalNamespaceSelectors []metav1.LabelSelector `json:"additionalNamespaceSelectors,omitempty"` } // ManagedSeedControllerConfiguration defines the configuration of the ManagedSeed controller. @@ -478,47 +441,21 @@ type SeedConfig struct { gardencorev1beta1.SeedTemplate `json:",inline"` } -// FluentBit contains configuration for Fluent Bit. -type FluentBit struct { - // ServiceSection defines [SERVICE] configuration for the fluent-bit. - // If it is nil, fluent-bit uses default service configuration. - // +optional - ServiceSection *string `json:"service,omitempty" yaml:"service,omitempty"` - // InputSection defines [INPUT] configuration for the fluent-bit. - // If it is nil, fluent-bit uses default input configuration. - // +optional - InputSection *string `json:"input,omitempty" yaml:"input,omitempty"` - // OutputSection defines [OUTPUT] configuration for the fluent-bit. - // If it is nil, fluent-bit uses default output configuration. - // +optional - OutputSection *string `json:"output,omitempty" yaml:"output,omitempty"` - // NetworkPolicy defines settings for the fluent-bit NetworkPolicy. - // +optional - NetworkPolicy *FluentBitNetworkPolicy `json:"networkPolicy,omitempty" yaml:"networkPolicy,omitempty"` -} - -// FluentBitNetworkPolicy defines settings for the fluent-bit NetworkPolicy. -type FluentBitNetworkPolicy struct { - // AdditionalEgressIPBlocks contains IP CIDRs for the egress network policy. - // +optional - AdditionalEgressIPBlocks []string `json:"additionalEgressIPBlocks,omitempty" yaml:"additionalEgressIPBlocks,omitempty"` -} - -// Loki contains configuration for the Loki. -type Loki struct { - // Enabled is used to enable or disable the shoot and seed Loki. - // If FluentBit is used with a custom output the Loki can, Loki is maybe unused and can be disabled. - // If not set, by default Loki is enabled +// Vali contains configuration for the Vali. +type Vali struct { + // Enabled is used to enable or disable the shoot and seed Vali. + // If FluentBit is used with a custom output the Vali can, Vali is maybe unused and can be disabled. + // If not set, by default Vali is enabled // +optional Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"` - // Garden contains configuration for the Loki in garden namespace. + // Garden contains configuration for the Vali in garden namespace. // +optional - Garden *GardenLoki `json:"garden,omitempty" yaml:"garden,omitempty"` + Garden *GardenVali `json:"garden,omitempty" yaml:"garden,omitempty"` } -// GardenLoki contains configuration for the Loki in garden namespace. -type GardenLoki struct { - // Storage is the disk storage capacity of the central Loki. +// GardenVali contains configuration for the Vali in garden namespace. +type GardenVali struct { + // Storage is the disk storage capacity of the central Vali. // Defaults to 100Gi. // +optional Storage *resource.Quantity `json:"storage,omitempty" yaml:"storage,omitempty"` @@ -543,12 +480,9 @@ type Logging struct { // Enabled is used to enable or disable logging stack for clusters. // +optional Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"` - // FluentBit contains configurations for the fluent-bit + // Vali contains configuration for the Vali // +optional - FluentBit *FluentBit `json:"fluentBit,omitempty" yaml:"fluentBit,omitempty"` - // Loki contains configuration for the Loki - // +optional - Loki *Loki `json:"loki,omitempty" yaml:"loki,omitempty"` + Vali *Vali `json:"vali,omitempty" yaml:"vali,omitempty"` // ShootNodeLogging contains configurations for the shoot node logging // +optional ShootNodeLogging *ShootNodeLogging `json:"shootNodeLogging,omitempty" yaml:"shootNodeLogging,omitempty"` @@ -761,5 +695,17 @@ const ( // DefaultControllerSyncPeriod is a default value for sync period for controllers. var DefaultControllerSyncPeriod = metav1.Duration{Duration: time.Minute} -// DefaultCentralLokiStorage is a default value for garden/loki's storage. -var DefaultCentralLokiStorage = resource.MustParse("100Gi") +// DefaultCentralValiStorage is a default value for garden/vali's storage. +var DefaultCentralValiStorage = resource.MustParse("100Gi") + +// NodeToleration contains information about node toleration options. +type NodeToleration struct { + // DefaultNotReadyTolerationSeconds specifies the seconds for the `node.kubernetes.io/not-ready` toleration that + // should be added to pods not already tolerating this taint. + // +optional + DefaultNotReadyTolerationSeconds *int64 `json:"defaultNotReadyTolerationSeconds,omitempty"` + // DefaultUnreachableTolerationSeconds specifies the seconds for the `node.kubernetes.io/unreachable` toleration that + // should be added to pods not already tolerating this taint. + // +optional + DefaultUnreachableTolerationSeconds *int64 `json:"defaultUnreachableTolerationSeconds,omitempty"` +} diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go index 0a16239b2..94e86e4e7 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -73,16 +73,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*BackupEntryMigrationControllerConfiguration)(nil), (*config.BackupEntryMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(a.(*BackupEntryMigrationControllerConfiguration), b.(*config.BackupEntryMigrationControllerConfiguration), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*config.BackupEntryMigrationControllerConfiguration)(nil), (*BackupEntryMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(a.(*config.BackupEntryMigrationControllerConfiguration), b.(*BackupEntryMigrationControllerConfiguration), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*BastionControllerConfiguration)(nil), (*config.BastionControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_BastionControllerConfiguration_To_config_BastionControllerConfiguration(a.(*BastionControllerConfiguration), b.(*config.BastionControllerConfiguration), scope) }); err != nil { @@ -183,26 +173,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*FluentBit)(nil), (*config.FluentBit)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_FluentBit_To_config_FluentBit(a.(*FluentBit), b.(*config.FluentBit), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*config.FluentBit)(nil), (*FluentBit)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_FluentBit_To_v1alpha1_FluentBit(a.(*config.FluentBit), b.(*FluentBit), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*FluentBitNetworkPolicy)(nil), (*config.FluentBitNetworkPolicy)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(a.(*FluentBitNetworkPolicy), b.(*config.FluentBitNetworkPolicy), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*config.FluentBitNetworkPolicy)(nil), (*FluentBitNetworkPolicy)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(a.(*config.FluentBitNetworkPolicy), b.(*FluentBitNetworkPolicy), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*GardenClientConnection)(nil), (*config.GardenClientConnection)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_GardenClientConnection_To_config_GardenClientConnection(a.(*GardenClientConnection), b.(*config.GardenClientConnection), scope) }); err != nil { @@ -213,13 +183,13 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*GardenLoki)(nil), (*config.GardenLoki)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_GardenLoki_To_config_GardenLoki(a.(*GardenLoki), b.(*config.GardenLoki), scope) + if err := s.AddGeneratedConversionFunc((*GardenVali)(nil), (*config.GardenVali)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_GardenVali_To_config_GardenVali(a.(*GardenVali), b.(*config.GardenVali), scope) }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*config.GardenLoki)(nil), (*GardenLoki)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_GardenLoki_To_v1alpha1_GardenLoki(a.(*config.GardenLoki), b.(*GardenLoki), scope) + if err := s.AddGeneratedConversionFunc((*config.GardenVali)(nil), (*GardenVali)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_GardenVali_To_v1alpha1_GardenVali(a.(*config.GardenVali), b.(*GardenVali), scope) }); err != nil { return err } @@ -273,16 +243,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*Loki)(nil), (*config.Loki)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_Loki_To_config_Loki(a.(*Loki), b.(*config.Loki), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*config.Loki)(nil), (*Loki)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_Loki_To_v1alpha1_Loki(a.(*config.Loki), b.(*Loki), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ManagedSeedControllerConfiguration)(nil), (*config.ManagedSeedControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ManagedSeedControllerConfiguration_To_config_ManagedSeedControllerConfiguration(a.(*ManagedSeedControllerConfiguration), b.(*config.ManagedSeedControllerConfiguration), scope) }); err != nil { @@ -313,6 +273,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*NodeToleration)(nil), (*config.NodeToleration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_NodeToleration_To_config_NodeToleration(a.(*NodeToleration), b.(*config.NodeToleration), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.NodeToleration)(nil), (*NodeToleration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_NodeToleration_To_v1alpha1_NodeToleration(a.(*config.NodeToleration), b.(*NodeToleration), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*RemoteWriteMonitoringConfig)(nil), (*config.RemoteWriteMonitoringConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_RemoteWriteMonitoringConfig_To_config_RemoteWriteMonitoringConfig(a.(*RemoteWriteMonitoringConfig), b.(*config.RemoteWriteMonitoringConfig), scope) }); err != nil { @@ -453,16 +423,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootMigrationControllerConfiguration)(nil), (*config.ShootMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(a.(*ShootMigrationControllerConfiguration), b.(*config.ShootMigrationControllerConfiguration), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*config.ShootMigrationControllerConfiguration)(nil), (*ShootMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(a.(*config.ShootMigrationControllerConfiguration), b.(*ShootMigrationControllerConfiguration), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootMonitoringConfig)(nil), (*config.ShootMonitoringConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootMonitoringConfig_To_config_ShootMonitoringConfig(a.(*ShootMonitoringConfig), b.(*config.ShootMonitoringConfig), scope) }); err != nil { @@ -513,6 +473,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*Vali)(nil), (*config.Vali)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_Vali_To_config_Vali(a.(*Vali), b.(*config.Vali), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.Vali)(nil), (*Vali)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_Vali_To_v1alpha1_Vali(a.(*config.Vali), b.(*Vali), scope) + }); err != nil { + return err + } if err := s.AddConversionFunc((*core.SeedTemplate)(nil), (*v1beta1.SeedTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_core_SeedTemplate_To_v1beta1_SeedTemplate(a.(*core.SeedTemplate), b.(*v1beta1.SeedTemplate), scope) }); err != nil { @@ -596,32 +566,6 @@ func Convert_config_BackupEntryControllerConfiguration_To_v1alpha1_BackupEntryCo return autoConvert_config_BackupEntryControllerConfiguration_To_v1alpha1_BackupEntryControllerConfiguration(in, out, s) } -func autoConvert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(in *BackupEntryMigrationControllerConfiguration, out *config.BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(in *BackupEntryMigrationControllerConfiguration, out *config.BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(in, out, s) -} - -func autoConvert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(in *config.BackupEntryMigrationControllerConfiguration, out *BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(in *config.BackupEntryMigrationControllerConfiguration, out *BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(in, out, s) -} - func autoConvert_v1alpha1_BastionControllerConfiguration_To_config_BastionControllerConfiguration(in *BastionControllerConfiguration, out *config.BastionControllerConfiguration, s conversion.Scope) error { out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) return nil @@ -842,52 +786,6 @@ func Convert_config_ExposureClassHandler_To_v1alpha1_ExposureClassHandler(in *co return autoConvert_config_ExposureClassHandler_To_v1alpha1_ExposureClassHandler(in, out, s) } -func autoConvert_v1alpha1_FluentBit_To_config_FluentBit(in *FluentBit, out *config.FluentBit, s conversion.Scope) error { - out.ServiceSection = (*string)(unsafe.Pointer(in.ServiceSection)) - out.InputSection = (*string)(unsafe.Pointer(in.InputSection)) - out.OutputSection = (*string)(unsafe.Pointer(in.OutputSection)) - out.NetworkPolicy = (*config.FluentBitNetworkPolicy)(unsafe.Pointer(in.NetworkPolicy)) - return nil -} - -// Convert_v1alpha1_FluentBit_To_config_FluentBit is an autogenerated conversion function. -func Convert_v1alpha1_FluentBit_To_config_FluentBit(in *FluentBit, out *config.FluentBit, s conversion.Scope) error { - return autoConvert_v1alpha1_FluentBit_To_config_FluentBit(in, out, s) -} - -func autoConvert_config_FluentBit_To_v1alpha1_FluentBit(in *config.FluentBit, out *FluentBit, s conversion.Scope) error { - out.ServiceSection = (*string)(unsafe.Pointer(in.ServiceSection)) - out.InputSection = (*string)(unsafe.Pointer(in.InputSection)) - out.OutputSection = (*string)(unsafe.Pointer(in.OutputSection)) - out.NetworkPolicy = (*FluentBitNetworkPolicy)(unsafe.Pointer(in.NetworkPolicy)) - return nil -} - -// Convert_config_FluentBit_To_v1alpha1_FluentBit is an autogenerated conversion function. -func Convert_config_FluentBit_To_v1alpha1_FluentBit(in *config.FluentBit, out *FluentBit, s conversion.Scope) error { - return autoConvert_config_FluentBit_To_v1alpha1_FluentBit(in, out, s) -} - -func autoConvert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(in *FluentBitNetworkPolicy, out *config.FluentBitNetworkPolicy, s conversion.Scope) error { - out.AdditionalEgressIPBlocks = *(*[]string)(unsafe.Pointer(&in.AdditionalEgressIPBlocks)) - return nil -} - -// Convert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy is an autogenerated conversion function. -func Convert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(in *FluentBitNetworkPolicy, out *config.FluentBitNetworkPolicy, s conversion.Scope) error { - return autoConvert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(in, out, s) -} - -func autoConvert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(in *config.FluentBitNetworkPolicy, out *FluentBitNetworkPolicy, s conversion.Scope) error { - out.AdditionalEgressIPBlocks = *(*[]string)(unsafe.Pointer(&in.AdditionalEgressIPBlocks)) - return nil -} - -// Convert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy is an autogenerated conversion function. -func Convert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(in *config.FluentBitNetworkPolicy, out *FluentBitNetworkPolicy, s conversion.Scope) error { - return autoConvert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(in, out, s) -} - func autoConvert_v1alpha1_GardenClientConnection_To_config_GardenClientConnection(in *GardenClientConnection, out *config.GardenClientConnection, s conversion.Scope) error { if err := configv1alpha1.Convert_v1alpha1_ClientConnectionConfiguration_To_config_ClientConnectionConfiguration(&in.ClientConnectionConfiguration, &out.ClientConnectionConfiguration, s); err != nil { return err @@ -922,24 +820,24 @@ func Convert_config_GardenClientConnection_To_v1alpha1_GardenClientConnection(in return autoConvert_config_GardenClientConnection_To_v1alpha1_GardenClientConnection(in, out, s) } -func autoConvert_v1alpha1_GardenLoki_To_config_GardenLoki(in *GardenLoki, out *config.GardenLoki, s conversion.Scope) error { +func autoConvert_v1alpha1_GardenVali_To_config_GardenVali(in *GardenVali, out *config.GardenVali, s conversion.Scope) error { out.Storage = (*resource.Quantity)(unsafe.Pointer(in.Storage)) return nil } -// Convert_v1alpha1_GardenLoki_To_config_GardenLoki is an autogenerated conversion function. -func Convert_v1alpha1_GardenLoki_To_config_GardenLoki(in *GardenLoki, out *config.GardenLoki, s conversion.Scope) error { - return autoConvert_v1alpha1_GardenLoki_To_config_GardenLoki(in, out, s) +// Convert_v1alpha1_GardenVali_To_config_GardenVali is an autogenerated conversion function. +func Convert_v1alpha1_GardenVali_To_config_GardenVali(in *GardenVali, out *config.GardenVali, s conversion.Scope) error { + return autoConvert_v1alpha1_GardenVali_To_config_GardenVali(in, out, s) } -func autoConvert_config_GardenLoki_To_v1alpha1_GardenLoki(in *config.GardenLoki, out *GardenLoki, s conversion.Scope) error { +func autoConvert_config_GardenVali_To_v1alpha1_GardenVali(in *config.GardenVali, out *GardenVali, s conversion.Scope) error { out.Storage = (*resource.Quantity)(unsafe.Pointer(in.Storage)) return nil } -// Convert_config_GardenLoki_To_v1alpha1_GardenLoki is an autogenerated conversion function. -func Convert_config_GardenLoki_To_v1alpha1_GardenLoki(in *config.GardenLoki, out *GardenLoki, s conversion.Scope) error { - return autoConvert_config_GardenLoki_To_v1alpha1_GardenLoki(in, out, s) +// Convert_config_GardenVali_To_v1alpha1_GardenVali is an autogenerated conversion function. +func Convert_config_GardenVali_To_v1alpha1_GardenVali(in *config.GardenVali, out *GardenVali, s conversion.Scope) error { + return autoConvert_config_GardenVali_To_v1alpha1_GardenVali(in, out, s) } func autoConvert_v1alpha1_GardenletConfiguration_To_config_GardenletConfiguration(in *GardenletConfiguration, out *config.GardenletConfiguration, s conversion.Scope) error { @@ -1010,6 +908,7 @@ func autoConvert_v1alpha1_GardenletConfiguration_To_config_GardenletConfiguratio out.ETCDConfig = (*config.ETCDConfig)(unsafe.Pointer(in.ETCDConfig)) out.ExposureClassHandlers = *(*[]config.ExposureClassHandler)(unsafe.Pointer(&in.ExposureClassHandlers)) out.Monitoring = (*config.MonitoringConfig)(unsafe.Pointer(in.Monitoring)) + out.NodeToleration = (*config.NodeToleration)(unsafe.Pointer(in.NodeToleration)) return nil } @@ -1086,6 +985,7 @@ func autoConvert_config_GardenletConfiguration_To_v1alpha1_GardenletConfiguratio out.ETCDConfig = (*ETCDConfig)(unsafe.Pointer(in.ETCDConfig)) out.ExposureClassHandlers = *(*[]ExposureClassHandler)(unsafe.Pointer(&in.ExposureClassHandlers)) out.Monitoring = (*MonitoringConfig)(unsafe.Pointer(in.Monitoring)) + out.NodeToleration = (*NodeToleration)(unsafe.Pointer(in.NodeToleration)) return nil } @@ -1097,7 +997,6 @@ func Convert_config_GardenletConfiguration_To_v1alpha1_GardenletConfiguration(in func autoConvert_v1alpha1_GardenletControllerConfiguration_To_config_GardenletControllerConfiguration(in *GardenletControllerConfiguration, out *config.GardenletControllerConfiguration, s conversion.Scope) error { out.BackupBucket = (*config.BackupBucketControllerConfiguration)(unsafe.Pointer(in.BackupBucket)) out.BackupEntry = (*config.BackupEntryControllerConfiguration)(unsafe.Pointer(in.BackupEntry)) - out.BackupEntryMigration = (*config.BackupEntryMigrationControllerConfiguration)(unsafe.Pointer(in.BackupEntryMigration)) out.Bastion = (*config.BastionControllerConfiguration)(unsafe.Pointer(in.Bastion)) out.ControllerInstallation = (*config.ControllerInstallationControllerConfiguration)(unsafe.Pointer(in.ControllerInstallation)) out.ControllerInstallationCare = (*config.ControllerInstallationCareControllerConfiguration)(unsafe.Pointer(in.ControllerInstallationCare)) @@ -1106,7 +1005,6 @@ func autoConvert_v1alpha1_GardenletControllerConfiguration_To_config_GardenletCo out.SeedCare = (*config.SeedCareControllerConfiguration)(unsafe.Pointer(in.SeedCare)) out.Shoot = (*config.ShootControllerConfiguration)(unsafe.Pointer(in.Shoot)) out.ShootCare = (*config.ShootCareControllerConfiguration)(unsafe.Pointer(in.ShootCare)) - out.ShootMigration = (*config.ShootMigrationControllerConfiguration)(unsafe.Pointer(in.ShootMigration)) out.ShootStateSync = (*config.ShootStateSyncControllerConfiguration)(unsafe.Pointer(in.ShootStateSync)) out.NetworkPolicy = (*config.NetworkPolicyControllerConfiguration)(unsafe.Pointer(in.NetworkPolicy)) out.ManagedSeed = (*config.ManagedSeedControllerConfiguration)(unsafe.Pointer(in.ManagedSeed)) @@ -1122,7 +1020,6 @@ func Convert_v1alpha1_GardenletControllerConfiguration_To_config_GardenletContro func autoConvert_config_GardenletControllerConfiguration_To_v1alpha1_GardenletControllerConfiguration(in *config.GardenletControllerConfiguration, out *GardenletControllerConfiguration, s conversion.Scope) error { out.BackupBucket = (*BackupBucketControllerConfiguration)(unsafe.Pointer(in.BackupBucket)) out.BackupEntry = (*BackupEntryControllerConfiguration)(unsafe.Pointer(in.BackupEntry)) - out.BackupEntryMigration = (*BackupEntryMigrationControllerConfiguration)(unsafe.Pointer(in.BackupEntryMigration)) out.Bastion = (*BastionControllerConfiguration)(unsafe.Pointer(in.Bastion)) out.ControllerInstallation = (*ControllerInstallationControllerConfiguration)(unsafe.Pointer(in.ControllerInstallation)) out.ControllerInstallationCare = (*ControllerInstallationCareControllerConfiguration)(unsafe.Pointer(in.ControllerInstallationCare)) @@ -1131,7 +1028,6 @@ func autoConvert_config_GardenletControllerConfiguration_To_v1alpha1_GardenletCo out.SeedCare = (*SeedCareControllerConfiguration)(unsafe.Pointer(in.SeedCare)) out.Shoot = (*ShootControllerConfiguration)(unsafe.Pointer(in.Shoot)) out.ShootCare = (*ShootCareControllerConfiguration)(unsafe.Pointer(in.ShootCare)) - out.ShootMigration = (*ShootMigrationControllerConfiguration)(unsafe.Pointer(in.ShootMigration)) out.ShootStateSync = (*ShootStateSyncControllerConfiguration)(unsafe.Pointer(in.ShootStateSync)) out.NetworkPolicy = (*NetworkPolicyControllerConfiguration)(unsafe.Pointer(in.NetworkPolicy)) out.ManagedSeed = (*ManagedSeedControllerConfiguration)(unsafe.Pointer(in.ManagedSeed)) @@ -1190,8 +1086,7 @@ func Convert_config_LoadBalancerServiceConfig_To_v1alpha1_LoadBalancerServiceCon func autoConvert_v1alpha1_Logging_To_config_Logging(in *Logging, out *config.Logging, s conversion.Scope) error { out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) - out.FluentBit = (*config.FluentBit)(unsafe.Pointer(in.FluentBit)) - out.Loki = (*config.Loki)(unsafe.Pointer(in.Loki)) + out.Vali = (*config.Vali)(unsafe.Pointer(in.Vali)) out.ShootNodeLogging = (*config.ShootNodeLogging)(unsafe.Pointer(in.ShootNodeLogging)) out.ShootEventLogging = (*config.ShootEventLogging)(unsafe.Pointer(in.ShootEventLogging)) return nil @@ -1204,8 +1099,7 @@ func Convert_v1alpha1_Logging_To_config_Logging(in *Logging, out *config.Logging func autoConvert_config_Logging_To_v1alpha1_Logging(in *config.Logging, out *Logging, s conversion.Scope) error { out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) - out.FluentBit = (*FluentBit)(unsafe.Pointer(in.FluentBit)) - out.Loki = (*Loki)(unsafe.Pointer(in.Loki)) + out.Vali = (*Vali)(unsafe.Pointer(in.Vali)) out.ShootNodeLogging = (*ShootNodeLogging)(unsafe.Pointer(in.ShootNodeLogging)) out.ShootEventLogging = (*ShootEventLogging)(unsafe.Pointer(in.ShootEventLogging)) return nil @@ -1216,28 +1110,6 @@ func Convert_config_Logging_To_v1alpha1_Logging(in *config.Logging, out *Logging return autoConvert_config_Logging_To_v1alpha1_Logging(in, out, s) } -func autoConvert_v1alpha1_Loki_To_config_Loki(in *Loki, out *config.Loki, s conversion.Scope) error { - out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) - out.Garden = (*config.GardenLoki)(unsafe.Pointer(in.Garden)) - return nil -} - -// Convert_v1alpha1_Loki_To_config_Loki is an autogenerated conversion function. -func Convert_v1alpha1_Loki_To_config_Loki(in *Loki, out *config.Loki, s conversion.Scope) error { - return autoConvert_v1alpha1_Loki_To_config_Loki(in, out, s) -} - -func autoConvert_config_Loki_To_v1alpha1_Loki(in *config.Loki, out *Loki, s conversion.Scope) error { - out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) - out.Garden = (*GardenLoki)(unsafe.Pointer(in.Garden)) - return nil -} - -// Convert_config_Loki_To_v1alpha1_Loki is an autogenerated conversion function. -func Convert_config_Loki_To_v1alpha1_Loki(in *config.Loki, out *Loki, s conversion.Scope) error { - return autoConvert_config_Loki_To_v1alpha1_Loki(in, out, s) -} - func autoConvert_v1alpha1_ManagedSeedControllerConfiguration_To_config_ManagedSeedControllerConfiguration(in *ManagedSeedControllerConfiguration, out *config.ManagedSeedControllerConfiguration, s conversion.Scope) error { out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) @@ -1288,6 +1160,7 @@ func Convert_config_MonitoringConfig_To_v1alpha1_MonitoringConfig(in *config.Mon func autoConvert_v1alpha1_NetworkPolicyControllerConfiguration_To_config_NetworkPolicyControllerConfiguration(in *NetworkPolicyControllerConfiguration, out *config.NetworkPolicyControllerConfiguration, s conversion.Scope) error { out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) + out.AdditionalNamespaceSelectors = *(*[]v1.LabelSelector)(unsafe.Pointer(&in.AdditionalNamespaceSelectors)) return nil } @@ -1298,6 +1171,7 @@ func Convert_v1alpha1_NetworkPolicyControllerConfiguration_To_config_NetworkPoli func autoConvert_config_NetworkPolicyControllerConfiguration_To_v1alpha1_NetworkPolicyControllerConfiguration(in *config.NetworkPolicyControllerConfiguration, out *NetworkPolicyControllerConfiguration, s conversion.Scope) error { out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) + out.AdditionalNamespaceSelectors = *(*[]v1.LabelSelector)(unsafe.Pointer(&in.AdditionalNamespaceSelectors)) return nil } @@ -1306,6 +1180,28 @@ func Convert_config_NetworkPolicyControllerConfiguration_To_v1alpha1_NetworkPoli return autoConvert_config_NetworkPolicyControllerConfiguration_To_v1alpha1_NetworkPolicyControllerConfiguration(in, out, s) } +func autoConvert_v1alpha1_NodeToleration_To_config_NodeToleration(in *NodeToleration, out *config.NodeToleration, s conversion.Scope) error { + out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) + out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) + return nil +} + +// Convert_v1alpha1_NodeToleration_To_config_NodeToleration is an autogenerated conversion function. +func Convert_v1alpha1_NodeToleration_To_config_NodeToleration(in *NodeToleration, out *config.NodeToleration, s conversion.Scope) error { + return autoConvert_v1alpha1_NodeToleration_To_config_NodeToleration(in, out, s) +} + +func autoConvert_config_NodeToleration_To_v1alpha1_NodeToleration(in *config.NodeToleration, out *NodeToleration, s conversion.Scope) error { + out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) + out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) + return nil +} + +// Convert_config_NodeToleration_To_v1alpha1_NodeToleration is an autogenerated conversion function. +func Convert_config_NodeToleration_To_v1alpha1_NodeToleration(in *config.NodeToleration, out *NodeToleration, s conversion.Scope) error { + return autoConvert_config_NodeToleration_To_v1alpha1_NodeToleration(in, out, s) +} + func autoConvert_v1alpha1_RemoteWriteMonitoringConfig_To_config_RemoteWriteMonitoringConfig(in *RemoteWriteMonitoringConfig, out *config.RemoteWriteMonitoringConfig, s conversion.Scope) error { out.URL = in.URL out.Keep = *(*[]string)(unsafe.Pointer(&in.Keep)) @@ -1642,32 +1538,6 @@ func Convert_config_ShootEventLogging_To_v1alpha1_ShootEventLogging(in *config.S return autoConvert_config_ShootEventLogging_To_v1alpha1_ShootEventLogging(in, out, s) } -func autoConvert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(in *ShootMigrationControllerConfiguration, out *config.ShootMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(in *ShootMigrationControllerConfiguration, out *config.ShootMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(in, out, s) -} - -func autoConvert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(in *config.ShootMigrationControllerConfiguration, out *ShootMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(in *config.ShootMigrationControllerConfiguration, out *ShootMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(in, out, s) -} - func autoConvert_v1alpha1_ShootMonitoringConfig_To_config_ShootMonitoringConfig(in *ShootMonitoringConfig, out *config.ShootMonitoringConfig, s conversion.Scope) error { out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) out.RemoteWrite = (*config.RemoteWriteMonitoringConfig)(unsafe.Pointer(in.RemoteWrite)) @@ -1773,3 +1643,25 @@ func autoConvert_config_StaleExtensionHealthChecks_To_v1alpha1_StaleExtensionHea func Convert_config_StaleExtensionHealthChecks_To_v1alpha1_StaleExtensionHealthChecks(in *config.StaleExtensionHealthChecks, out *StaleExtensionHealthChecks, s conversion.Scope) error { return autoConvert_config_StaleExtensionHealthChecks_To_v1alpha1_StaleExtensionHealthChecks(in, out, s) } + +func autoConvert_v1alpha1_Vali_To_config_Vali(in *Vali, out *config.Vali, s conversion.Scope) error { + out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) + out.Garden = (*config.GardenVali)(unsafe.Pointer(in.Garden)) + return nil +} + +// Convert_v1alpha1_Vali_To_config_Vali is an autogenerated conversion function. +func Convert_v1alpha1_Vali_To_config_Vali(in *Vali, out *config.Vali, s conversion.Scope) error { + return autoConvert_v1alpha1_Vali_To_config_Vali(in, out, s) +} + +func autoConvert_config_Vali_To_v1alpha1_Vali(in *config.Vali, out *Vali, s conversion.Scope) error { + out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) + out.Garden = (*GardenVali)(unsafe.Pointer(in.Garden)) + return nil +} + +// Convert_config_Vali_To_v1alpha1_Vali is an autogenerated conversion function. +func Convert_config_Vali_To_v1alpha1_Vali(in *config.Vali, out *Vali, s conversion.Scope) error { + return autoConvert_config_Vali_To_v1alpha1_Vali(in, out, s) +} diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go index 483274793..3691197c5 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -117,42 +117,6 @@ func (in *BackupEntryControllerConfiguration) DeepCopy() *BackupEntryControllerC return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopyInto(out *BackupEntryMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupEntryMigrationControllerConfiguration. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopy() *BackupEntryMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(BackupEntryMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BastionControllerConfiguration) DeepCopyInto(out *BastionControllerConfiguration) { *out = *in @@ -385,63 +349,6 @@ func (in *ExposureClassHandler) DeepCopy() *ExposureClassHandler { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *FluentBit) DeepCopyInto(out *FluentBit) { - *out = *in - if in.ServiceSection != nil { - in, out := &in.ServiceSection, &out.ServiceSection - *out = new(string) - **out = **in - } - if in.InputSection != nil { - in, out := &in.InputSection, &out.InputSection - *out = new(string) - **out = **in - } - if in.OutputSection != nil { - in, out := &in.OutputSection, &out.OutputSection - *out = new(string) - **out = **in - } - if in.NetworkPolicy != nil { - in, out := &in.NetworkPolicy, &out.NetworkPolicy - *out = new(FluentBitNetworkPolicy) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBit. -func (in *FluentBit) DeepCopy() *FluentBit { - if in == nil { - return nil - } - out := new(FluentBit) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *FluentBitNetworkPolicy) DeepCopyInto(out *FluentBitNetworkPolicy) { - *out = *in - if in.AdditionalEgressIPBlocks != nil { - in, out := &in.AdditionalEgressIPBlocks, &out.AdditionalEgressIPBlocks - *out = make([]string, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitNetworkPolicy. -func (in *FluentBitNetworkPolicy) DeepCopy() *FluentBitNetworkPolicy { - if in == nil { - return nil - } - out := new(FluentBitNetworkPolicy) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GardenClientConnection) DeepCopyInto(out *GardenClientConnection) { *out = *in @@ -485,7 +392,7 @@ func (in *GardenClientConnection) DeepCopy() *GardenClientConnection { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GardenLoki) DeepCopyInto(out *GardenLoki) { +func (in *GardenVali) DeepCopyInto(out *GardenVali) { *out = *in if in.Storage != nil { in, out := &in.Storage, &out.Storage @@ -495,12 +402,12 @@ func (in *GardenLoki) DeepCopyInto(out *GardenLoki) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GardenLoki. -func (in *GardenLoki) DeepCopy() *GardenLoki { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GardenVali. +func (in *GardenVali) DeepCopy() *GardenVali { if in == nil { return nil } - out := new(GardenLoki) + out := new(GardenVali) in.DeepCopyInto(out) return out } @@ -584,6 +491,11 @@ func (in *GardenletConfiguration) DeepCopyInto(out *GardenletConfiguration) { *out = new(MonitoringConfig) (*in).DeepCopyInto(*out) } + if in.NodeToleration != nil { + in, out := &in.NodeToleration, &out.NodeToleration + *out = new(NodeToleration) + (*in).DeepCopyInto(*out) + } return } @@ -618,11 +530,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(BackupEntryControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.BackupEntryMigration != nil { - in, out := &in.BackupEntryMigration, &out.BackupEntryMigration - *out = new(BackupEntryMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.Bastion != nil { in, out := &in.Bastion, &out.Bastion *out = new(BastionControllerConfiguration) @@ -663,11 +570,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(ShootCareControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.ShootMigration != nil { - in, out := &in.ShootMigration, &out.ShootMigration - *out = new(ShootMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.ShootStateSync != nil { in, out := &in.ShootStateSync, &out.ShootStateSync *out = new(ShootStateSyncControllerConfiguration) @@ -763,14 +665,9 @@ func (in *Logging) DeepCopyInto(out *Logging) { *out = new(bool) **out = **in } - if in.FluentBit != nil { - in, out := &in.FluentBit, &out.FluentBit - *out = new(FluentBit) - (*in).DeepCopyInto(*out) - } - if in.Loki != nil { - in, out := &in.Loki, &out.Loki - *out = new(Loki) + if in.Vali != nil { + in, out := &in.Vali, &out.Vali + *out = new(Vali) (*in).DeepCopyInto(*out) } if in.ShootNodeLogging != nil { @@ -796,32 +693,6 @@ func (in *Logging) DeepCopy() *Logging { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Loki) DeepCopyInto(out *Loki) { - *out = *in - if in.Enabled != nil { - in, out := &in.Enabled, &out.Enabled - *out = new(bool) - **out = **in - } - if in.Garden != nil { - in, out := &in.Garden, &out.Garden - *out = new(GardenLoki) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Loki. -func (in *Loki) DeepCopy() *Loki { - if in == nil { - return nil - } - out := new(Loki) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ManagedSeedControllerConfiguration) DeepCopyInto(out *ManagedSeedControllerConfiguration) { *out = *in @@ -892,6 +763,13 @@ func (in *NetworkPolicyControllerConfiguration) DeepCopyInto(out *NetworkPolicyC *out = new(int) **out = **in } + if in.AdditionalNamespaceSelectors != nil { + in, out := &in.AdditionalNamespaceSelectors, &out.AdditionalNamespaceSelectors + *out = make([]v1.LabelSelector, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } return } @@ -905,6 +783,32 @@ func (in *NetworkPolicyControllerConfiguration) DeepCopy() *NetworkPolicyControl return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeToleration) DeepCopyInto(out *NodeToleration) { + *out = *in + if in.DefaultNotReadyTolerationSeconds != nil { + in, out := &in.DefaultNotReadyTolerationSeconds, &out.DefaultNotReadyTolerationSeconds + *out = new(int64) + **out = **in + } + if in.DefaultUnreachableTolerationSeconds != nil { + in, out := &in.DefaultUnreachableTolerationSeconds, &out.DefaultUnreachableTolerationSeconds + *out = new(int64) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeToleration. +func (in *NodeToleration) DeepCopy() *NodeToleration { + if in == nil { + return nil + } + out := new(NodeToleration) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RemoteWriteMonitoringConfig) DeepCopyInto(out *RemoteWriteMonitoringConfig) { *out = *in @@ -1288,42 +1192,6 @@ func (in *ShootEventLogging) DeepCopy() *ShootEventLogging { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootMigrationControllerConfiguration) DeepCopyInto(out *ShootMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootMigrationControllerConfiguration. -func (in *ShootMigrationControllerConfiguration) DeepCopy() *ShootMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(ShootMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootMonitoringConfig) DeepCopyInto(out *ShootMonitoringConfig) { *out = *in @@ -1440,3 +1308,29 @@ func (in *StaleExtensionHealthChecks) DeepCopy() *StaleExtensionHealthChecks { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Vali) DeepCopyInto(out *Vali) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Garden != nil { + in, out := &in.Garden, &out.Garden + *out = new(GardenVali) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Vali. +func (in *Vali) DeepCopy() *Vali { + if in == nil { + return nil + } + out := new(Vali) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go index 1c1399df6..a100c42b3 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -56,9 +56,6 @@ func SetObjectDefaults_GardenletConfiguration(in *GardenletConfiguration) { if in.Controllers.BackupEntry != nil { SetDefaults_BackupEntryControllerConfiguration(in.Controllers.BackupEntry) } - if in.Controllers.BackupEntryMigration != nil { - SetDefaults_BackupEntryMigrationControllerConfiguration(in.Controllers.BackupEntryMigration) - } if in.Controllers.Bastion != nil { SetDefaults_BastionControllerConfiguration(in.Controllers.Bastion) } @@ -86,9 +83,6 @@ func SetObjectDefaults_GardenletConfiguration(in *GardenletConfiguration) { SetDefaults_StaleExtensionHealthChecks(in.Controllers.ShootCare.StaleExtensionHealthChecks) } } - if in.Controllers.ShootMigration != nil { - SetDefaults_ShootMigrationControllerConfiguration(in.Controllers.ShootMigration) - } if in.Controllers.ShootStateSync != nil { SetDefaults_ShootStateSyncControllerConfiguration(in.Controllers.ShootStateSync) } diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go index 69224daf2..f07d79327 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -117,42 +117,6 @@ func (in *BackupEntryControllerConfiguration) DeepCopy() *BackupEntryControllerC return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopyInto(out *BackupEntryMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupEntryMigrationControllerConfiguration. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopy() *BackupEntryMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(BackupEntryMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BastionControllerConfiguration) DeepCopyInto(out *BastionControllerConfiguration) { *out = *in @@ -385,63 +349,6 @@ func (in *ExposureClassHandler) DeepCopy() *ExposureClassHandler { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *FluentBit) DeepCopyInto(out *FluentBit) { - *out = *in - if in.ServiceSection != nil { - in, out := &in.ServiceSection, &out.ServiceSection - *out = new(string) - **out = **in - } - if in.InputSection != nil { - in, out := &in.InputSection, &out.InputSection - *out = new(string) - **out = **in - } - if in.OutputSection != nil { - in, out := &in.OutputSection, &out.OutputSection - *out = new(string) - **out = **in - } - if in.NetworkPolicy != nil { - in, out := &in.NetworkPolicy, &out.NetworkPolicy - *out = new(FluentBitNetworkPolicy) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBit. -func (in *FluentBit) DeepCopy() *FluentBit { - if in == nil { - return nil - } - out := new(FluentBit) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *FluentBitNetworkPolicy) DeepCopyInto(out *FluentBitNetworkPolicy) { - *out = *in - if in.AdditionalEgressIPBlocks != nil { - in, out := &in.AdditionalEgressIPBlocks, &out.AdditionalEgressIPBlocks - *out = make([]string, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitNetworkPolicy. -func (in *FluentBitNetworkPolicy) DeepCopy() *FluentBitNetworkPolicy { - if in == nil { - return nil - } - out := new(FluentBitNetworkPolicy) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GardenClientConnection) DeepCopyInto(out *GardenClientConnection) { *out = *in @@ -485,7 +392,7 @@ func (in *GardenClientConnection) DeepCopy() *GardenClientConnection { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GardenLoki) DeepCopyInto(out *GardenLoki) { +func (in *GardenVali) DeepCopyInto(out *GardenVali) { *out = *in if in.Storage != nil { in, out := &in.Storage, &out.Storage @@ -495,12 +402,12 @@ func (in *GardenLoki) DeepCopyInto(out *GardenLoki) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GardenLoki. -func (in *GardenLoki) DeepCopy() *GardenLoki { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GardenVali. +func (in *GardenVali) DeepCopy() *GardenVali { if in == nil { return nil } - out := new(GardenLoki) + out := new(GardenVali) in.DeepCopyInto(out) return out } @@ -584,6 +491,11 @@ func (in *GardenletConfiguration) DeepCopyInto(out *GardenletConfiguration) { *out = new(MonitoringConfig) (*in).DeepCopyInto(*out) } + if in.NodeToleration != nil { + in, out := &in.NodeToleration, &out.NodeToleration + *out = new(NodeToleration) + (*in).DeepCopyInto(*out) + } return } @@ -618,11 +530,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(BackupEntryControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.BackupEntryMigration != nil { - in, out := &in.BackupEntryMigration, &out.BackupEntryMigration - *out = new(BackupEntryMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.Bastion != nil { in, out := &in.Bastion, &out.Bastion *out = new(BastionControllerConfiguration) @@ -663,11 +570,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(ShootCareControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.ShootMigration != nil { - in, out := &in.ShootMigration, &out.ShootMigration - *out = new(ShootMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.ShootStateSync != nil { in, out := &in.ShootStateSync, &out.ShootStateSync *out = new(ShootStateSyncControllerConfiguration) @@ -763,14 +665,9 @@ func (in *Logging) DeepCopyInto(out *Logging) { *out = new(bool) **out = **in } - if in.FluentBit != nil { - in, out := &in.FluentBit, &out.FluentBit - *out = new(FluentBit) - (*in).DeepCopyInto(*out) - } - if in.Loki != nil { - in, out := &in.Loki, &out.Loki - *out = new(Loki) + if in.Vali != nil { + in, out := &in.Vali, &out.Vali + *out = new(Vali) (*in).DeepCopyInto(*out) } if in.ShootNodeLogging != nil { @@ -796,32 +693,6 @@ func (in *Logging) DeepCopy() *Logging { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Loki) DeepCopyInto(out *Loki) { - *out = *in - if in.Enabled != nil { - in, out := &in.Enabled, &out.Enabled - *out = new(bool) - **out = **in - } - if in.Garden != nil { - in, out := &in.Garden, &out.Garden - *out = new(GardenLoki) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Loki. -func (in *Loki) DeepCopy() *Loki { - if in == nil { - return nil - } - out := new(Loki) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ManagedSeedControllerConfiguration) DeepCopyInto(out *ManagedSeedControllerConfiguration) { *out = *in @@ -892,6 +763,13 @@ func (in *NetworkPolicyControllerConfiguration) DeepCopyInto(out *NetworkPolicyC *out = new(int) **out = **in } + if in.AdditionalNamespaceSelectors != nil { + in, out := &in.AdditionalNamespaceSelectors, &out.AdditionalNamespaceSelectors + *out = make([]v1.LabelSelector, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } return } @@ -905,6 +783,32 @@ func (in *NetworkPolicyControllerConfiguration) DeepCopy() *NetworkPolicyControl return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeToleration) DeepCopyInto(out *NodeToleration) { + *out = *in + if in.DefaultNotReadyTolerationSeconds != nil { + in, out := &in.DefaultNotReadyTolerationSeconds, &out.DefaultNotReadyTolerationSeconds + *out = new(int64) + **out = **in + } + if in.DefaultUnreachableTolerationSeconds != nil { + in, out := &in.DefaultUnreachableTolerationSeconds, &out.DefaultUnreachableTolerationSeconds + *out = new(int64) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeToleration. +func (in *NodeToleration) DeepCopy() *NodeToleration { + if in == nil { + return nil + } + out := new(NodeToleration) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RemoteWriteMonitoringConfig) DeepCopyInto(out *RemoteWriteMonitoringConfig) { *out = *in @@ -1288,42 +1192,6 @@ func (in *ShootEventLogging) DeepCopy() *ShootEventLogging { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootMigrationControllerConfiguration) DeepCopyInto(out *ShootMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootMigrationControllerConfiguration. -func (in *ShootMigrationControllerConfiguration) DeepCopy() *ShootMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(ShootMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootMonitoringConfig) DeepCopyInto(out *ShootMonitoringConfig) { *out = *in @@ -1440,3 +1308,29 @@ func (in *StaleExtensionHealthChecks) DeepCopy() *StaleExtensionHealthChecks { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Vali) DeepCopyInto(out *Vali) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Garden != nil { + in, out := &in.Garden, &out.Garden + *out = new(GardenVali) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Vali. +func (in *Vali) DeepCopy() *Vali { + if in == nil { + return nil + } + out := new(Vali) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/gardener/gardener/pkg/logger/types.go b/vendor/github.com/gardener/gardener/pkg/logger/types.go index b265e231f..84218458b 100644 --- a/vendor/github.com/gardener/gardener/pkg/logger/types.go +++ b/vendor/github.com/gardener/gardener/pkg/logger/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/logger/zap.go b/vendor/github.com/gardener/gardener/pkg/logger/zap.go index fccdbd256..a9d70e44e 100644 --- a/vendor/github.com/gardener/gardener/pkg/logger/zap.go +++ b/vendor/github.com/gardener/gardener/pkg/logger/zap.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go b/vendor/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go index 9820de32b..836feb2f3 100644 --- a/vendor/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go +++ b/vendor/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/chart/chart.go b/vendor/github.com/gardener/gardener/pkg/utils/chart/chart.go index cde5b88e4..ca5ab60ce 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/chart/chart.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/chart/chart.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/checksums.go b/vendor/github.com/gardener/gardener/pkg/utils/checksums.go index e6e69d195..d91a7e394 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/checksums.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/checksums.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/context/context.go b/vendor/github.com/gardener/gardener/pkg/utils/context/context.go index 0d339bdc5..900a8dd91 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/context/context.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/context/context.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/context/types.go b/vendor/github.com/gardener/gardener/pkg/utils/context/types.go index ad7ddf072..7d1b330bf 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/context/types.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/context/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/encoding.go b/vendor/github.com/gardener/gardener/pkg/utils/encoding.go index ca69bc737..36ecfa835 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/encoding.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/encoding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go b/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go index 5ed337c77..a1f54f512 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -159,23 +159,6 @@ func (e *ErrorContext) HasLastErrorWithID(errorID string) bool { return false } -type cancelError struct{} - -func (*cancelError) Error() string { - return "Canceled" -} - -// Cancel returns an error which will cause the HandleErrors function to stop executing tasks without triggering its FailureHandler. -func Cancel() error { - return &cancelError{} -} - -// WasCanceled checks to see if the HandleErrors function was canceled manually. It can be used to check if execution after HandleErrors should be stopped without returning an error -func WasCanceled(err error) bool { - _, ok := err.(*cancelError) - return ok -} - // FailureHandler is a function which is called when an error occurs type FailureHandler func(string, error) error @@ -218,15 +201,12 @@ func ToExecute(errorID string, task func() error) TaskFunc { func HandleErrors(errorContext *ErrorContext, onSuccess SuccessHandler, onFailure FailureHandler, tasks ...TaskFunc) error { for _, task := range tasks { errorID, err := task.Do(errorContext) - if err != nil && !WasCanceled(err) { + if err != nil { return handleFailure(onFailure, errorID, err) } if handlerErr := handleSuccess(errorContext, onSuccess, errorID); handlerErr != nil { return handlerErr } - if WasCanceled(err) { - return err - } } return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go b/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go index 69e94553a..c9d64a61b 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/errors/unwrap.go b/vendor/github.com/gardener/gardener/pkg/utils/errors/unwrap.go index dca9d5103..d79b43d47 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/errors/unwrap.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/errors/unwrap.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/flow.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/flow.go index 0f70edb23..935d3ab90 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/flow.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/flow.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/graph.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/graph.go index 8dc29204a..8d757dce7 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/graph.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/graph.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go index 4acdc8d3b..027f1586c 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go index a4e7249c7..6d4bb0748 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go index d3f293d02..cf6340c02 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go index b841d8593..60288f052 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskid.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskid.go index e786fa82d..d8d3dcc4a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskid.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskid.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go index 4483b5a70..c2c4abeda 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go index 1c0dd6532..088a50f80 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go index ad046f714..5037f54a9 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -58,7 +58,7 @@ func CheckIfDeletionIsConfirmed(obj client.Object) error { func ConfirmDeletion(ctx context.Context, w client.Writer, obj client.Object) error { patch := client.MergeFrom(obj.DeepCopyObject().(client.Object)) kubernetesutils.SetMetaDataAnnotation(obj, ConfirmationDeletion, "true") - kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().String()) + kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().Format(time.RFC3339Nano)) return w.Patch(ctx, obj, patch) } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go index 441df2df0..9868a628c 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go index 98689ac61..92c4df1e4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go new file mode 100644 index 000000000..777e611d0 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go @@ -0,0 +1,234 @@ +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package gardener + +import ( + "context" + "fmt" + "strings" + + "github.com/go-logr/logr" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" + "sigs.k8s.io/controller-runtime/pkg/client" + + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" + "github.com/gardener/gardener/pkg/utils" +) + +// Domain contains information about a domain configured in the garden cluster. +type Domain struct { + Domain string + Provider string + Zone string + SecretData map[string][]byte + IncludeDomains []string + ExcludeDomains []string + IncludeZones []string + ExcludeZones []string +} + +// GetDefaultDomains finds all the default domain secrets within the given map and returns a list of +// objects that contains all relevant information about the default domains. +func GetDefaultDomains(secrets map[string]*corev1.Secret) ([]*Domain, error) { + var defaultDomains []*Domain + + for key, secret := range secrets { + if strings.HasPrefix(key, v1beta1constants.GardenRoleDefaultDomain) { + domain, err := constructDomainFromSecret(secret) + if err != nil { + return nil, fmt.Errorf("error getting information out of default domain secret: %+v", err) + } + defaultDomains = append(defaultDomains, domain) + } + } + + return defaultDomains, nil +} + +// GetInternalDomain finds the internal domain secret within the given map and returns the object +// that contains all relevant information about the internal domain. +func GetInternalDomain(secrets map[string]*corev1.Secret) (*Domain, error) { + internalDomainSecret, ok := secrets[v1beta1constants.GardenRoleInternalDomain] + if !ok { + return nil, nil + } + + return constructDomainFromSecret(internalDomainSecret) +} + +func constructDomainFromSecret(secret *corev1.Secret) (*Domain, error) { + provider, domain, zone, includeZones, excludeZones, err := GetDomainInfoFromAnnotations(secret.Annotations) + if err != nil { + return nil, err + } + + return &Domain{ + Domain: domain, + Provider: provider, + Zone: zone, + SecretData: secret.Data, + IncludeZones: includeZones, + ExcludeZones: excludeZones, + }, nil +} + +// DomainIsDefaultDomain identifies whether the given domain is a default domain. +func DomainIsDefaultDomain(domain string, defaultDomains []*Domain) *Domain { + for _, defaultDomain := range defaultDomains { + if strings.HasSuffix(domain, "."+defaultDomain.Domain) { + return defaultDomain + } + } + return nil +} + +var gardenRoleReq = utils.MustNewRequirement(v1beta1constants.GardenRole, selection.Exists) + +// ReadGardenSecrets reads the Kubernetes Secrets from the Garden cluster which are independent of Shoot clusters. +// The Secret objects are stored on the Controller in order to pass them to created Garden objects later. +func ReadGardenSecrets( + ctx context.Context, + log logr.Logger, + c client.Reader, + namespace string, + enforceInternalDomainSecret bool, +) ( + map[string]*corev1.Secret, + error, +) { + var ( + logInfo []string + secretsMap = make(map[string]*corev1.Secret) + numberOfInternalDomainSecrets = 0 + numberOfOpenVPNDiffieHellmanSecrets = 0 + numberOfAlertingSecrets = 0 + numberOfGlobalMonitoringSecrets = 0 + ) + + secretList := &corev1.SecretList{} + if err := c.List(ctx, secretList, client.InNamespace(namespace), client.MatchingLabelsSelector{Selector: labels.NewSelector().Add(gardenRoleReq)}); err != nil { + return nil, err + } + + for _, secret := range secretList.Items { + // Retrieving default domain secrets based on all secrets in the Garden namespace which have + // a label indicating the Garden role default-domain. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleDefaultDomain { + _, domain, _, _, _, err := GetDomainInfoFromAnnotations(secret.Annotations) + if err != nil { + log.Error(err, "Error getting information out of default domain secret", "secret", client.ObjectKeyFromObject(&secret)) + continue + } + + defaultDomainSecret := secret + secretsMap[fmt.Sprintf("%s-%s", v1beta1constants.GardenRoleDefaultDomain, domain)] = &defaultDomainSecret + logInfo = append(logInfo, fmt.Sprintf("default domain secret %q for domain %q", secret.Name, domain)) + } + + // Retrieving internal domain secrets based on all secrets in the Garden namespace which have + // a label indicating the Garden role internal-domain. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleInternalDomain { + _, domain, _, _, _, err := GetDomainInfoFromAnnotations(secret.Annotations) + if err != nil { + log.Error(err, "Error getting information out of internal domain secret", "secret", client.ObjectKeyFromObject(&secret)) + continue + } + + internalDomainSecret := secret + secretsMap[v1beta1constants.GardenRoleInternalDomain] = &internalDomainSecret + logInfo = append(logInfo, fmt.Sprintf("internal domain secret %q for domain %q", secret.Name, domain)) + numberOfInternalDomainSecrets++ + } + + // Retrieving Diffie-Hellman secret for OpenVPN based on all secrets in the Garden namespace which have + // a label indicating the Garden role openvpn-diffie-hellman. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleOpenVPNDiffieHellman { + openvpnDiffieHellman := secret + key := "dh2048.pem" + if _, ok := secret.Data[key]; !ok { + return nil, fmt.Errorf("cannot use OpenVPN Diffie Hellman secret '%s' as it does not contain key '%s' (whose value should be the actual Diffie Hellman key)", secret.Name, key) + } + secretsMap[v1beta1constants.GardenRoleOpenVPNDiffieHellman] = &openvpnDiffieHellman + logInfo = append(logInfo, fmt.Sprintf("OpenVPN Diffie Hellman secret %q", secret.Name)) + numberOfOpenVPNDiffieHellmanSecrets++ + } + + // Retrieve the alerting secret to configure alerting. Either in cluster email alerting or + // external alertmanager configuration. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleAlerting { + authType := string(secret.Data["auth_type"]) + if authType != "smtp" && authType != "none" && authType != "basic" && authType != "certificate" { + return nil, fmt.Errorf("invalid or missing field 'auth_type' in secret %s", secret.Name) + } + alertingSecret := secret + secretsMap[v1beta1constants.GardenRoleAlerting] = &alertingSecret + logInfo = append(logInfo, fmt.Sprintf("alerting secret %q", secret.Name)) + numberOfAlertingSecrets++ + } + + // Retrieving basic auth secret for aggregate monitoring with a label + // indicating the Garden role global-monitoring. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleGlobalMonitoring { + monitoringSecret := secret + secretsMap[v1beta1constants.GardenRoleGlobalMonitoring] = &monitoringSecret + logInfo = append(logInfo, fmt.Sprintf("monitoring basic auth secret %q", secret.Name)) + numberOfGlobalMonitoringSecrets++ + } + + // Retrieving basic auth secret for remote write monitoring with a label + // indicating the Garden role global-shoot-remote-write-monitoring. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleGlobalShootRemoteWriteMonitoring { + monitoringSecret := secret + secretsMap[v1beta1constants.GardenRoleGlobalShootRemoteWriteMonitoring] = &monitoringSecret + logInfo = append(logInfo, fmt.Sprintf("monitoring basic auth secret %q", secret.Name)) + } + } + + // For each Shoot we create a LoadBalancer(LB) pointing to the API server of the Shoot. Because the technical address + // of the LB (ip or hostname) can change we cannot directly write it into the kubeconfig of the components + // which talk from outside (kube-proxy, kubelet etc.) (otherwise those kubeconfigs would be broken once ip/hostname + // of LB changed; and we don't have means to exchange kubeconfigs currently). + // Therefore, to have a stable endpoint, we create a DNS record pointing to the ip/hostname of the LB. This DNS record + // is used in all kubeconfigs. With that we have a robust endpoint stable against underlying ip/hostname changes. + // And there can only be one of this internal domain secret because otherwise the gardener would not know which + // domain it should use. + if enforceInternalDomainSecret && numberOfInternalDomainSecrets == 0 { + return nil, fmt.Errorf("need an internal domain secret but found none") + } + + // The VPN bridge from a Shoot's control plane running in the Seed cluster to the worker nodes of the Shoots is based + // on OpenVPN. It requires a Diffie Hellman key. If no such key is explicitly provided as secret in the garden namespace + // then the Gardener will use a default one (not recommended, but useful for local development). If a secret is specified + // its key will be used for all Shoots. However, at most only one of such a secret is allowed to be specified (otherwise, + // the Gardener cannot determine which to choose). + if numberOfOpenVPNDiffieHellmanSecrets > 1 { + return nil, fmt.Errorf("can only accept at most one OpenVPN Diffie Hellman secret, but found %d", numberOfOpenVPNDiffieHellmanSecrets) + } + + // Operators can configure gardener to send email alerts or send the alerts to an external alertmanager. If no configuration + // is provided then no alerts will be sent. + if numberOfAlertingSecrets > 1 { + return nil, fmt.Errorf("can only accept at most one alerting secret, but found %d", numberOfAlertingSecrets) + } + + if numberOfGlobalMonitoringSecrets > 1 { + return nil, fmt.Errorf("can only accept at most one global monitoring secret, but found %d", numberOfGlobalMonitoringSecrets) + } + + log.Info("Found secrets", "namespace", namespace, "secrets", logInfo) + return secretsMap, nil +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/identity.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/identity.go index e405752d7..3d336dbcb 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/identity.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/identity.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/migration.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/migration.go index 82eaaf8aa..1a9505bb3 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/migration.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/migration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go index f6dbaa436..34dce4548 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -27,16 +27,32 @@ import ( ) // InjectNetworkPolicyAnnotationsForScrapeTargets injects the provided ports into the -// `networking.resources.gardener.cloud/from-policy-allowed-ports` annotation of the given service. In addition, it adds -// the well-known annotation for scrape targets of Prometheus in shoot namespaces. +// `networking.resources.gardener.cloud/from-all-scrape-targets-allowed-ports` annotation of the given service. func InjectNetworkPolicyAnnotationsForScrapeTargets(service *corev1.Service, ports ...networkingv1.NetworkPolicyPort) error { + return injectNetworkPolicyAnnotationsForScrapeTargets(service, v1beta1constants.LabelNetworkPolicyScrapeTargets, ports...) +} + +// InjectNetworkPolicyAnnotationsForSeedScrapeTargets injects the provided ports into the +// `networking.resources.gardener.cloud/from-all-seed-scrape-targets-allowed-ports` annotation of the given service. +func InjectNetworkPolicyAnnotationsForSeedScrapeTargets(service *corev1.Service, ports ...networkingv1.NetworkPolicyPort) error { + return injectNetworkPolicyAnnotationsForScrapeTargets(service, v1beta1constants.LabelNetworkPolicySeedScrapeTargets, ports...) +} + +// InjectNetworkPolicyAnnotationsForWebhookTargets injects the provided ports into the +// `networking.resources.gardener.cloud/from-all-webhook-targets-allowed-ports` annotation of the given service. +func InjectNetworkPolicyAnnotationsForWebhookTargets(service *corev1.Service, ports ...networkingv1.NetworkPolicyPort) error { + return injectNetworkPolicyAnnotationsForScrapeTargets(service, v1beta1constants.LabelNetworkPolicyWebhookTargets, ports...) +} + +// InjectNetworkPolicyAnnotationsForScrapeTargets injects the provided ports into the +// `networking.resources.gardener.cloud/from--allowed-ports` annotation of the given service. +func injectNetworkPolicyAnnotationsForScrapeTargets(service *corev1.Service, podLabelSelector string, ports ...networkingv1.NetworkPolicyPort) error { rawPorts, err := json.Marshal(ports) if err != nil { return err } - metav1.SetMetaDataAnnotation(&service.ObjectMeta, resourcesv1alpha1.NetworkingFromPolicyPodLabelSelector, v1beta1constants.LabelNetworkPolicyScrapeTargets) - metav1.SetMetaDataAnnotation(&service.ObjectMeta, resourcesv1alpha1.NetworkingFromPolicyAllowedPorts, string(rawPorts)) + metav1.SetMetaDataAnnotation(&service.ObjectMeta, resourcesv1alpha1.NetworkPolicyFromPolicyAnnotationPrefix+podLabelSelector+resourcesv1alpha1.NetworkPolicyFromPolicyAnnotationSuffix, string(rawPorts)) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go index a222bc31a..ca94e2280 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/secrets.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/secrets.go index aa144fffa..287301dbb 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/secrets.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/secrets.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/seed.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/seed.go index 971f0bb40..954ddc783 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/seed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,11 +23,14 @@ import ( certificatesv1 "k8s.io/api/certificates/v1" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/meta" "sigs.k8s.io/controller-runtime/pkg/client" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" + operatorv1alpha1 "github.com/gardener/gardener/pkg/apis/operator/v1alpha1" + kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" "github.com/gardener/gardener/pkg/utils/version" ) @@ -147,3 +150,15 @@ func GetWildcardCertificate(ctx context.Context, c client.Client) (*corev1.Secre } return nil, nil } + +// SeedIsGarden returns 'true' if the cluster is registered as a Garden cluster. +func SeedIsGarden(ctx context.Context, seedClient client.Reader) (bool, error) { + seedIsGarden, err := kubernetesutils.ResourcesExist(ctx, seedClient, operatorv1alpha1.SchemeGroupVersion.WithKind("GardenList")) + if err != nil { + if !meta.IsNoMatchError(err) { + return false, err + } + seedIsGarden = false + } + return seedIsGarden, nil +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go index ab43fcf2b..07341ac08 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -37,6 +37,7 @@ import ( "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" + "github.com/gardener/gardener/pkg/apis/core" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" @@ -514,3 +515,184 @@ func ExtractSystemComponentsTolerations(workers []gardencorev1beta1.Worker) []co return tolerations.UnsortedList() } + +// IncompleteDNSConfigError is a custom error type. +type IncompleteDNSConfigError struct{} + +// Error prints the error message of the IncompleteDNSConfigError error. +func (e *IncompleteDNSConfigError) Error() string { + return "unable to figure out which secret should be used for dns" +} + +// IsIncompleteDNSConfigError returns true if the error indicates that not the DNS config is incomplete. +func IsIncompleteDNSConfigError(err error) bool { + _, ok := err.(*IncompleteDNSConfigError) + return ok +} + +// ConstructInternalClusterDomain constructs the internal base domain for this shoot cluster. +// It is only used for internal purposes (all kubeconfigs except the one which is received by the +// user will only talk with the kube-apiserver via a DNS record of domain). In case the given +// already contains "internal", the result is constructed as "..." +// In case it does not, the word "internal" will be appended, resulting in +// "..internal.". +func ConstructInternalClusterDomain(shootName, shootProject string, internalDomain *Domain) string { + if internalDomain == nil { + return "" + } + if strings.Contains(internalDomain.Domain, InternalDomainKey) { + return fmt.Sprintf("%s.%s.%s", shootName, shootProject, internalDomain.Domain) + } + return fmt.Sprintf("%s.%s.%s.%s", shootName, shootProject, InternalDomainKey, internalDomain.Domain) +} + +// ConstructExternalClusterDomain constructs the external Shoot cluster domain, i.e. the domain which will be put +// into the Kubeconfig handed out to the user. +func ConstructExternalClusterDomain(shoot *gardencorev1beta1.Shoot) *string { + if shoot.Spec.DNS == nil || shoot.Spec.DNS.Domain == nil { + return nil + } + return shoot.Spec.DNS.Domain +} + +// ConstructExternalDomain constructs an object containing all relevant information of the external domain that +// shall be used for a shoot cluster - based on the configuration of the Garden cluster and the shoot itself. +func ConstructExternalDomain(ctx context.Context, c client.Reader, shoot *gardencorev1beta1.Shoot, shootSecret *corev1.Secret, defaultDomains []*Domain) (*Domain, error) { + externalClusterDomain := ConstructExternalClusterDomain(shoot) + if externalClusterDomain == nil { + return nil, nil + } + + var ( + externalDomain = &Domain{Domain: *shoot.Spec.DNS.Domain} + defaultDomain = DomainIsDefaultDomain(*externalClusterDomain, defaultDomains) + primaryProvider = v1beta1helper.FindPrimaryDNSProvider(shoot.Spec.DNS.Providers) + ) + + switch { + case defaultDomain != nil: + externalDomain.SecretData = defaultDomain.SecretData + externalDomain.Provider = defaultDomain.Provider + externalDomain.Zone = defaultDomain.Zone + externalDomain.IncludeDomains = defaultDomain.IncludeDomains + externalDomain.ExcludeDomains = defaultDomain.ExcludeDomains + externalDomain.IncludeZones = defaultDomain.IncludeZones + externalDomain.ExcludeZones = defaultDomain.ExcludeZones + + case primaryProvider != nil: + if primaryProvider.SecretName != nil { + secret := &corev1.Secret{} + if err := c.Get(ctx, kubernetesutils.Key(shoot.Namespace, *primaryProvider.SecretName), secret); err != nil { + return nil, fmt.Errorf("could not get dns provider secret %q: %+v", *shoot.Spec.DNS.Providers[0].SecretName, err) + } + externalDomain.SecretData = secret.Data + } else { + if shootSecret == nil { + return nil, fmt.Errorf("default domain is not present, secret for primary dns provider is required") + } + externalDomain.SecretData = shootSecret.Data + } + if primaryProvider.Type != nil { + externalDomain.Provider = *primaryProvider.Type + } + if domains := primaryProvider.Domains; domains != nil { + externalDomain.IncludeDomains = domains.Include + externalDomain.ExcludeDomains = domains.Exclude + } + if zones := primaryProvider.Zones; zones != nil { + externalDomain.IncludeZones = zones.Include + externalDomain.ExcludeZones = zones.Exclude + if len(zones.Include) == 1 { + externalDomain.Zone = zones.Include[0] + } + } + + default: + return nil, &IncompleteDNSConfigError{} + } + + return externalDomain, nil +} + +// ComputeRequiredExtensions compute the extension kind/type combinations that are required for the +// reconciliation flow. +func ComputeRequiredExtensions(shoot *gardencorev1beta1.Shoot, seed *gardencorev1beta1.Seed, controllerRegistrationList *gardencorev1beta1.ControllerRegistrationList, internalDomain, externalDomain *Domain) utilsets.Set[string] { + requiredExtensions := utilsets.New[string]() + + if seed.Spec.Backup != nil { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.BackupBucketResource, seed.Spec.Backup.Provider)) + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.BackupEntryResource, seed.Spec.Backup.Provider)) + } + // Hint: This is actually a temporary work-around to request the control plane extension of the seed provider type as + // it might come with webhooks that are configuring the exposure of shoot control planes. The ControllerRegistration resource + // does not reflect this today. + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.ControlPlaneResource, seed.Spec.Provider.Type)) + + if !v1beta1helper.IsWorkerless(shoot) { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.ControlPlaneResource, shoot.Spec.Provider.Type)) + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.InfrastructureResource, shoot.Spec.Provider.Type)) + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.WorkerResource, shoot.Spec.Provider.Type)) + if shoot.Spec.Networking != nil && shoot.Spec.Networking.Type != nil { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.NetworkResource, *shoot.Spec.Networking.Type)) + } + } + + disabledExtensions := utilsets.New[string]() + for _, extension := range shoot.Spec.Extensions { + id := ExtensionsID(extensionsv1alpha1.ExtensionResource, extension.Type) + + if pointer.BoolDeref(extension.Disabled, false) { + disabledExtensions.Insert(id) + } else { + requiredExtensions.Insert(id) + } + } + + for _, pool := range shoot.Spec.Provider.Workers { + if pool.Machine.Image != nil { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.OperatingSystemConfigResource, pool.Machine.Image.Name)) + } + if pool.CRI != nil { + for _, cr := range pool.CRI.ContainerRuntimes { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.ContainerRuntimeResource, cr.Type)) + } + } + } + + if shoot.Spec.DNS != nil { + for _, provider := range shoot.Spec.DNS.Providers { + if provider.Type != nil && *provider.Type != core.DNSUnmanaged { + if provider.Primary != nil && *provider.Primary { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.DNSRecordResource, *provider.Type)) + } + } + } + } + + if internalDomain != nil && internalDomain.Provider != core.DNSUnmanaged { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.DNSRecordResource, internalDomain.Provider)) + } + + if externalDomain != nil && externalDomain.Provider != core.DNSUnmanaged { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.DNSRecordResource, externalDomain.Provider)) + } + + for _, controllerRegistration := range controllerRegistrationList.Items { + for _, resource := range controllerRegistration.Spec.Resources { + id := ExtensionsID(extensionsv1alpha1.ExtensionResource, resource.Type) + if resource.Kind == extensionsv1alpha1.ExtensionResource && pointer.BoolDeref(resource.GloballyEnabled, false) && !disabledExtensions.Has(id) { + if v1beta1helper.IsWorkerless(shoot) && !pointer.BoolDeref(resource.WorkerlessSupported, false) { + continue + } + requiredExtensions.Insert(id) + } + } + } + + return requiredExtensions +} + +// ExtensionsID returns an identifier for the given extension kind/type. +func ExtensionsID(extensionKind, extensionType string) string { + return fmt.Sprintf("%s/%s", extensionKind, extensionType) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go new file mode 100644 index 000000000..2b730aa37 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go @@ -0,0 +1,120 @@ +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package gardener + +import ( + "fmt" + + gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" +) + +// ShootStatus is the status of a shoot used in the common.ShootStatus label. +type ShootStatus string + +const ( + // ShootStatusHealthy indicates that a shoot is considered healthy. + ShootStatusHealthy ShootStatus = "healthy" + // ShootStatusProgressing indicates that a shoot was once healthy, currently experienced an issue + // but is still within a predefined grace period. + ShootStatusProgressing ShootStatus = "progressing" + // ShootStatusUnhealthy indicates that a shoot is considered unhealthy. + ShootStatusUnhealthy ShootStatus = "unhealthy" + // ShootStatusUnknown indicates that the shoot health status is not known. + ShootStatusUnknown ShootStatus = "unknown" +) + +var ( + shootStatusValues = map[ShootStatus]int{ + ShootStatusHealthy: 3, + ShootStatusProgressing: 2, + ShootStatusUnknown: 1, + ShootStatusUnhealthy: 0, + } +) + +// ShootStatusValue returns the value of the given ShootStatus. +func ShootStatusValue(s ShootStatus) int { + value, ok := shootStatusValues[s] + if !ok { + panic(fmt.Sprintf("invalid shoot status %q", s)) + } + + return value +} + +// OrWorse returns the worse ShootStatus of the given two states. +func (s ShootStatus) OrWorse(other ShootStatus) ShootStatus { + if ShootStatusValue(other) < ShootStatusValue(s) { + return other + } + return s +} + +// ConditionStatusToShootStatus converts the given ConditionStatus to a shoot label ShootStatus. +func ConditionStatusToShootStatus(status gardencorev1beta1.ConditionStatus) ShootStatus { + switch status { + case gardencorev1beta1.ConditionTrue: + return ShootStatusHealthy + case gardencorev1beta1.ConditionProgressing: + return ShootStatusProgressing + case gardencorev1beta1.ConditionUnknown: + return ShootStatusUnknown + } + return ShootStatusUnhealthy +} + +// ComputeConditionStatus computes the ShootStatus from the given Conditions. By default, the ShootStatus is +// ShootStatusHealthy. The condition status is converted to a ShootStatus by using ConditionStatusToShootStatus. Always +// the worst status of the combined states wins. +func ComputeConditionStatus(conditions ...gardencorev1beta1.Condition) ShootStatus { + status := ShootStatusHealthy + for _, condition := range conditions { + status = status.OrWorse(ConditionStatusToShootStatus(condition.Status)) + } + return status +} + +// BoolToShootStatus converts the given boolean to a ShootStatus. For true values, it returns ShootStatusHealthy. +// Otherwise, it returns ShootStatusUnhealthy. +func BoolToShootStatus(cond bool) ShootStatus { + if cond { + return ShootStatusHealthy + } + return ShootStatusUnhealthy +} + +// ComputeShootStatus computes the ShootStatus of a shoot depending on the given lastOperation, lastError and conditions. +func ComputeShootStatus(lastOperation *gardencorev1beta1.LastOperation, lastErrors []gardencorev1beta1.LastError, conditions ...gardencorev1beta1.Condition) ShootStatus { + // Shoot has been created and not yet reconciled. + if lastOperation == nil { + return ShootStatusHealthy + } + + // If the Shoot is either in create (except successful create) or delete state then the last error indicates the healthiness. + if (lastOperation.Type == gardencorev1beta1.LastOperationTypeCreate && lastOperation.State != gardencorev1beta1.LastOperationStateSucceeded) || + lastOperation.Type == gardencorev1beta1.LastOperationTypeDelete { + return BoolToShootStatus(len(lastErrors) == 0) + } + + status := ComputeConditionStatus(conditions...) + + // If an operation is currently processing then the last error state is reported. + if lastOperation.State == gardencorev1beta1.LastOperationStateProcessing { + return status.OrWorse(BoolToShootStatus(len(lastErrors) == 0)) + } + + // If the last operation has succeeded then the shoot is healthy. + return status.OrWorse(BoolToShootStatus(lastOperation.State == gardencorev1beta1.LastOperationStateSucceeded)) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go new file mode 100644 index 000000000..8feaf529e --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go @@ -0,0 +1,49 @@ +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package gardener + +import ( + "github.com/Masterminds/semver" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + resourcesv1alpha1 "github.com/gardener/gardener/pkg/apis/resources/v1alpha1" + "github.com/gardener/gardener/pkg/utils/version" +) + +const ( + // AnnotationTopologyMode can be used to enable or disable Topology Aware + // Routing for a Service. + // + // TODO(ialidzhikov): Use k8s.io/api/core/v1.AnnotationTopologyMode when we upgrade the K8s dependencies to v0.27.0. + AnnotationTopologyMode = "service.kubernetes.io/topology-mode" +) + +// ReconcileTopologyAwareRoutingMetadata adds (or removes) the required annotation and label to make a Service topology-aware. +func ReconcileTopologyAwareRoutingMetadata(service *corev1.Service, topologyAwareRoutingEnabled bool, k8sVersion *semver.Version) { + if topologyAwareRoutingEnabled { + if version.ConstraintK8sGreaterEqual127.Check(k8sVersion) { + metav1.SetMetaDataAnnotation(&service.ObjectMeta, AnnotationTopologyMode, "auto") + delete(service.Annotations, corev1.AnnotationTopologyAwareHints) + } else { + metav1.SetMetaDataAnnotation(&service.ObjectMeta, corev1.AnnotationTopologyAwareHints, "auto") + } + metav1.SetMetaDataLabel(&service.ObjectMeta, resourcesv1alpha1.EndpointSliceHintsConsider, "true") + } else { + delete(service.Annotations, AnnotationTopologyMode) + delete(service.Annotations, corev1.AnnotationTopologyAwareHints) + delete(service.Labels, resourcesv1alpha1.EndpointSliceHintsConsider) + } +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector.go b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector.go index e784a28c1..d6187186b 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_components.go b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_components.go index 927d5959b..3d96921f8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_components.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_components.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_validation.go b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_validation.go index 91f5a5cfd..81261f27b 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_validation.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/imagevector_validation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/types.go b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/types.go index 353631b72..8ecaae451 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/imagevector/types.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/imagevector/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go index 63cc6d4d0..745137590 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go index 0e8b65fc5..7138978c8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go index b5fab0edd..c28c363ec 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go index b41efa23f..3d1ac9696 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go index 208acceb5..208b100ee 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go index 3a1487e1e..398e908a0 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go index d567c80cb..577259707 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go index 5d177625f..9981fe966 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go index 5eda979aa..7660142be 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -33,8 +33,7 @@ func CheckEtcd(etcd *druidv1alpha1.Etcd) error { continue } - // TODO(timuthy): Check for cond.Status != druidv1alpha1.ConditionTrue as soon as https://github.com/gardener/etcd-druid/pull/469 is released. - if cond.Status == druidv1alpha1.ConditionFalse { + if cond.Status != druidv1alpha1.ConditionTrue { return fmt.Errorf("backup for etcd %q is reported as unready: %s", etcd.Name, cond.Message) } } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go index 91449d819..c0afe557f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package health import ( "fmt" + "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" @@ -32,6 +33,7 @@ import ( // * No gardener.cloud/operation is set // * No lastError is in the status // * A last operation is state succeeded is present +// * gardener.cloud/timestamp annotation is not set or if its truncated value is not after last update time func CheckExtensionObject(o client.Object) error { obj, ok := o.(extensionsv1alpha1.Object) if !ok { @@ -81,6 +83,21 @@ func checkExtensionObject(generation int64, observedGeneration int64, annotation return fmt.Errorf("extension state is not succeeded but %v", lastOperation.State) } + if timestamp, ok := annotations[v1beta1constants.GardenerTimestamp]; ok { + parsedTimestamp, err := time.Parse(time.RFC3339Nano, timestamp) + if err != nil { + return fmt.Errorf("cannot parse gardener.cloud/timestamp annotation: %w", err) + } + + if parsedTimestamp.Truncate(time.Second).UTC().After(lastOperation.LastUpdateTime.Time.UTC()) { + return fmt.Errorf( + "extension is not reconciled yet - reconciliation requested at %s, last update time is: %s", + parsedTimestamp.Truncate(time.Second).UTC().Format(time.RFC3339), + lastOperation.LastUpdateTime.Time.UTC().Format(time.RFC3339), + ) + } + } + return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go index 2bcc84a0f..4a7420878 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go index 650c2f010..c57c142dc 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go index 1c3aaf7cd..cb61342f4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go index 807867f43..3ca6e6946 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go index b8adb7fca..86c0d4c2d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go index 03b91d1f8..ae32b3736 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go index bd81f9dbe..f86ea7b5a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go index b64ed0953..570dfa748 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go index 8068d23d5..b152257dc 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go index f26907307..8d48e47a4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go index 4fa1ef57c..8efc82543 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go index 73e5a79e4..470a5151e 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go index 201d466c9..a2f150737 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -93,6 +93,7 @@ func GetTopologySpreadConstraints( topologySpreadConstraints = append(topologySpreadConstraints, corev1.TopologySpreadConstraint{ TopologyKey: corev1.LabelTopologyZone, + MinDomains: minDomains(numberOfZones, maxReplicas), MaxSkew: maxSkew, WhenUnsatisfiable: corev1.DoNotSchedule, LabelSelector: &labelSelector, @@ -101,3 +102,14 @@ func GetTopologySpreadConstraints( return topologySpreadConstraints } + +func minDomains(numberOfZones, maxReplicas int32) *int32 { + // If the maximum replica count is lower than the number of zones, then we only need to set 'minDomains' to + // the number of replicas because there is no benefit of enforcing a further zone spread for additional replicas, + // e.g. when a rolling update is performed. + if maxReplicas < numberOfZones { + return pointer.Int32(maxReplicas) + } + // Return the number of zones otherwise because it's not possible to spread pods over more zones than there are available. + return pointer.Int32(numberOfZones) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go index 02ad29a6a..939fc61d7 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go index dd93b3c04..92320bd4b 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go index 7ef86012e..afda58bfb 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/node.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/node.go index b881c3a4b..b305066dc 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/node.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/node.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/object.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/object.go index 5d1397846..148eab9f8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/object.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/object.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go index 0c07aae35..ef201cfb0 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/service.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/service.go index 211f9a578..9b6e56131 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/service.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/service.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,12 +20,17 @@ import ( "github.com/gardener/gardener/pkg/apis/core/v1beta1" ) +// FQDNForService returns the fully qualified domain name of a service with the given name and namespace. +func FQDNForService(name, namespace string) string { + return fmt.Sprintf("%s.%s.svc.%s", name, namespace, v1beta1.DefaultDomain) +} + // DNSNamesForService returns the possible DNS names for a service with the given name and namespace. func DNSNamesForService(name, namespace string) []string { return []string{ name, fmt.Sprintf("%s.%s", name, namespace), fmt.Sprintf("%s.%s.svc", name, namespace), - fmt.Sprintf("%s.%s.svc.%s", name, namespace, v1beta1.DefaultDomain), + FQDNForService(name, namespace), } } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go index 26aeb9b14..8112843db 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go index a8c04a287..3d7fb3825 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go index 2013b394d..b77e3707d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go index f8fedb5c9..8f8fe1a8c 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/labels.go b/vendor/github.com/gardener/gardener/pkg/utils/labels.go index e1085a3d4..76daf0770 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/labels.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/labels.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/managedresources.go b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/managedresources.go index 1b304ee64..0ffb9b102 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/managedresources.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/managedresources.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/secrets.go b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/secrets.go index 959c5f11f..56f31acaf 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/secrets.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/builder/secrets.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/managedresources.go b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/managedresources.go index 4aa2087e3..52ff23239 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/managedresources.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/managedresources.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/registry.go b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/registry.go index a32f2acb6..123ac9ed5 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/managedresources/registry.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/managedresources/registry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,12 +17,14 @@ package managedresources import ( "fmt" "reflect" + "sort" "strings" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/util/sets" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" ) @@ -43,14 +45,26 @@ type object struct { // NewRegistry returns a new registry for resources. The given scheme, codec, and serializer must know all the resource // types that will later be added to the registry. func NewRegistry(scheme *runtime.Scheme, codec serializer.CodecFactory, serializer *json.Serializer) *Registry { - var groupVersions []schema.GroupVersion + var groupVersions schema.GroupVersions for k := range scheme.AllKnownTypes() { groupVersions = append(groupVersions, k.GroupVersion()) } + // Use set to remove duplicates + groupVersions = sets.New(groupVersions...).UnsortedList() + + // Sort groupVersions to ensure groupVersions.Identifier() is stable key + // for the map in https://github.com/kubernetes/apimachinery/blob/v0.26.1/pkg/runtime/serializer/versioning/versioning.go#L94 + sort.Slice(groupVersions, func(i, j int) bool { + if groupVersions[i].Group == groupVersions[j].Group { + return groupVersions[i].Version < groupVersions[j].Version + } + return groupVersions[i].Group < groupVersions[j].Group + }) + return &Registry{ scheme: scheme, - codec: codec.CodecForVersions(serializer, serializer, schema.GroupVersions(groupVersions), schema.GroupVersions(groupVersions)), + codec: codec.CodecForVersions(serializer, serializer, groupVersions, groupVersions), nameToObject: make(map[string]*object), } } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go index 93a3f4fc1..a987a0d6b 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -69,11 +69,11 @@ func MergeMaps(a, b map[string]interface{}) map[string]interface{} { // MergeStringMaps merges the content of the newMaps with the oldMap. If a key already exists then // it gets overwritten by the last value with the same key. -func MergeStringMaps(oldMap map[string]string, newMaps ...map[string]string) map[string]string { - var out map[string]string +func MergeStringMaps[T any](oldMap map[string]T, newMaps ...map[string]T) map[string]T { + var out map[string]T if oldMap != nil { - out = make(map[string]string) + out = make(map[string]T) } for k, v := range oldMap { out[k] = v @@ -81,7 +81,7 @@ func MergeStringMaps(oldMap map[string]string, newMaps ...map[string]string) map for _, newMap := range newMaps { if newMap != nil && out == nil { - out = make(map[string]string) + out = make(map[string]T) } for k, v := range newMap { @@ -141,6 +141,20 @@ func ProtocolPtr(protocol corev1.Protocol) *corev1.Protocol { return &protocol } +// TimePtr returns a time.Time pointer to its argument. +func TimePtr(t time.Time) *time.Time { + return &t +} + +// TimePtrDeref dereferences the time.Time ptr and returns it if not nil, or else +// returns def. +func TimePtrDeref(ptr *time.Time, def time.Time) time.Time { + if ptr != nil { + return *ptr + } + return def +} + // IntStrPtrFromInt returns an intstr.IntOrString pointer to its argument. func IntStrPtrFromInt(port int) *intstr.IntOrString { v := intstr.FromInt(port) diff --git a/vendor/github.com/gardener/gardener/pkg/utils/random.go b/vendor/github.com/gardener/gardener/pkg/utils/random.go index f676f52e2..1da804352 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/random.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/random.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/retry/alias.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/alias.go index 471a3b2bb..faa025e82 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/alias.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/alias.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/retry/error.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/error.go index 801ded7ab..dbb8459f3 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/error.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/error.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/retry/retry.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/retry.go index 76ca91b24..14bcb4e41 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/retry.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/retry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/retry/types.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/types.go index d1bffb31c..1343d827c 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/types.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go index f34a16a25..b20a33c60 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go index 49ada4376..35ee79d01 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go index 47786394f..f642d94dc 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go index 7dded01f0..6245b46a5 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go index 6f186121e..b74d4a214 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go index fd17ea01c..6c279a176 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go index 55aef0662..dc22fe184 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/cleanup.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/cleanup.go index 699f6fc30..b89548f5e 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/cleanup.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/cleanup.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/generate.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/generate.go index ae07f11c0..e0ae50b72 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/generate.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/generate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -136,11 +136,23 @@ func (m *manager) generateAndCreate(ctx context.Context, config secretsutils.Con } func (m *manager) keepExistingSecretsIfNeeded(ctx context.Context, configName string, newData map[string][]byte) (map[string][]byte, error) { - existingSecret := &corev1.Secret{} + existingSecrets := &corev1.SecretList{} + if err := m.client.List(ctx, existingSecrets, client.InNamespace(m.namespace), client.MatchingLabels{LabelKeyUseDataForName: configName}); err != nil { + return nil, err + } + + if len(existingSecrets.Items) > 1 { + return nil, fmt.Errorf("found more than one existing secret with %q label for config %q", LabelKeyUseDataForName, configName) + } + + if len(existingSecrets.Items) == 1 { + return existingSecrets.Items[0].Data, nil + } // For backwards-compatibility, we need to keep some of the existing secrets (cluster-admin token, basic auth // password, etc.). // TODO(rfranzke): Remove this switch statement in the future. + existingSecret := &corev1.Secret{} switch configName { case "kube-apiserver-etcd-encryption-key": if err := m.client.Get(ctx, kubernetesutils.Key(m.namespace, "etcd-encryption-secret"), existingSecret); err != nil { @@ -196,19 +208,6 @@ func (m *manager) keepExistingSecretsIfNeeded(ctx context.Context, configName st return existingSecret.Data, nil } - existingSecrets := &corev1.SecretList{} - if err := m.client.List(ctx, existingSecrets, client.InNamespace(m.namespace), client.MatchingLabels{LabelKeyUseDataForName: configName}); err != nil { - return nil, err - } - - if len(existingSecrets.Items) > 1 { - return nil, fmt.Errorf("found more than one existing secret with %q label for config %q", LabelKeyUseDataForName, configName) - } - - if len(existingSecrets.Items) == 1 { - return existingSecrets.Items[0].Data, nil - } - return newData, nil } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/get.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/get.go index 86265f2d1..7c4967539 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/get.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/get.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/interface.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/interface.go index a45470d93..798b7b0ff 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/interface.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/interface.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/manager.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/manager.go index ec3a848d2..7b4028719 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/manager.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/manager/manager.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go index ef5542199..a3606c298 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/static_token.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/static_token.go index ab1fa4a77..e62e12942 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/static_token.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/static_token.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/types.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/types.go index c481bdb4f..7b6e0e83a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/types.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go index 96f5cec5a..2d879ae9c 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go index bdb289503..8fcaaf7d5 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go index a0bb3a702..fd8760971 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/validation/kubernetesversion/version.go b/vendor/github.com/gardener/gardener/pkg/utils/validation/kubernetesversion/version.go new file mode 100644 index 000000000..11f5c5821 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/validation/kubernetesversion/version.go @@ -0,0 +1,50 @@ +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetesversion + +import ( + "fmt" + + versionutils "github.com/gardener/gardener/pkg/utils/version" +) + +// SupportedVersions is the list of supported Kubernetes versions for all runtime and target clusters, i.e. all gardens, +// seeds, and shoots. +var SupportedVersions = []string{ + "1.20", + "1.21", + "1.22", + "1.23", + "1.24", + "1.25", + "1.26", + "1.27", +} + +// CheckIfSupported checks if the provided version is part of the supported Kubernetes versions list. +func CheckIfSupported(gitVersion string) error { + for _, supportedVersion := range SupportedVersions { + ok, err := versionutils.CompareVersions(gitVersion, "~", supportedVersion) + if err != nil { + return err + } + + if ok { + return nil + } + } + + return fmt.Errorf("unsupported kubernetes version %q", gitVersion) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/values.go b/vendor/github.com/gardener/gardener/pkg/utils/values.go index f91901658..722709989 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/values.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/values.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/pkg/utils/version/version.go b/vendor/github.com/gardener/gardener/pkg/utils/version/version.go index 85aaf132e..83342916d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/version/version.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/version/version.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -57,6 +57,10 @@ var ( ConstraintK8sGreaterEqual126 *semver.Constraints // ConstraintK8sLess126 is a version constraint for versions < 1.26. ConstraintK8sLess126 *semver.Constraints + // ConstraintK8sGreaterEqual127 is a version constraint for versions >= 1.27. + ConstraintK8sGreaterEqual127 *semver.Constraints + // ConstraintK8sLess127 is a version constraint for versions < 1.27. + ConstraintK8sLess127 *semver.Constraints ) func init() { @@ -95,6 +99,10 @@ func init() { utilruntime.Must(err) ConstraintK8sLess126, err = semver.NewConstraint("< 1.26-0") utilruntime.Must(err) + ConstraintK8sGreaterEqual127, err = semver.NewConstraint(">= 1.27-0") + utilruntime.Must(err) + ConstraintK8sLess127, err = semver.NewConstraint("< 1.27-0") + utilruntime.Must(err) } // CompareVersions returns true if the constraint compared by to diff --git a/vendor/github.com/gardener/gardener/test/framework/common.go b/vendor/github.com/gardener/gardener/test/framework/common.go index fd9306592..fb3d9cef4 100644 --- a/vendor/github.com/gardener/gardener/test/framework/common.go +++ b/vendor/github.com/gardener/gardener/test/framework/common.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,9 +24,9 @@ const ( // KubeconfigSecretKeyName ist the name of the key in a secret that holds the kubeconfig of a shoot KubeconfigSecretKeyName = "kubeconfig" - // LoggingUserName is the admin user name for the loki instance of a shoot - lokiLogging = "loki" - lokiPort = 3100 + // LoggingUserName is the admin user name for the vali instance of a shoot + valiLogging = "vali" + valiPort = 3100 // IntegrationTestPrefix is the default prefix that will be used for test shoots if none other is specified IntegrationTestPrefix = "itest-" @@ -45,7 +45,7 @@ const ( SeedTaintTestRun = "test.gardener.cloud/test-run" ) -// SearchResponse represents the response from a search query to loki +// SearchResponse represents the response from a search query to vali type SearchResponse struct { Data struct { Result []struct { diff --git a/vendor/github.com/gardener/gardener/test/framework/commonframework.go b/vendor/github.com/gardener/gardener/test/framework/commonframework.go index 7bf478cf8..c88dca58b 100644 --- a/vendor/github.com/gardener/gardener/test/framework/commonframework.go +++ b/vendor/github.com/gardener/gardener/test/framework/commonframework.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/config/config.go b/vendor/github.com/gardener/gardener/test/framework/config/config.go index acedbbbc6..b1fd3d0aa 100644 --- a/vendor/github.com/gardener/gardener/test/framework/config/config.go +++ b/vendor/github.com/gardener/gardener/test/framework/config/config.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/dump.go b/vendor/github.com/gardener/gardener/test/framework/dump.go index 3abe40b40..220a8ab43 100644 --- a/vendor/github.com/gardener/gardener/test/framework/dump.go +++ b/vendor/github.com/gardener/gardener/test/framework/dump.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -182,7 +182,7 @@ func (f *CommonFramework) DumpLogsForPodsWithLabelsInNamespace(ctx context.Conte var result error for _, pod := range pods.Items { - if err := f.DumpLogsForPodInNamespace(ctx, k8sClient, namespace, pod.Name); err != nil { + if err := f.DumpLogsForPodInNamespace(ctx, k8sClient, namespace, pod.Name, &corev1.PodLogOptions{}); err != nil { result = multierror.Append(result, err) } } @@ -190,12 +190,12 @@ func (f *CommonFramework) DumpLogsForPodsWithLabelsInNamespace(ctx context.Conte } // DumpLogsForPodInNamespace prints the logs of the pod with the given namespace and name. -func (f *CommonFramework) DumpLogsForPodInNamespace(ctx context.Context, k8sClient kubernetes.Interface, namespace, name string) error { +func (f *CommonFramework) DumpLogsForPodInNamespace(ctx context.Context, k8sClient kubernetes.Interface, namespace, name string, options *corev1.PodLogOptions) error { log := f.Logger.WithValues("pod", client.ObjectKey{Namespace: namespace, Name: name}) log.Info("Dumping logs for corev1.Pod") podIf := k8sClient.Kubernetes().CoreV1().Pods(namespace) - logs, err := kubernetes.GetPodLogs(ctx, podIf, name, &corev1.PodLogOptions{}) + logs, err := kubernetes.GetPodLogs(ctx, podIf, name, options) if err != nil { return err } diff --git a/vendor/github.com/gardener/gardener/test/framework/errors.go b/vendor/github.com/gardener/gardener/test/framework/errors.go index 0c1047ebd..c27519db3 100644 --- a/vendor/github.com/gardener/gardener/test/framework/errors.go +++ b/vendor/github.com/gardener/gardener/test/framework/errors.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go b/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go index bd5b053d5..da57050e4 100644 --- a/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import ( gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" + v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" "github.com/gardener/gardener/pkg/client/kubernetes" gardenerutils "github.com/gardener/gardener/pkg/utils/gardener" kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" @@ -263,6 +264,13 @@ func (f *GardenerFramework) HibernateShoot(ctx context.Context, shoot *gardencor return err } + if !v1beta1helper.IsWorkerless(shoot) { + // Verify no running pods after hibernation + if err := f.VerifyNoRunningPods(ctx, shoot); err != nil { + return fmt.Errorf("failed to verify no running pods after hibernation: %v", err) + } + } + log.Info("Shoot was hibernated successfully") return nil } @@ -486,3 +494,29 @@ func setHibernation(shoot *gardencorev1beta1.Shoot, hibernated bool) { Enabled: &hibernated, } } + +// VerifyNoRunningPods verifies that no control plane pods are running for a given shoot. +// If any control plane pods are found to be running, returns an error with their names. Otherwise, returns nil. +func (f *GardenerFramework) VerifyNoRunningPods(ctx context.Context, shoot *gardencorev1beta1.Shoot) error { + _, seedClient, err := f.GetSeed(ctx, *shoot.Spec.SeedName) + if err != nil { + return err + } + + shootSeedNamespace := shoot.Status.TechnicalID + podList := &metav1.PartialObjectMetadataList{} + podList.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("PodList")) + if err := seedClient.Client().List(ctx, podList, client.InNamespace(shootSeedNamespace)); err != nil { + return err + } + + if len(podList.Items) > 0 { + runningPodNames := []string{} + for _, pod := range podList.Items { + runningPodNames = append(runningPodNames, pod.Name) + } + return fmt.Errorf("found pods in namespace %s: %v", shootSeedNamespace, runningPodNames) + } + + return nil +} diff --git a/vendor/github.com/gardener/gardener/test/framework/gardenerframework.go b/vendor/github.com/gardener/gardener/test/framework/gardenerframework.go index f5e39ab78..eca2376e5 100644 --- a/vendor/github.com/gardener/gardener/test/framework/gardenerframework.go +++ b/vendor/github.com/gardener/gardener/test/framework/gardenerframework.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/gingko_utils.go b/vendor/github.com/gardener/gardener/test/framework/gingko_utils.go index e2ce6eea4..3ab2e1239 100644 --- a/vendor/github.com/gardener/gardener/test/framework/gingko_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/gingko_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/gomega_utils.go b/vendor/github.com/gardener/gardener/test/framework/gomega_utils.go index dae0c7f62..dc93285c4 100644 --- a/vendor/github.com/gardener/gardener/test/framework/gomega_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/gomega_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/helm.go b/vendor/github.com/gardener/gardener/test/framework/helm.go index e264dda1a..52352b5a1 100644 --- a/vendor/github.com/gardener/gardener/test/framework/helm.go +++ b/vendor/github.com/gardener/gardener/test/framework/helm.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/http_utils.go b/vendor/github.com/gardener/gardener/test/framework/http_utils.go index 63f3348d6..10cc8b129 100644 --- a/vendor/github.com/gardener/gardener/test/framework/http_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/http_utils.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/k8s_utils.go b/vendor/github.com/gardener/gardener/test/framework/k8s_utils.go index 1e69381fb..64e34ce58 100644 --- a/vendor/github.com/gardener/gardener/test/framework/k8s_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/k8s_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -29,17 +29,19 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/rest" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" + v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" "github.com/gardener/gardener/pkg/client/kubernetes" "github.com/gardener/gardener/pkg/utils" kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" "github.com/gardener/gardener/pkg/utils/kubernetes/health" "github.com/gardener/gardener/pkg/utils/retry" - "github.com/gardener/gardener/test/utils/shoots/access" + "github.com/gardener/gardener/test/utils/access" ) // WaitUntilDaemonSetIsRunning waits until the daemon set with is running @@ -321,12 +323,17 @@ func ShootReconciliationSuccessful(shoot *gardencorev1beta1.Shoot) (bool, string return false, "no conditions and last operation present yet" } - shootConditions := map[gardencorev1beta1.ConditionType]struct{}{ - gardencorev1beta1.ShootAPIServerAvailable: {}, - gardencorev1beta1.ShootControlPlaneHealthy: {}, - gardencorev1beta1.ShootObservabilityComponentsHealthy: {}, - gardencorev1beta1.ShootEveryNodeReady: {}, - gardencorev1beta1.ShootSystemComponentsHealthy: {}, + shootConditions := sets.New( + gardencorev1beta1.ShootAPIServerAvailable, + gardencorev1beta1.ShootControlPlaneHealthy, + gardencorev1beta1.ShootObservabilityComponentsHealthy, + gardencorev1beta1.ShootSystemComponentsHealthy, + ) + + if !v1beta1helper.IsWorkerless(shoot) { + shootConditions.Insert( + gardencorev1beta1.ShootEveryNodeReady, + ) } for _, condition := range shoot.Status.Conditions { @@ -335,7 +342,7 @@ func ShootReconciliationSuccessful(shoot *gardencorev1beta1.Shoot) (bool, string // the `gardenlet` that operates the seed has already been shut down as part of the hibernation, the seed conditions will never // be updated to True if they were previously not True. hibernation := shoot.Spec.Hibernation - if _, ok := shootConditions[condition.Type]; !ok && hibernation != nil && hibernation.Enabled != nil && *hibernation.Enabled { + if !shootConditions.Has(condition.Type) && hibernation != nil && pointer.BoolDeref(hibernation.Enabled, false) { continue } return false, fmt.Sprintf("condition type %s is not true yet, had message %s with reason %s", condition.Type, condition.Message, condition.Reason) diff --git a/vendor/github.com/gardener/gardener/test/framework/pod_executor.go b/vendor/github.com/gardener/gardener/test/framework/pod_executor.go index 686394861..cd45776e1 100644 --- a/vendor/github.com/gardener/gardener/test/framework/pod_executor.go +++ b/vendor/github.com/gardener/gardener/test/framework/pod_executor.go @@ -1,4 +1,4 @@ -// Copyright 2020 Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/reporter/esreporter.go b/vendor/github.com/gardener/gardener/test/framework/reporter/esreporter.go index 848e89f2d..2f611bf58 100644 --- a/vendor/github.com/gardener/gardener/test/framework/reporter/esreporter.go +++ b/vendor/github.com/gardener/gardener/test/framework/reporter/esreporter.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/rootpod_executor.go b/vendor/github.com/gardener/gardener/test/framework/rootpod_executor.go index bcf8a575e..9128c3f5b 100644 --- a/vendor/github.com/gardener/gardener/test/framework/rootpod_executor.go +++ b/vendor/github.com/gardener/gardener/test/framework/rootpod_executor.go @@ -1,4 +1,4 @@ -// Copyright 2020 Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go b/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go index 23ed82c95..2d1a0cfa6 100644 --- a/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -47,9 +47,9 @@ func (f *ShootFramework) ShootKubeconfigSecretName() string { return fmt.Sprintf("%s.kubeconfig", f.Shoot.GetName()) } -// GetLokiLogs gets logs from the last 1 hour for , from the loki instance in -func (f *ShootFramework) GetLokiLogs(ctx context.Context, lokiLabels map[string]string, tenant, lokiNamespace, key, value string, client kubernetes.Interface) (*SearchResponse, error) { - lokiLabelsSelector := labels.SelectorFromSet(labels.Set(lokiLabels)) +// GetValiLogs gets logs from the last 1 hour for , from the vali instance in +func (f *ShootFramework) GetValiLogs(ctx context.Context, valiLabels map[string]string, tenant, valiNamespace, key, value string, client kubernetes.Interface) (*SearchResponse, error) { + valiLabelsSelector := labels.SelectorFromSet(labels.Set(valiLabels)) if tenant == "" { tenant = "fake" @@ -57,12 +57,12 @@ func (f *ShootFramework) GetLokiLogs(ctx context.Context, lokiLabels map[string] query := fmt.Sprintf("query=count_over_time({%s=~\"%s\"}[1h])", key, value) - command := fmt.Sprintf("wget 'http://localhost:%d/loki/api/v1/query' -O- '--header=X-Scope-OrgID: %s' --post-data='%s'", lokiPort, tenant, query) + command := fmt.Sprintf("wget 'http://localhost:%d/vali/api/v1/query' -O- '--header=X-Scope-OrgID: %s' --post-data='%s'", valiPort, tenant, query) var reader io.Reader err := retry.Until(ctx, defaultPollInterval, func(ctx context.Context) (bool, error) { var err error - reader, err = PodExecByLabel(ctx, lokiLabelsSelector, lokiLogging, command, lokiNamespace, client) + reader, err = PodExecByLabel(ctx, valiLabelsSelector, valiLogging, command, valiNamespace, client) if err != nil { f.Logger.Error(err, "Error exec'ing into pod") @@ -239,7 +239,7 @@ func setShootGeneralSettings(shoot *gardencorev1beta1.Shoot, cfg *ShootCreationC } if StringSet(cfg.secretBinding) { - shoot.Spec.SecretBindingName = cfg.secretBinding + shoot.Spec.SecretBindingName = pointer.String(cfg.secretBinding) } if StringSet(cfg.shootProviderType) { @@ -284,7 +284,7 @@ func setShootNetworkingSettings(shoot *gardencorev1beta1.Shoot, cfg *ShootCreati } if StringSet(cfg.networkingType) { - shoot.Spec.Networking.Type = cfg.networkingType + shoot.Spec.Networking.Type = pointer.String(cfg.networkingType) } if StringSet(cfg.networkingPods) { diff --git a/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go b/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go index accea541a..eaea9c843 100644 --- a/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go +++ b/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -351,8 +351,8 @@ func RegisterShootCreationFrameworkFlags() *ShootCreationConfig { // ProviderConfigs flags flag.StringVar(&newCfg.infrastructureProviderConfig, "infrastructure-provider-config-filepath", "", "filepath to the provider specific infrastructure config.") - flag.StringVar(&newCfg.controlPlaneProviderConfig, "controlplane-provider-config-filepath", "", "filepath to the provider specific infrastructure config.") - flag.StringVar(&newCfg.networkingProviderConfig, "networking-provider-config-filepath", "", "filepath to the provider specific infrastructure config.") + flag.StringVar(&newCfg.controlPlaneProviderConfig, "controlplane-provider-config-filepath", "", "filepath to the control plane config.") + flag.StringVar(&newCfg.networkingProviderConfig, "networking-provider-config-filepath", "", "filepath to the network provider config.") flag.StringVar(&newCfg.workersConfig, "workers-config-filepath", "", "filepath to the worker config.") // other diff --git a/vendor/github.com/gardener/gardener/test/framework/shootframework.go b/vendor/github.com/gardener/gardener/test/framework/shootframework.go index c048e6dcb..e360f62bc 100644 --- a/vendor/github.com/gardener/gardener/test/framework/shootframework.go +++ b/vendor/github.com/gardener/gardener/test/framework/shootframework.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -35,7 +35,7 @@ import ( "github.com/gardener/gardener/pkg/client/kubernetes" kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" "github.com/gardener/gardener/pkg/utils/retry" - "github.com/gardener/gardener/test/utils/shoots/access" + "github.com/gardener/gardener/test/utils/access" ) var shootCfg *ShootConfig diff --git a/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go b/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go index 03d1151c9..b80a00066 100644 --- a/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go +++ b/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ import ( "github.com/gardener/gardener/pkg/client/kubernetes" "github.com/gardener/gardener/pkg/utils" secretsmanager "github.com/gardener/gardener/pkg/utils/secrets/manager" - "github.com/gardener/gardener/test/utils/shoots/access" + "github.com/gardener/gardener/test/utils/access" ) // ShootMigrationTest represents a shoot migration test. diff --git a/vendor/github.com/gardener/gardener/test/framework/template.go b/vendor/github.com/gardener/gardener/test/framework/template.go index 8f3aed02a..1750e80e6 100644 --- a/vendor/github.com/gardener/gardener/test/framework/template.go +++ b/vendor/github.com/gardener/gardener/test/framework/template.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/test_description.go b/vendor/github.com/gardener/gardener/test/framework/test_description.go index 7849ec85e..98f0c0043 100644 --- a/vendor/github.com/gardener/gardener/test/framework/test_description.go +++ b/vendor/github.com/gardener/gardener/test/framework/test_description.go @@ -1,4 +1,4 @@ -// Copyright 2020 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ type TestDescription struct { // NewTestDescription creates a new test description func NewTestDescription(baseLabel string) TestDescription { return TestDescription{ - labels: sets.New[string](baseLabel), + labels: sets.New(baseLabel), } } diff --git a/vendor/github.com/gardener/gardener/test/framework/test_options.go b/vendor/github.com/gardener/gardener/test/framework/test_options.go index 72c9f9c3d..8274b94d6 100644 --- a/vendor/github.com/gardener/gardener/test/framework/test_options.go +++ b/vendor/github.com/gardener/gardener/test/framework/test_options.go @@ -1,4 +1,4 @@ -// Copyright 2020 Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/framework/utils.go b/vendor/github.com/gardener/gardener/test/framework/utils.go index 36176c02d..e20b7fce8 100644 --- a/vendor/github.com/gardener/gardener/test/framework/utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -124,7 +124,7 @@ func ReadObject(file string, into apimachineryRuntime.Object) error { return err } - _, _, err = serializer.NewCodecFactory(kubernetes.GardenScheme).UniversalDecoder().Decode(data, nil, into) + _, _, err = serializer.NewCodecFactory(kubernetes.GardenScheme).UniversalDeserializer().Decode(data, nil, into) return err } diff --git a/vendor/github.com/gardener/gardener/test/framework/worker_utils.go b/vendor/github.com/gardener/gardener/test/framework/worker_utils.go index 627863ff2..39ada09eb 100644 --- a/vendor/github.com/gardener/gardener/test/framework/worker_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/worker_utils.go @@ -1,4 +1,4 @@ -// Copyright 2019 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/testmachinery/extensions/healthcheck/healthcheck_operation.go b/vendor/github.com/gardener/gardener/test/testmachinery/extensions/healthcheck/healthcheck_operation.go index c621ad7b0..4bcebb8db 100644 --- a/vendor/github.com/gardener/gardener/test/testmachinery/extensions/healthcheck/healthcheck_operation.go +++ b/vendor/github.com/gardener/gardener/test/testmachinery/extensions/healthcheck/healthcheck_operation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/testmachinery/extensions/operation/shoot_operation.go b/vendor/github.com/gardener/gardener/test/testmachinery/extensions/operation/shoot_operation.go index 6121e49c1..f342a812d 100644 --- a/vendor/github.com/gardener/gardener/test/testmachinery/extensions/operation/shoot_operation.go +++ b/vendor/github.com/gardener/gardener/test/testmachinery/extensions/operation/shoot_operation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/utils/shoots/access/adminkubeconfig.go b/vendor/github.com/gardener/gardener/test/utils/access/adminkubeconfig.go similarity index 91% rename from vendor/github.com/gardener/gardener/test/utils/shoots/access/adminkubeconfig.go rename to vendor/github.com/gardener/gardener/test/utils/access/adminkubeconfig.go index 88e8826f3..d40d24993 100644 --- a/vendor/github.com/gardener/gardener/test/utils/shoots/access/adminkubeconfig.go +++ b/vendor/github.com/gardener/gardener/test/utils/access/adminkubeconfig.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/gardener/test/utils/shoots/access/csr.go b/vendor/github.com/gardener/gardener/test/utils/access/csr.go similarity index 72% rename from vendor/github.com/gardener/gardener/test/utils/shoots/access/csr.go rename to vendor/github.com/gardener/gardener/test/utils/access/csr.go index 6d5451782..b588c4107 100644 --- a/vendor/github.com/gardener/gardener/test/utils/shoots/access/csr.go +++ b/vendor/github.com/gardener/gardener/test/utils/access/csr.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -40,9 +40,9 @@ import ( // labelsE2ETestCSRAccess is the set of labels added to all CSRs and ClusterRoleBindings for easy cleanup. var labelsE2ETestCSRAccess = map[string]string{"e2e-test": "csr-access"} -// CreateShootClientFromCSR creates and approves a CSR in the shoot and creates a new shoot client from it. +// CreateTargetClientFromCSR creates and approves a CSR in the shoot and creates a new target client from it. // You should call CleanupObjectsFromCSRAccess to clean up the objects created by this function. -func CreateShootClientFromCSR(ctx context.Context, shootClient kubernetes.Interface, commonName string) (kubernetes.Interface, error) { +func CreateTargetClientFromCSR(ctx context.Context, targetClient kubernetes.Interface, commonName string) (kubernetes.Interface, error) { // use fake key to avoid building complex retry/update logic privateKey, err := secretsutils.FakeGenerateKey(rand.Reader, 4096) if err != nil { @@ -55,7 +55,7 @@ func CreateShootClientFromCSR(ctx context.Context, shootClient kubernetes.Interf } reqName, reqUID, err := csrutil.RequestCertificate( - shootClient.Kubernetes(), + targetClient.Kubernetes(), csrData, commonName, certificatesv1.KubeAPIServerClientSignerName, @@ -72,18 +72,18 @@ func CreateShootClientFromCSR(ctx context.Context, shootClient kubernetes.Interf } csr := &certificatesv1.CertificateSigningRequest{} - if err = shootClient.Client().Get(ctx, client.ObjectKey{Name: reqName}, csr); err != nil { + if err = targetClient.Client().Get(ctx, client.ObjectKey{Name: reqName}, csr); err != nil { return nil, err } patch := client.MergeFrom(csr.DeepCopy()) csr.Labels = utils.MergeStringMaps(csr.Labels, labelsE2ETestCSRAccess) - if err = shootClient.Client().Patch(ctx, csr, patch); err != nil { + if err = targetClient.Client().Patch(ctx, csr, patch); err != nil { return nil, err } clusterRoleBinding := &rbacv1.ClusterRoleBinding{ObjectMeta: metav1.ObjectMeta{Name: commonName}} - if _, err = controllerutils.GetAndCreateOrMergePatch(ctx, shootClient.Client(), clusterRoleBinding, func() error { + if _, err = controllerutils.GetAndCreateOrMergePatch(ctx, targetClient.Client(), clusterRoleBinding, func() error { clusterRoleBinding.Labels = utils.MergeStringMaps(clusterRoleBinding.Labels, labelsE2ETestCSRAccess) clusterRoleBinding.RoleRef = rbacv1.RoleRef{ APIGroup: rbacv1.GroupName, @@ -114,17 +114,17 @@ func CreateShootClientFromCSR(ctx context.Context, shootClient kubernetes.Interf Message: "Auto approving test CertificateSigningRequest", Status: corev1.ConditionTrue, }) - if err := shootClient.Client().SubResource("approval").Update(ctx, csr); err != nil { + if err := targetClient.Client().SubResource("approval").Update(ctx, csr); err != nil { return nil, err } } - certData, err := csrutil.WaitForCertificate(ctx, shootClient.Kubernetes(), reqName, reqUID) + certData, err := csrutil.WaitForCertificate(ctx, targetClient.Kubernetes(), reqName, reqUID) if err != nil { return nil, err } - r := shootClient.RESTConfig() + r := targetClient.RESTConfig() restConfig := &rest.Config{ Host: r.Host, TLSClientConfig: rest.TLSClientConfig{ @@ -137,11 +137,11 @@ func CreateShootClientFromCSR(ctx context.Context, shootClient kubernetes.Interf return kubernetes.NewWithConfig(kubernetes.WithRESTConfig(restConfig), kubernetes.WithDisabledCachedClient()) } -// CleanupObjectsFromCSRAccess cleans up all objects in the shoot created by all calls to CreateShootClientFromCSR. -func CleanupObjectsFromCSRAccess(ctx context.Context, shootClient kubernetes.Interface) error { +// CleanupObjectsFromCSRAccess cleans up all objects in the target created by all calls to CreateTargetClientFromCSR. +func CleanupObjectsFromCSRAccess(ctx context.Context, targetClient kubernetes.Interface) error { return flow.Parallel(func(ctx context.Context) error { - return shootClient.Client().DeleteAllOf(ctx, &certificatesv1.CertificateSigningRequest{}, client.MatchingLabels(labelsE2ETestCSRAccess)) + return targetClient.Client().DeleteAllOf(ctx, &certificatesv1.CertificateSigningRequest{}, client.MatchingLabels(labelsE2ETestCSRAccess)) }, func(ctx context.Context) error { - return shootClient.Client().DeleteAllOf(ctx, &rbacv1.ClusterRoleBinding{}, client.MatchingLabels(labelsE2ETestCSRAccess)) + return targetClient.Client().DeleteAllOf(ctx, &rbacv1.ClusterRoleBinding{}, client.MatchingLabels(labelsE2ETestCSRAccess)) })(ctx) } diff --git a/vendor/github.com/gardener/gardener/test/utils/shoots/access/serviceaccount.go b/vendor/github.com/gardener/gardener/test/utils/access/serviceaccount.go similarity index 77% rename from vendor/github.com/gardener/gardener/test/utils/shoots/access/serviceaccount.go rename to vendor/github.com/gardener/gardener/test/utils/access/serviceaccount.go index 4a84181b9..9fab2e917 100644 --- a/vendor/github.com/gardener/gardener/test/utils/shoots/access/serviceaccount.go +++ b/vendor/github.com/gardener/gardener/test/utils/access/serviceaccount.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -41,11 +41,11 @@ const namespaceE2ETestServiceAccountTokenAccess = metav1.NamespaceDefault // ClusterRoleBindings for easy cleanup. var labelsE2ETestDynamicServiceAccountTokenAccess = map[string]string{"e2e-test": "serviceaccount-dynamic-access"} -// CreateShootClientFromDynamicServiceAccountToken creates a ServiceAccount, uses the kube-apiserver's TokenRequest API -// to request a token for it, and then creates a new shoot client from it. +// CreateTargetClientFromDynamicServiceAccountToken creates a ServiceAccount, uses the kube-apiserver's TokenRequest API +// to request a token for it, and then creates a new target client from it. // You should call CleanupObjectsFromDynamicServiceAccountTokenAccess to clean up the objects created by this function. -func CreateShootClientFromDynamicServiceAccountToken(ctx context.Context, shootClient kubernetes.Interface, name string) (kubernetes.Interface, error) { - return createShootClientFromServiceAccount(ctx, shootClient, name, labelsE2ETestDynamicServiceAccountTokenAccess, func(serviceAccount *corev1.ServiceAccount) (string, error) { +func CreateTargetClientFromDynamicServiceAccountToken(ctx context.Context, targetClient kubernetes.Interface, name string) (kubernetes.Interface, error) { + return createTargetClientFromServiceAccount(ctx, targetClient, name, labelsE2ETestDynamicServiceAccountTokenAccess, func(serviceAccount *corev1.ServiceAccount) (string, error) { tokenRequest := &authenticationv1.TokenRequest{ Spec: authenticationv1.TokenRequestSpec{ Audiences: []string{v1beta1constants.GardenerAudience}, @@ -53,7 +53,7 @@ func CreateShootClientFromDynamicServiceAccountToken(ctx context.Context, shootC }, } - if err := shootClient.Client().SubResource("token").Create(ctx, serviceAccount, tokenRequest); err != nil { + if err := targetClient.Client().SubResource("token").Create(ctx, serviceAccount, tokenRequest); err != nil { return "", err } @@ -61,13 +61,13 @@ func CreateShootClientFromDynamicServiceAccountToken(ctx context.Context, shootC }) } -// CleanupObjectsFromDynamicServiceAccountTokenAccess cleans up all objects in the shoot created by all calls to -// CreateShootClientFromDynamicServiceAccountToken. -func CleanupObjectsFromDynamicServiceAccountTokenAccess(ctx context.Context, shootClient kubernetes.Interface) error { +// CleanupObjectsFromDynamicServiceAccountTokenAccess cleans up all objects in the target created by all calls to +// CreateTargetClientFromDynamicServiceAccountToken. +func CleanupObjectsFromDynamicServiceAccountTokenAccess(ctx context.Context, targetClient kubernetes.Interface) error { return flow.Parallel(func(ctx context.Context) error { - return shootClient.Client().DeleteAllOf(ctx, &corev1.ServiceAccount{}, client.InNamespace(namespaceE2ETestServiceAccountTokenAccess), client.MatchingLabels(labelsE2ETestDynamicServiceAccountTokenAccess)) + return targetClient.Client().DeleteAllOf(ctx, &corev1.ServiceAccount{}, client.InNamespace(namespaceE2ETestServiceAccountTokenAccess), client.MatchingLabels(labelsE2ETestDynamicServiceAccountTokenAccess)) }, func(ctx context.Context) error { - return shootClient.Client().DeleteAllOf(ctx, &rbacv1.ClusterRoleBinding{}, client.MatchingLabels(labelsE2ETestDynamicServiceAccountTokenAccess)) + return targetClient.Client().DeleteAllOf(ctx, &rbacv1.ClusterRoleBinding{}, client.MatchingLabels(labelsE2ETestDynamicServiceAccountTokenAccess)) })(ctx) } @@ -79,7 +79,7 @@ var labelsE2ETestStaticServiceAccountToken = map[string]string{"e2e-test": "serv // by kube-controller-manager), and then creates a new shoot client from it. // You should call CleanupObjectsFromStaticServiceAccountTokenAccess to clean up the objects created by this function. func CreateShootClientFromStaticServiceAccountToken(ctx context.Context, shootClient kubernetes.Interface, name string) (kubernetes.Interface, error) { - return createShootClientFromServiceAccount(ctx, shootClient, name, labelsE2ETestStaticServiceAccountToken, func(serviceAccount *corev1.ServiceAccount) (string, error) { + return createTargetClientFromServiceAccount(ctx, shootClient, name, labelsE2ETestStaticServiceAccountToken, func(serviceAccount *corev1.ServiceAccount) (string, error) { secret := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: serviceAccount.Namespace}} if _, err := controllerutils.GetAndCreateOrMergePatch(ctx, shootClient.Client(), secret, func() error { secret.Labels = utils.MergeStringMaps(secret.Labels, labelsE2ETestStaticServiceAccountToken) @@ -123,9 +123,9 @@ func CleanupObjectsFromStaticServiceAccountTokenAccess(ctx context.Context, shoo })(ctx) } -func createShootClientFromServiceAccount( +func createTargetClientFromServiceAccount( ctx context.Context, - shootClient kubernetes.Interface, + targetClient kubernetes.Interface, name string, labels map[string]string, getTokenForServiceAccount func(*corev1.ServiceAccount) (string, error), @@ -134,7 +134,7 @@ func createShootClientFromServiceAccount( error, ) { serviceAccount := &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespaceE2ETestServiceAccountTokenAccess}} - if _, err := controllerutils.GetAndCreateOrMergePatch(ctx, shootClient.Client(), serviceAccount, func() error { + if _, err := controllerutils.GetAndCreateOrMergePatch(ctx, targetClient.Client(), serviceAccount, func() error { serviceAccount.Labels = utils.MergeStringMaps(serviceAccount.Labels, labels) return nil }); err != nil { @@ -142,7 +142,7 @@ func createShootClientFromServiceAccount( } clusterRoleBinding := &rbacv1.ClusterRoleBinding{ObjectMeta: metav1.ObjectMeta{Name: name}} - if _, err := controllerutils.GetAndCreateOrMergePatch(ctx, shootClient.Client(), clusterRoleBinding, func() error { + if _, err := controllerutils.GetAndCreateOrMergePatch(ctx, targetClient.Client(), clusterRoleBinding, func() error { clusterRoleBinding.Labels = utils.MergeStringMaps(serviceAccount.Labels, labels) clusterRoleBinding.RoleRef = rbacv1.RoleRef{ APIGroup: rbacv1.GroupName, @@ -164,7 +164,7 @@ func createShootClientFromServiceAccount( return nil, err } - r := shootClient.RESTConfig() + r := targetClient.RESTConfig() restConfig := &rest.Config{ Host: r.Host, TLSClientConfig: rest.TLSClientConfig{CAData: r.CAData}, diff --git a/vendor/github.com/gardener/gardener/test/utils/shoots/access/statictokenkubeconfig.go b/vendor/github.com/gardener/gardener/test/utils/access/statictokenkubeconfig.go similarity index 87% rename from vendor/github.com/gardener/gardener/test/utils/shoots/access/statictokenkubeconfig.go rename to vendor/github.com/gardener/gardener/test/utils/access/statictokenkubeconfig.go index 187b0fec3..5fffc8835 100644 --- a/vendor/github.com/gardener/gardener/test/utils/shoots/access/statictokenkubeconfig.go +++ b/vendor/github.com/gardener/gardener/test/utils/access/statictokenkubeconfig.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go index 2b2a817fe..46e1d241b 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go @@ -167,9 +167,6 @@ type CurrentStatus struct { // MachineStatus holds the most recently observed status of Machine. type MachineStatus struct { - // Node string - Node string - // Conditions of this machine, same as node Conditions []corev1.NodeCondition diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go index 4628562ec..e0eb04f0a 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go @@ -27,13 +27,20 @@ import ( // IF YOU MODIFY ANY OF THE TYPES HERE COPY THEM TO ../types.go // AND RUN ./hack/generate-code +// NodeLabelKey is the key for node label on machine object +const ( + NodeLabelKey string = "node" +) + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:shortName="mc" // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.currentStatus.phase`,description="Current status of the machine." // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`,description="CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" // +kubebuilder:printcolumn:name="Node",type=string,JSONPath=`.metadata.labels.node`,description="Node backing the machine object" +// +kubebuilder:printcolumn:name="ProviderID",type=string,JSONPath=`.spec.providerID`,description="ProviderID of the infra instance backing the machine object",priority=1 // Machine is the representation of a physical or virtual machine. type Machine struct { @@ -95,9 +102,6 @@ type NodeTemplateSpec struct { // MachineStatus holds the most recently observed status of Machine. type MachineStatus struct { - // Node string - Node string `json:"node,omitempty"` - // Conditions of this machine, same as node Conditions []corev1.NodeCondition `json:"conditions,omitempty"` diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go index 678175745..6d525c338 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go @@ -27,6 +27,7 @@ import ( // +genclient // +genclient:noStatus // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:shortName="mcc" // +kubebuilder:object:root=true // MachineClass can be used to templatize and re-use provider configuration diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go index 6f5f49a3f..1161e7180 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go @@ -26,6 +26,7 @@ import ( // +genclient // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:shortName="mcd" // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas @@ -34,7 +35,8 @@ import ( // +kubebuilder:printcolumn:name="Up-to-date",type=integer,JSONPath=`.status.updatedReplicas`,description="Total number of non-terminated machines targeted by this machine deployment that have the desired template spec." // +kubebuilder:printcolumn:name="Available",type=integer,JSONPath=`.status.availableReplicas`,description="Total number of available machines (ready for at least minReadySeconds) targeted by this machine deployment." // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`,description="CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" -// Deployment enables declarative updates for machines and MachineSets. + +// MachineDeployment enables declarative updates for machines and MachineSets. type MachineDeployment struct { metav1.TypeMeta `json:",inline"` // Standard object metadata. @@ -96,7 +98,7 @@ type MachineDeploymentSpec struct { // process failed MachineDeployments and a condition with a ProgressDeadlineExceeded // reason will be surfaced in the MachineDeployment status. Note that progress will // not be estimated during the time a MachineDeployment is paused. This is not set - // by default. + // by default, which is treated as infinite deadline. // +optional ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty"` } @@ -217,8 +219,8 @@ const ( // Progressing means the MachineDeployment is progressing. Progress for a MachineDeployment is // considered when a new machine set is created or adopted, and when new machines scale - // up or old machines scale down. Progress is not estimated for paused MachineDeployments or - // when progressDeadlineSeconds is not specified. + // up or old machines scale down. Progress is not estimated for paused MachineDeployments. It is also updated + // if progressDeadlineSeconds is not specified(treated as infinite deadline), in which case it would never be updated to "false". MachineDeploymentProgressing MachineDeploymentConditionType = "Progressing" // ReplicaFailure is added in a MachineDeployment when one of its machines fails to be created diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go index 6e349ed14..d2486e87f 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go @@ -23,6 +23,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale +// +kubebuilder:resource:shortName="mcs" // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go index c7f8746e3..c1d4a9a8a 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go @@ -2547,7 +2547,6 @@ func Convert_machine_MachineSpec_To_v1alpha1_MachineSpec(in *machine.MachineSpec } func autoConvert_v1alpha1_MachineStatus_To_machine_MachineStatus(in *MachineStatus, out *machine.MachineStatus, s conversion.Scope) error { - out.Node = in.Node out.Conditions = *(*[]v1.NodeCondition)(unsafe.Pointer(&in.Conditions)) if err := Convert_v1alpha1_LastOperation_To_machine_LastOperation(&in.LastOperation, &out.LastOperation, s); err != nil { return err @@ -2565,7 +2564,6 @@ func Convert_v1alpha1_MachineStatus_To_machine_MachineStatus(in *MachineStatus, } func autoConvert_machine_MachineStatus_To_v1alpha1_MachineStatus(in *machine.MachineStatus, out *MachineStatus, s conversion.Scope) error { - out.Node = in.Node out.Conditions = *(*[]v1.NodeCondition)(unsafe.Pointer(&in.Conditions)) if err := Convert_machine_LastOperation_To_v1alpha1_LastOperation(&in.LastOperation, &out.LastOperation, s); err != nil { return err diff --git a/vendor/github.com/go-logr/logr/.golangci.yaml b/vendor/github.com/go-logr/logr/.golangci.yaml index 94ff801df..0cffafa7b 100644 --- a/vendor/github.com/go-logr/logr/.golangci.yaml +++ b/vendor/github.com/go-logr/logr/.golangci.yaml @@ -6,7 +6,6 @@ linters: disable-all: true enable: - asciicheck - - deadcode - errcheck - forcetypeassert - gocritic @@ -18,10 +17,8 @@ linters: - misspell - revive - staticcheck - - structcheck - typecheck - unused - - varcheck issues: exclude-use-default: false diff --git a/vendor/github.com/go-logr/logr/discard.go b/vendor/github.com/go-logr/logr/discard.go index 9d92a38f1..99fe8be93 100644 --- a/vendor/github.com/go-logr/logr/discard.go +++ b/vendor/github.com/go-logr/logr/discard.go @@ -20,35 +20,5 @@ package logr // used whenever the caller is not interested in the logs. Logger instances // produced by this function always compare as equal. func Discard() Logger { - return Logger{ - level: 0, - sink: discardLogSink{}, - } -} - -// discardLogSink is a LogSink that discards all messages. -type discardLogSink struct{} - -// Verify that it actually implements the interface -var _ LogSink = discardLogSink{} - -func (l discardLogSink) Init(RuntimeInfo) { -} - -func (l discardLogSink) Enabled(int) bool { - return false -} - -func (l discardLogSink) Info(int, string, ...interface{}) { -} - -func (l discardLogSink) Error(error, string, ...interface{}) { -} - -func (l discardLogSink) WithValues(...interface{}) LogSink { - return l -} - -func (l discardLogSink) WithName(string) LogSink { - return l + return New(nil) } diff --git a/vendor/github.com/go-logr/logr/funcr/funcr.go b/vendor/github.com/go-logr/logr/funcr/funcr.go index 7accdb0c4..e52f0cd01 100644 --- a/vendor/github.com/go-logr/logr/funcr/funcr.go +++ b/vendor/github.com/go-logr/logr/funcr/funcr.go @@ -21,13 +21,13 @@ limitations under the License. // github.com/go-logr/logr.LogSink with output through an arbitrary // "write" function. See New and NewJSON for details. // -// Custom LogSinks +// # Custom LogSinks // // For users who need more control, a funcr.Formatter can be embedded inside // your own custom LogSink implementation. This is useful when the LogSink // needs to implement additional methods, for example. // -// Formatting +// # Formatting // // This will respect logr.Marshaler, fmt.Stringer, and error interfaces for // values which are being logged. When rendering a struct, funcr will use Go's @@ -37,6 +37,7 @@ package funcr import ( "bytes" "encoding" + "encoding/json" "fmt" "path/filepath" "reflect" @@ -217,7 +218,7 @@ func newFormatter(opts Options, outfmt outputFormat) Formatter { prefix: "", values: nil, depth: 0, - opts: opts, + opts: &opts, } return f } @@ -231,7 +232,7 @@ type Formatter struct { values []interface{} valuesStr string depth int - opts Options + opts *Options } // outputFormat indicates which outputFormat to use. @@ -447,6 +448,7 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s if flags&flagRawStruct == 0 { buf.WriteByte('{') } + printComma := false // testing i>0 is not enough because of JSON omitted fields for i := 0; i < t.NumField(); i++ { fld := t.Field(i) if fld.PkgPath != "" { @@ -478,9 +480,10 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s if omitempty && isEmpty(v.Field(i)) { continue } - if i > 0 { + if printComma { buf.WriteByte(',') } + printComma = true // if we got here, we are rendering a field if fld.Anonymous && fld.Type.Kind() == reflect.Struct && name == "" { buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), flags|flagRawStruct, depth+1)) continue @@ -500,6 +503,20 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s } return buf.String() case reflect.Slice, reflect.Array: + // If this is outputing as JSON make sure this isn't really a json.RawMessage. + // If so just emit "as-is" and don't pretty it as that will just print + // it as [X,Y,Z,...] which isn't terribly useful vs the string form you really want. + if f.outputFormat == outputJSON { + if rm, ok := value.(json.RawMessage); ok { + // If it's empty make sure we emit an empty value as the array style would below. + if len(rm) > 0 { + buf.Write(rm) + } else { + buf.WriteString("null") + } + return buf.String() + } + } buf.WriteByte('[') for i := 0; i < v.Len(); i++ { if i > 0 { diff --git a/vendor/github.com/go-logr/logr/logr.go b/vendor/github.com/go-logr/logr/logr.go index c3b56b3d2..e027aea3f 100644 --- a/vendor/github.com/go-logr/logr/logr.go +++ b/vendor/github.com/go-logr/logr/logr.go @@ -21,7 +21,7 @@ limitations under the License. // to back that API. Packages in the Go ecosystem can depend on this package, // while callers can implement logging with whatever backend is appropriate. // -// Usage +// # Usage // // Logging is done using a Logger instance. Logger is a concrete type with // methods, which defers the actual logging to a LogSink interface. The main @@ -30,16 +30,20 @@ limitations under the License. // "structured logging". // // With Go's standard log package, we might write: -// log.Printf("setting target value %s", targetValue) +// +// log.Printf("setting target value %s", targetValue) // // With logr's structured logging, we'd write: -// logger.Info("setting target", "value", targetValue) +// +// logger.Info("setting target", "value", targetValue) // // Errors are much the same. Instead of: -// log.Printf("failed to open the pod bay door for user %s: %v", user, err) +// +// log.Printf("failed to open the pod bay door for user %s: %v", user, err) // // We'd write: -// logger.Error(err, "failed to open the pod bay door", "user", user) +// +// logger.Error(err, "failed to open the pod bay door", "user", user) // // Info() and Error() are very similar, but they are separate methods so that // LogSink implementations can choose to do things like attach additional @@ -47,7 +51,7 @@ limitations under the License. // always logged, regardless of the current verbosity. If there is no error // instance available, passing nil is valid. // -// Verbosity +// # Verbosity // // Often we want to log information only when the application in "verbose // mode". To write log lines that are more verbose, Logger has a V() method. @@ -58,20 +62,22 @@ limitations under the License. // Error messages do not have a verbosity level and are always logged. // // Where we might have written: -// if flVerbose >= 2 { -// log.Printf("an unusual thing happened") -// } +// +// if flVerbose >= 2 { +// log.Printf("an unusual thing happened") +// } // // We can write: -// logger.V(2).Info("an unusual thing happened") // -// Logger Names +// logger.V(2).Info("an unusual thing happened") +// +// # Logger Names // // Logger instances can have name strings so that all messages logged through // that instance have additional context. For example, you might want to add // a subsystem name: // -// logger.WithName("compactor").Info("started", "time", time.Now()) +// logger.WithName("compactor").Info("started", "time", time.Now()) // // The WithName() method returns a new Logger, which can be passed to // constructors or other functions for further use. Repeated use of WithName() @@ -82,25 +88,27 @@ limitations under the License. // joining operation (e.g. whitespace, commas, periods, slashes, brackets, // quotes, etc). // -// Saved Values +// # Saved Values // // Logger instances can store any number of key/value pairs, which will be // logged alongside all messages logged through that instance. For example, // you might want to create a Logger instance per managed object: // // With the standard log package, we might write: -// log.Printf("decided to set field foo to value %q for object %s/%s", -// targetValue, object.Namespace, object.Name) +// +// log.Printf("decided to set field foo to value %q for object %s/%s", +// targetValue, object.Namespace, object.Name) // // With logr we'd write: -// // Elsewhere: set up the logger to log the object name. -// obj.logger = mainLogger.WithValues( -// "name", obj.name, "namespace", obj.namespace) // -// // later on... -// obj.logger.Info("setting foo", "value", targetValue) +// // Elsewhere: set up the logger to log the object name. +// obj.logger = mainLogger.WithValues( +// "name", obj.name, "namespace", obj.namespace) +// +// // later on... +// obj.logger.Info("setting foo", "value", targetValue) // -// Best Practices +// # Best Practices // // Logger has very few hard rules, with the goal that LogSink implementations // might have a lot of freedom to differentiate. There are, however, some @@ -124,15 +132,15 @@ limitations under the License. // around. For cases where passing a logger is optional, a pointer to Logger // should be used. // -// Key Naming Conventions +// # Key Naming Conventions // // Keys are not strictly required to conform to any specification or regex, but // it is recommended that they: -// * be human-readable and meaningful (not auto-generated or simple ordinals) -// * be constant (not dependent on input data) -// * contain only printable characters -// * not contain whitespace or punctuation -// * use lower case for simple keys and lowerCamelCase for more complex ones +// - be human-readable and meaningful (not auto-generated or simple ordinals) +// - be constant (not dependent on input data) +// - contain only printable characters +// - not contain whitespace or punctuation +// - use lower case for simple keys and lowerCamelCase for more complex ones // // These guidelines help ensure that log data is processed properly regardless // of the log implementation. For example, log implementations will try to @@ -141,51 +149,54 @@ limitations under the License. // While users are generally free to use key names of their choice, it's // generally best to avoid using the following keys, as they're frequently used // by implementations: -// * "caller": the calling information (file/line) of a particular log line -// * "error": the underlying error value in the `Error` method -// * "level": the log level -// * "logger": the name of the associated logger -// * "msg": the log message -// * "stacktrace": the stack trace associated with a particular log line or -// error (often from the `Error` message) -// * "ts": the timestamp for a log line +// - "caller": the calling information (file/line) of a particular log line +// - "error": the underlying error value in the `Error` method +// - "level": the log level +// - "logger": the name of the associated logger +// - "msg": the log message +// - "stacktrace": the stack trace associated with a particular log line or +// error (often from the `Error` message) +// - "ts": the timestamp for a log line // // Implementations are encouraged to make use of these keys to represent the // above concepts, when necessary (for example, in a pure-JSON output form, it // would be necessary to represent at least message and timestamp as ordinary // named values). // -// Break Glass +// # Break Glass // // Implementations may choose to give callers access to the underlying // logging implementation. The recommended pattern for this is: -// // Underlier exposes access to the underlying logging implementation. -// // Since callers only have a logr.Logger, they have to know which -// // implementation is in use, so this interface is less of an abstraction -// // and more of way to test type conversion. -// type Underlier interface { -// GetUnderlying() -// } +// +// // Underlier exposes access to the underlying logging implementation. +// // Since callers only have a logr.Logger, they have to know which +// // implementation is in use, so this interface is less of an abstraction +// // and more of way to test type conversion. +// type Underlier interface { +// GetUnderlying() +// } // // Logger grants access to the sink to enable type assertions like this: -// func DoSomethingWithImpl(log logr.Logger) { -// if underlier, ok := log.GetSink()(impl.Underlier) { -// implLogger := underlier.GetUnderlying() -// ... -// } -// } +// +// func DoSomethingWithImpl(log logr.Logger) { +// if underlier, ok := log.GetSink().(impl.Underlier); ok { +// implLogger := underlier.GetUnderlying() +// ... +// } +// } // // Custom `With*` functions can be implemented by copying the complete // Logger struct and replacing the sink in the copy: -// // WithFooBar changes the foobar parameter in the log sink and returns a -// // new logger with that modified sink. It does nothing for loggers where -// // the sink doesn't support that parameter. -// func WithFoobar(log logr.Logger, foobar int) logr.Logger { -// if foobarLogSink, ok := log.GetSink()(FoobarSink); ok { -// log = log.WithSink(foobarLogSink.WithFooBar(foobar)) -// } -// return log -// } +// +// // WithFooBar changes the foobar parameter in the log sink and returns a +// // new logger with that modified sink. It does nothing for loggers where +// // the sink doesn't support that parameter. +// func WithFoobar(log logr.Logger, foobar int) logr.Logger { +// if foobarLogSink, ok := log.GetSink().(FoobarSink); ok { +// log = log.WithSink(foobarLogSink.WithFooBar(foobar)) +// } +// return log +// } // // Don't use New to construct a new Logger with a LogSink retrieved from an // existing Logger. Source code attribution might not work correctly and @@ -201,11 +212,14 @@ import ( ) // New returns a new Logger instance. This is primarily used by libraries -// implementing LogSink, rather than end users. +// implementing LogSink, rather than end users. Passing a nil sink will create +// a Logger which discards all log lines. func New(sink LogSink) Logger { logger := Logger{} logger.setSink(sink) - sink.Init(runtimeInfo) + if sink != nil { + sink.Init(runtimeInfo) + } return logger } @@ -244,7 +258,7 @@ type Logger struct { // Enabled tests whether this Logger is enabled. For example, commandline // flags might be used to set the logging verbosity and disable some info logs. func (l Logger) Enabled() bool { - return l.sink.Enabled(l.level) + return l.sink != nil && l.sink.Enabled(l.level) } // Info logs a non-error message with the given key/value pairs as context. @@ -254,6 +268,9 @@ func (l Logger) Enabled() bool { // information. The key/value pairs must alternate string keys and arbitrary // values. func (l Logger) Info(msg string, keysAndValues ...interface{}) { + if l.sink == nil { + return + } if l.Enabled() { if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { withHelper.GetCallStackHelper()() @@ -273,6 +290,9 @@ func (l Logger) Info(msg string, keysAndValues ...interface{}) { // triggered this log line, if present. The err parameter is optional // and nil may be passed instead of an error instance. func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) { + if l.sink == nil { + return + } if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { withHelper.GetCallStackHelper()() } @@ -284,6 +304,9 @@ func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) { // level means a log message is less important. Negative V-levels are treated // as 0. func (l Logger) V(level int) Logger { + if l.sink == nil { + return l + } if level < 0 { level = 0 } @@ -294,6 +317,9 @@ func (l Logger) V(level int) Logger { // WithValues returns a new Logger instance with additional key/value pairs. // See Info for documentation on how key/value pairs work. func (l Logger) WithValues(keysAndValues ...interface{}) Logger { + if l.sink == nil { + return l + } l.setSink(l.sink.WithValues(keysAndValues...)) return l } @@ -304,6 +330,9 @@ func (l Logger) WithValues(keysAndValues ...interface{}) Logger { // contain only letters, digits, and hyphens (see the package documentation for // more information). func (l Logger) WithName(name string) Logger { + if l.sink == nil { + return l + } l.setSink(l.sink.WithName(name)) return l } @@ -324,6 +353,9 @@ func (l Logger) WithName(name string) Logger { // WithCallDepth(1) because it works with implementions that support the // CallDepthLogSink and/or CallStackHelperLogSink interfaces. func (l Logger) WithCallDepth(depth int) Logger { + if l.sink == nil { + return l + } if withCallDepth, ok := l.sink.(CallDepthLogSink); ok { l.setSink(withCallDepth.WithCallDepth(depth)) } @@ -345,6 +377,9 @@ func (l Logger) WithCallDepth(depth int) Logger { // implementation does not support either of these, the original Logger will be // returned. func (l Logger) WithCallStackHelper() (func(), Logger) { + if l.sink == nil { + return func() {}, l + } var helper func() if withCallDepth, ok := l.sink.(CallDepthLogSink); ok { l.setSink(withCallDepth.WithCallDepth(1)) @@ -357,6 +392,11 @@ func (l Logger) WithCallStackHelper() (func(), Logger) { return helper, l } +// IsZero returns true if this logger is an uninitialized zero value +func (l Logger) IsZero() bool { + return l.sink == nil +} + // contextKey is how we find Loggers in a context.Context. type contextKey struct{} @@ -442,7 +482,7 @@ type LogSink interface { WithName(name string) LogSink } -// CallDepthLogSink represents a Logger that knows how to climb the call stack +// CallDepthLogSink represents a LogSink that knows how to climb the call stack // to identify the original call site and can offset the depth by a specified // number of frames. This is useful for users who have helper functions // between the "real" call site and the actual calls to Logger methods. @@ -467,7 +507,7 @@ type CallDepthLogSink interface { WithCallDepth(depth int) LogSink } -// CallStackHelperLogSink represents a Logger that knows how to climb +// CallStackHelperLogSink represents a LogSink that knows how to climb // the call stack to identify the original call site and can skip // intermediate helper functions if they mark themselves as // helper. Go's testing package uses that approach. diff --git a/vendor/github.com/go-openapi/errors/.gitattributes b/vendor/github.com/go-openapi/errors/.gitattributes new file mode 100644 index 000000000..a0717e4b3 --- /dev/null +++ b/vendor/github.com/go-openapi/errors/.gitattributes @@ -0,0 +1 @@ +*.go text eol=lf \ No newline at end of file diff --git a/vendor/github.com/go-openapi/errors/.gitignore b/vendor/github.com/go-openapi/errors/.gitignore new file mode 100644 index 000000000..dd91ed6a0 --- /dev/null +++ b/vendor/github.com/go-openapi/errors/.gitignore @@ -0,0 +1,2 @@ +secrets.yml +coverage.out diff --git a/vendor/github.com/go-openapi/errors/.golangci.yml b/vendor/github.com/go-openapi/errors/.golangci.yml new file mode 100644 index 000000000..4e1fc0c7d --- /dev/null +++ b/vendor/github.com/go-openapi/errors/.golangci.yml @@ -0,0 +1,48 @@ +linters-settings: + govet: + check-shadowing: true + golint: + min-confidence: 0 + gocyclo: + min-complexity: 30 + maligned: + suggest-new: true + dupl: + threshold: 100 + goconst: + min-len: 2 + min-occurrences: 4 +linters: + enable-all: true + disable: + - maligned + - lll + - gochecknoglobals + - godox + - gocognit + - whitespace + - wsl + - funlen + - gochecknoglobals + - gochecknoinits + - scopelint + - wrapcheck + - exhaustivestruct + - exhaustive + - nlreturn + - testpackage + - gci + - gofumpt + - goerr113 + - gomnd + - tparallel + - nestif + - godot + - errorlint + - paralleltest + - tparallel + - cyclop + - errname + - varnamelen + - exhaustruct + - maintidx diff --git a/vendor/github.com/go-openapi/errors/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/errors/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..9322b065e --- /dev/null +++ b/vendor/github.com/go-openapi/errors/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at ivan+abuse@flanders.co.nz. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/errors/LICENSE b/vendor/github.com/go-openapi/errors/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/go-openapi/errors/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/go-openapi/errors/README.md b/vendor/github.com/go-openapi/errors/README.md new file mode 100644 index 000000000..4aac049e6 --- /dev/null +++ b/vendor/github.com/go-openapi/errors/README.md @@ -0,0 +1,11 @@ +# OpenAPI errors + +[![Build Status](https://travis-ci.org/go-openapi/errors.svg?branch=master)](https://travis-ci.org/go-openapi/errors) +[![codecov](https://codecov.io/gh/go-openapi/errors/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/errors) +[![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) +[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/errors/master/LICENSE) +[![Go Reference](https://pkg.go.dev/badge/github.com/go-openapi/errors.svg)](https://pkg.go.dev/github.com/go-openapi/errors) +[![GolangCI](https://golangci.com/badges/github.com/go-openapi/errors.svg)](https://golangci.com) +[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/errors)](https://goreportcard.com/report/github.com/go-openapi/errors) + +Shared errors and error interface used throughout the various libraries found in the go-openapi toolkit. diff --git a/vendor/github.com/go-openapi/errors/api.go b/vendor/github.com/go-openapi/errors/api.go new file mode 100644 index 000000000..77f1f92c5 --- /dev/null +++ b/vendor/github.com/go-openapi/errors/api.go @@ -0,0 +1,182 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package errors + +import ( + "encoding/json" + "fmt" + "net/http" + "reflect" + "strings" +) + +// DefaultHTTPCode is used when the error Code cannot be used as an HTTP code. +var DefaultHTTPCode = http.StatusUnprocessableEntity + +// Error represents a error interface all swagger framework errors implement +type Error interface { + error + Code() int32 +} + +type apiError struct { + code int32 + message string +} + +func (a *apiError) Error() string { + return a.message +} + +func (a *apiError) Code() int32 { + return a.code +} + +// MarshalJSON implements the JSON encoding interface +func (a apiError) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]interface{}{ + "code": a.code, + "message": a.message, + }) +} + +// New creates a new API error with a code and a message +func New(code int32, message string, args ...interface{}) Error { + if len(args) > 0 { + return &apiError{code, fmt.Sprintf(message, args...)} + } + return &apiError{code, message} +} + +// NotFound creates a new not found error +func NotFound(message string, args ...interface{}) Error { + if message == "" { + message = "Not found" + } + return New(http.StatusNotFound, fmt.Sprintf(message, args...)) +} + +// NotImplemented creates a new not implemented error +func NotImplemented(message string) Error { + return New(http.StatusNotImplemented, message) +} + +// MethodNotAllowedError represents an error for when the path matches but the method doesn't +type MethodNotAllowedError struct { + code int32 + Allowed []string + message string +} + +func (m *MethodNotAllowedError) Error() string { + return m.message +} + +// Code the error code +func (m *MethodNotAllowedError) Code() int32 { + return m.code +} + +// MarshalJSON implements the JSON encoding interface +func (m MethodNotAllowedError) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]interface{}{ + "code": m.code, + "message": m.message, + "allowed": m.Allowed, + }) +} + +func errorAsJSON(err Error) []byte { + //nolint:errchkjson + b, _ := json.Marshal(struct { + Code int32 `json:"code"` + Message string `json:"message"` + }{err.Code(), err.Error()}) + return b +} + +func flattenComposite(errs *CompositeError) *CompositeError { + var res []error + for _, er := range errs.Errors { + switch e := er.(type) { + case *CompositeError: + if len(e.Errors) > 0 { + flat := flattenComposite(e) + if len(flat.Errors) > 0 { + res = append(res, flat.Errors...) + } + } + default: + if e != nil { + res = append(res, e) + } + } + } + return CompositeValidationError(res...) +} + +// MethodNotAllowed creates a new method not allowed error +func MethodNotAllowed(requested string, allow []string) Error { + msg := fmt.Sprintf("method %s is not allowed, but [%s] are", requested, strings.Join(allow, ",")) + return &MethodNotAllowedError{code: http.StatusMethodNotAllowed, Allowed: allow, message: msg} +} + +// ServeError the error handler interface implementation +func ServeError(rw http.ResponseWriter, r *http.Request, err error) { + rw.Header().Set("Content-Type", "application/json") + switch e := err.(type) { + case *CompositeError: + er := flattenComposite(e) + // strips composite errors to first element only + if len(er.Errors) > 0 { + ServeError(rw, r, er.Errors[0]) + } else { + // guard against empty CompositeError (invalid construct) + ServeError(rw, r, nil) + } + case *MethodNotAllowedError: + rw.Header().Add("Allow", strings.Join(e.Allowed, ",")) + rw.WriteHeader(asHTTPCode(int(e.Code()))) + if r == nil || r.Method != http.MethodHead { + _, _ = rw.Write(errorAsJSON(e)) + } + case Error: + value := reflect.ValueOf(e) + if value.Kind() == reflect.Ptr && value.IsNil() { + rw.WriteHeader(http.StatusInternalServerError) + _, _ = rw.Write(errorAsJSON(New(http.StatusInternalServerError, "Unknown error"))) + return + } + rw.WriteHeader(asHTTPCode(int(e.Code()))) + if r == nil || r.Method != http.MethodHead { + _, _ = rw.Write(errorAsJSON(e)) + } + case nil: + rw.WriteHeader(http.StatusInternalServerError) + _, _ = rw.Write(errorAsJSON(New(http.StatusInternalServerError, "Unknown error"))) + default: + rw.WriteHeader(http.StatusInternalServerError) + if r == nil || r.Method != http.MethodHead { + _, _ = rw.Write(errorAsJSON(New(http.StatusInternalServerError, err.Error()))) + } + } +} + +func asHTTPCode(input int) int { + if input >= 600 { + return DefaultHTTPCode + } + return input +} diff --git a/vendor/github.com/gardener/gardener/pkg/extensions/id.go b/vendor/github.com/go-openapi/errors/auth.go similarity index 53% rename from vendor/github.com/gardener/gardener/pkg/extensions/id.go rename to vendor/github.com/go-openapi/errors/auth.go index c0386f357..0545b501b 100644 --- a/vendor/github.com/gardener/gardener/pkg/extensions/id.go +++ b/vendor/github.com/go-openapi/errors/auth.go @@ -1,10 +1,10 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -12,13 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -package extensions +package errors -import ( - "fmt" -) +import "net/http" -// Id returns an identifier for the given extension kind/type. -func Id(extensionKind, extensionType string) string { - return fmt.Sprintf("%s/%s", extensionKind, extensionType) +// Unauthenticated returns an unauthenticated error +func Unauthenticated(scheme string) Error { + return New(http.StatusUnauthorized, "unauthenticated for %s", scheme) } diff --git a/vendor/github.com/go-openapi/errors/doc.go b/vendor/github.com/go-openapi/errors/doc.go new file mode 100644 index 000000000..af01190ce --- /dev/null +++ b/vendor/github.com/go-openapi/errors/doc.go @@ -0,0 +1,26 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* +Package errors provides an Error interface and several concrete types +implementing this interface to manage API errors and JSON-schema validation +errors. + +A middleware handler ServeError() is provided to serve the errors types +it defines. + +It is used throughout the various go-openapi toolkit libraries +(https://github.com/go-openapi). +*/ +package errors diff --git a/vendor/github.com/go-openapi/errors/headers.go b/vendor/github.com/go-openapi/errors/headers.go new file mode 100644 index 000000000..dfebe8f95 --- /dev/null +++ b/vendor/github.com/go-openapi/errors/headers.go @@ -0,0 +1,103 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package errors + +import ( + "encoding/json" + "fmt" + "net/http" +) + +// Validation represents a failure of a precondition +type Validation struct { + code int32 + Name string + In string + Value interface{} + message string + Values []interface{} +} + +func (e *Validation) Error() string { + return e.message +} + +// Code the error code +func (e *Validation) Code() int32 { + return e.code +} + +// MarshalJSON implements the JSON encoding interface +func (e Validation) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]interface{}{ + "code": e.code, + "message": e.message, + "in": e.In, + "name": e.Name, + "value": e.Value, + "values": e.Values, + }) +} + +// ValidateName sets the name for a validation or updates it for a nested property +func (e *Validation) ValidateName(name string) *Validation { + if name != "" { + if e.Name == "" { + e.Name = name + e.message = name + e.message + } else { + e.Name = name + "." + e.Name + e.message = name + "." + e.message + } + } + return e +} + +const ( + contentTypeFail = `unsupported media type %q, only %v are allowed` + responseFormatFail = `unsupported media type requested, only %v are available` +) + +// InvalidContentType error for an invalid content type +func InvalidContentType(value string, allowed []string) *Validation { + values := make([]interface{}, 0, len(allowed)) + for _, v := range allowed { + values = append(values, v) + } + return &Validation{ + code: http.StatusUnsupportedMediaType, + Name: "Content-Type", + In: "header", + Value: value, + Values: values, + message: fmt.Sprintf(contentTypeFail, value, allowed), + } +} + +// InvalidResponseFormat error for an unacceptable response format request +func InvalidResponseFormat(value string, allowed []string) *Validation { + values := make([]interface{}, 0, len(allowed)) + for _, v := range allowed { + values = append(values, v) + } + return &Validation{ + code: http.StatusNotAcceptable, + Name: "Accept", + In: "header", + Value: value, + Values: values, + message: fmt.Sprintf(responseFormatFail, allowed), + } +} diff --git a/vendor/github.com/go-openapi/errors/middleware.go b/vendor/github.com/go-openapi/errors/middleware.go new file mode 100644 index 000000000..963472d1f --- /dev/null +++ b/vendor/github.com/go-openapi/errors/middleware.go @@ -0,0 +1,50 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package errors + +import ( + "bytes" + "fmt" + "strings" +) + +// APIVerificationFailed is an error that contains all the missing info for a mismatched section +// between the api registrations and the api spec +type APIVerificationFailed struct { + Section string `json:"section,omitempty"` + MissingSpecification []string `json:"missingSpecification,omitempty"` + MissingRegistration []string `json:"missingRegistration,omitempty"` +} + +func (v *APIVerificationFailed) Error() string { + buf := bytes.NewBuffer(nil) + + hasRegMissing := len(v.MissingRegistration) > 0 + hasSpecMissing := len(v.MissingSpecification) > 0 + + if hasRegMissing { + buf.WriteString(fmt.Sprintf("missing [%s] %s registrations", strings.Join(v.MissingRegistration, ", "), v.Section)) + } + + if hasRegMissing && hasSpecMissing { + buf.WriteString("\n") + } + + if hasSpecMissing { + buf.WriteString(fmt.Sprintf("missing from spec file [%s] %s", strings.Join(v.MissingSpecification, ", "), v.Section)) + } + + return buf.String() +} diff --git a/vendor/github.com/go-openapi/errors/parsing.go b/vendor/github.com/go-openapi/errors/parsing.go new file mode 100644 index 000000000..5096e1ea7 --- /dev/null +++ b/vendor/github.com/go-openapi/errors/parsing.go @@ -0,0 +1,78 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package errors + +import ( + "encoding/json" + "fmt" +) + +// ParseError represents a parsing error +type ParseError struct { + code int32 + Name string + In string + Value string + Reason error + message string +} + +func (e *ParseError) Error() string { + return e.message +} + +// Code returns the http status code for this error +func (e *ParseError) Code() int32 { + return e.code +} + +// MarshalJSON implements the JSON encoding interface +func (e ParseError) MarshalJSON() ([]byte, error) { + var reason string + if e.Reason != nil { + reason = e.Reason.Error() + } + return json.Marshal(map[string]interface{}{ + "code": e.code, + "message": e.message, + "in": e.In, + "name": e.Name, + "value": e.Value, + "reason": reason, + }) +} + +const ( + parseErrorTemplContent = `parsing %s %s from %q failed, because %s` + parseErrorTemplContentNoIn = `parsing %s from %q failed, because %s` +) + +// NewParseError creates a new parse error +func NewParseError(name, in, value string, reason error) *ParseError { + var msg string + if in == "" { + msg = fmt.Sprintf(parseErrorTemplContentNoIn, name, value, reason) + } else { + msg = fmt.Sprintf(parseErrorTemplContent, name, in, value, reason) + } + return &ParseError{ + code: 400, + Name: name, + In: in, + Value: value, + Reason: reason, + message: msg, + } +} diff --git a/vendor/github.com/go-openapi/errors/schema.go b/vendor/github.com/go-openapi/errors/schema.go new file mode 100644 index 000000000..da5f6c78c --- /dev/null +++ b/vendor/github.com/go-openapi/errors/schema.go @@ -0,0 +1,611 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package errors + +import ( + "encoding/json" + "fmt" + "strings" +) + +const ( + invalidType = "%s is an invalid type name" + typeFail = "%s in %s must be of type %s" + typeFailWithData = "%s in %s must be of type %s: %q" + typeFailWithError = "%s in %s must be of type %s, because: %s" + requiredFail = "%s in %s is required" + readOnlyFail = "%s in %s is readOnly" + tooLongMessage = "%s in %s should be at most %d chars long" + tooShortMessage = "%s in %s should be at least %d chars long" + patternFail = "%s in %s should match '%s'" + enumFail = "%s in %s should be one of %v" + multipleOfFail = "%s in %s should be a multiple of %v" + maxIncFail = "%s in %s should be less than or equal to %v" + maxExcFail = "%s in %s should be less than %v" + minIncFail = "%s in %s should be greater than or equal to %v" + minExcFail = "%s in %s should be greater than %v" + uniqueFail = "%s in %s shouldn't contain duplicates" + maxItemsFail = "%s in %s should have at most %d items" + minItemsFail = "%s in %s should have at least %d items" + typeFailNoIn = "%s must be of type %s" + typeFailWithDataNoIn = "%s must be of type %s: %q" + typeFailWithErrorNoIn = "%s must be of type %s, because: %s" + requiredFailNoIn = "%s is required" + readOnlyFailNoIn = "%s is readOnly" + tooLongMessageNoIn = "%s should be at most %d chars long" + tooShortMessageNoIn = "%s should be at least %d chars long" + patternFailNoIn = "%s should match '%s'" + enumFailNoIn = "%s should be one of %v" + multipleOfFailNoIn = "%s should be a multiple of %v" + maxIncFailNoIn = "%s should be less than or equal to %v" + maxExcFailNoIn = "%s should be less than %v" + minIncFailNoIn = "%s should be greater than or equal to %v" + minExcFailNoIn = "%s should be greater than %v" + uniqueFailNoIn = "%s shouldn't contain duplicates" + maxItemsFailNoIn = "%s should have at most %d items" + minItemsFailNoIn = "%s should have at least %d items" + noAdditionalItems = "%s in %s can't have additional items" + noAdditionalItemsNoIn = "%s can't have additional items" + tooFewProperties = "%s in %s should have at least %d properties" + tooFewPropertiesNoIn = "%s should have at least %d properties" + tooManyProperties = "%s in %s should have at most %d properties" + tooManyPropertiesNoIn = "%s should have at most %d properties" + unallowedProperty = "%s.%s in %s is a forbidden property" + unallowedPropertyNoIn = "%s.%s is a forbidden property" + failedAllPatternProps = "%s.%s in %s failed all pattern properties" + failedAllPatternPropsNoIn = "%s.%s failed all pattern properties" + multipleOfMustBePositive = "factor MultipleOf declared for %s must be positive: %v" +) + +// All code responses can be used to differentiate errors for different handling +// by the consuming program +const ( + // CompositeErrorCode remains 422 for backwards-compatibility + // and to separate it from validation errors with cause + CompositeErrorCode = 422 + // InvalidTypeCode is used for any subclass of invalid types + InvalidTypeCode = 600 + iota + RequiredFailCode + TooLongFailCode + TooShortFailCode + PatternFailCode + EnumFailCode + MultipleOfFailCode + MaxFailCode + MinFailCode + UniqueFailCode + MaxItemsFailCode + MinItemsFailCode + NoAdditionalItemsCode + TooFewPropertiesCode + TooManyPropertiesCode + UnallowedPropertyCode + FailedAllPatternPropsCode + MultipleOfMustBePositiveCode + ReadOnlyFailCode +) + +// CompositeError is an error that groups several errors together +type CompositeError struct { + Errors []error + code int32 + message string +} + +// Code for this error +func (c *CompositeError) Code() int32 { + return c.code +} + +func (c *CompositeError) Error() string { + if len(c.Errors) > 0 { + msgs := []string{c.message + ":"} + for _, e := range c.Errors { + msgs = append(msgs, e.Error()) + } + return strings.Join(msgs, "\n") + } + return c.message +} + +// MarshalJSON implements the JSON encoding interface +func (c CompositeError) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]interface{}{ + "code": c.code, + "message": c.message, + "errors": c.Errors, + }) +} + +// CompositeValidationError an error to wrap a bunch of other errors +func CompositeValidationError(errors ...error) *CompositeError { + return &CompositeError{ + code: CompositeErrorCode, + Errors: append([]error{}, errors...), + message: "validation failure list", + } +} + +// ValidateName recursively sets the name for all validations or updates them for nested properties +func (c *CompositeError) ValidateName(name string) *CompositeError { + for i, e := range c.Errors { + if ve, ok := e.(*Validation); ok { + c.Errors[i] = ve.ValidateName(name) + } else if ce, ok := e.(*CompositeError); ok { + c.Errors[i] = ce.ValidateName(name) + } + } + + return c +} + +// FailedAllPatternProperties an error for when the property doesn't match a pattern +func FailedAllPatternProperties(name, in, key string) *Validation { + msg := fmt.Sprintf(failedAllPatternProps, name, key, in) + if in == "" { + msg = fmt.Sprintf(failedAllPatternPropsNoIn, name, key) + } + return &Validation{ + code: FailedAllPatternPropsCode, + Name: name, + In: in, + Value: key, + message: msg, + } +} + +// PropertyNotAllowed an error for when the property doesn't match a pattern +func PropertyNotAllowed(name, in, key string) *Validation { + msg := fmt.Sprintf(unallowedProperty, name, key, in) + if in == "" { + msg = fmt.Sprintf(unallowedPropertyNoIn, name, key) + } + return &Validation{ + code: UnallowedPropertyCode, + Name: name, + In: in, + Value: key, + message: msg, + } +} + +// TooFewProperties an error for an object with too few properties +func TooFewProperties(name, in string, n int64) *Validation { + msg := fmt.Sprintf(tooFewProperties, name, in, n) + if in == "" { + msg = fmt.Sprintf(tooFewPropertiesNoIn, name, n) + } + return &Validation{ + code: TooFewPropertiesCode, + Name: name, + In: in, + Value: n, + message: msg, + } +} + +// TooManyProperties an error for an object with too many properties +func TooManyProperties(name, in string, n int64) *Validation { + msg := fmt.Sprintf(tooManyProperties, name, in, n) + if in == "" { + msg = fmt.Sprintf(tooManyPropertiesNoIn, name, n) + } + return &Validation{ + code: TooManyPropertiesCode, + Name: name, + In: in, + Value: n, + message: msg, + } +} + +// AdditionalItemsNotAllowed an error for invalid additional items +func AdditionalItemsNotAllowed(name, in string) *Validation { + msg := fmt.Sprintf(noAdditionalItems, name, in) + if in == "" { + msg = fmt.Sprintf(noAdditionalItemsNoIn, name) + } + return &Validation{ + code: NoAdditionalItemsCode, + Name: name, + In: in, + message: msg, + } +} + +// InvalidCollectionFormat another flavor of invalid type error +func InvalidCollectionFormat(name, in, format string) *Validation { + return &Validation{ + code: InvalidTypeCode, + Name: name, + In: in, + Value: format, + message: fmt.Sprintf("the collection format %q is not supported for the %s param %q", format, in, name), + } +} + +// InvalidTypeName an error for when the type is invalid +func InvalidTypeName(typeName string) *Validation { + return &Validation{ + code: InvalidTypeCode, + Value: typeName, + message: fmt.Sprintf(invalidType, typeName), + } +} + +// InvalidType creates an error for when the type is invalid +func InvalidType(name, in, typeName string, value interface{}) *Validation { + var message string + + if in != "" { + switch value.(type) { + case string: + message = fmt.Sprintf(typeFailWithData, name, in, typeName, value) + case error: + message = fmt.Sprintf(typeFailWithError, name, in, typeName, value) + default: + message = fmt.Sprintf(typeFail, name, in, typeName) + } + } else { + switch value.(type) { + case string: + message = fmt.Sprintf(typeFailWithDataNoIn, name, typeName, value) + case error: + message = fmt.Sprintf(typeFailWithErrorNoIn, name, typeName, value) + default: + message = fmt.Sprintf(typeFailNoIn, name, typeName) + } + } + + return &Validation{ + code: InvalidTypeCode, + Name: name, + In: in, + Value: value, + message: message, + } + +} + +// DuplicateItems error for when an array contains duplicates +func DuplicateItems(name, in string) *Validation { + msg := fmt.Sprintf(uniqueFail, name, in) + if in == "" { + msg = fmt.Sprintf(uniqueFailNoIn, name) + } + return &Validation{ + code: UniqueFailCode, + Name: name, + In: in, + message: msg, + } +} + +// TooManyItems error for when an array contains too many items +func TooManyItems(name, in string, max int64, value interface{}) *Validation { + msg := fmt.Sprintf(maxItemsFail, name, in, max) + if in == "" { + msg = fmt.Sprintf(maxItemsFailNoIn, name, max) + } + + return &Validation{ + code: MaxItemsFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// TooFewItems error for when an array contains too few items +func TooFewItems(name, in string, min int64, value interface{}) *Validation { + msg := fmt.Sprintf(minItemsFail, name, in, min) + if in == "" { + msg = fmt.Sprintf(minItemsFailNoIn, name, min) + } + return &Validation{ + code: MinItemsFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// ExceedsMaximumInt error for when maximum validation fails +func ExceedsMaximumInt(name, in string, max int64, exclusive bool, value interface{}) *Validation { + var message string + if in == "" { + m := maxIncFailNoIn + if exclusive { + m = maxExcFailNoIn + } + message = fmt.Sprintf(m, name, max) + } else { + m := maxIncFail + if exclusive { + m = maxExcFail + } + message = fmt.Sprintf(m, name, in, max) + } + return &Validation{ + code: MaxFailCode, + Name: name, + In: in, + Value: value, + message: message, + } +} + +// ExceedsMaximumUint error for when maximum validation fails +func ExceedsMaximumUint(name, in string, max uint64, exclusive bool, value interface{}) *Validation { + var message string + if in == "" { + m := maxIncFailNoIn + if exclusive { + m = maxExcFailNoIn + } + message = fmt.Sprintf(m, name, max) + } else { + m := maxIncFail + if exclusive { + m = maxExcFail + } + message = fmt.Sprintf(m, name, in, max) + } + return &Validation{ + code: MaxFailCode, + Name: name, + In: in, + Value: value, + message: message, + } +} + +// ExceedsMaximum error for when maximum validation fails +func ExceedsMaximum(name, in string, max float64, exclusive bool, value interface{}) *Validation { + var message string + if in == "" { + m := maxIncFailNoIn + if exclusive { + m = maxExcFailNoIn + } + message = fmt.Sprintf(m, name, max) + } else { + m := maxIncFail + if exclusive { + m = maxExcFail + } + message = fmt.Sprintf(m, name, in, max) + } + return &Validation{ + code: MaxFailCode, + Name: name, + In: in, + Value: value, + message: message, + } +} + +// ExceedsMinimumInt error for when minimum validation fails +func ExceedsMinimumInt(name, in string, min int64, exclusive bool, value interface{}) *Validation { + var message string + if in == "" { + m := minIncFailNoIn + if exclusive { + m = minExcFailNoIn + } + message = fmt.Sprintf(m, name, min) + } else { + m := minIncFail + if exclusive { + m = minExcFail + } + message = fmt.Sprintf(m, name, in, min) + } + return &Validation{ + code: MinFailCode, + Name: name, + In: in, + Value: value, + message: message, + } +} + +// ExceedsMinimumUint error for when minimum validation fails +func ExceedsMinimumUint(name, in string, min uint64, exclusive bool, value interface{}) *Validation { + var message string + if in == "" { + m := minIncFailNoIn + if exclusive { + m = minExcFailNoIn + } + message = fmt.Sprintf(m, name, min) + } else { + m := minIncFail + if exclusive { + m = minExcFail + } + message = fmt.Sprintf(m, name, in, min) + } + return &Validation{ + code: MinFailCode, + Name: name, + In: in, + Value: value, + message: message, + } +} + +// ExceedsMinimum error for when minimum validation fails +func ExceedsMinimum(name, in string, min float64, exclusive bool, value interface{}) *Validation { + var message string + if in == "" { + m := minIncFailNoIn + if exclusive { + m = minExcFailNoIn + } + message = fmt.Sprintf(m, name, min) + } else { + m := minIncFail + if exclusive { + m = minExcFail + } + message = fmt.Sprintf(m, name, in, min) + } + return &Validation{ + code: MinFailCode, + Name: name, + In: in, + Value: value, + message: message, + } +} + +// NotMultipleOf error for when multiple of validation fails +func NotMultipleOf(name, in string, multiple, value interface{}) *Validation { + var msg string + if in == "" { + msg = fmt.Sprintf(multipleOfFailNoIn, name, multiple) + } else { + msg = fmt.Sprintf(multipleOfFail, name, in, multiple) + } + return &Validation{ + code: MultipleOfFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// EnumFail error for when an enum validation fails +func EnumFail(name, in string, value interface{}, values []interface{}) *Validation { + var msg string + if in == "" { + msg = fmt.Sprintf(enumFailNoIn, name, values) + } else { + msg = fmt.Sprintf(enumFail, name, in, values) + } + + return &Validation{ + code: EnumFailCode, + Name: name, + In: in, + Value: value, + Values: values, + message: msg, + } +} + +// Required error for when a value is missing +func Required(name, in string, value interface{}) *Validation { + var msg string + if in == "" { + msg = fmt.Sprintf(requiredFailNoIn, name) + } else { + msg = fmt.Sprintf(requiredFail, name, in) + } + return &Validation{ + code: RequiredFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// ReadOnly error for when a value is present in request +func ReadOnly(name, in string, value interface{}) *Validation { + var msg string + if in == "" { + msg = fmt.Sprintf(readOnlyFailNoIn, name) + } else { + msg = fmt.Sprintf(readOnlyFail, name, in) + } + return &Validation{ + code: ReadOnlyFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// TooLong error for when a string is too long +func TooLong(name, in string, max int64, value interface{}) *Validation { + var msg string + if in == "" { + msg = fmt.Sprintf(tooLongMessageNoIn, name, max) + } else { + msg = fmt.Sprintf(tooLongMessage, name, in, max) + } + return &Validation{ + code: TooLongFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// TooShort error for when a string is too short +func TooShort(name, in string, min int64, value interface{}) *Validation { + var msg string + if in == "" { + msg = fmt.Sprintf(tooShortMessageNoIn, name, min) + } else { + msg = fmt.Sprintf(tooShortMessage, name, in, min) + } + + return &Validation{ + code: TooShortFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// FailedPattern error for when a string fails a regex pattern match +// the pattern that is returned is the ECMA syntax version of the pattern not the golang version. +func FailedPattern(name, in, pattern string, value interface{}) *Validation { + var msg string + if in == "" { + msg = fmt.Sprintf(patternFailNoIn, name, pattern) + } else { + msg = fmt.Sprintf(patternFail, name, in, pattern) + } + + return &Validation{ + code: PatternFailCode, + Name: name, + In: in, + Value: value, + message: msg, + } +} + +// MultipleOfMustBePositive error for when a +// multipleOf factor is negative +func MultipleOfMustBePositive(name, in string, factor interface{}) *Validation { + return &Validation{ + code: MultipleOfMustBePositiveCode, + Name: name, + In: in, + Value: factor, + message: fmt.Sprintf(multipleOfMustBePositive, name, factor), + } +} diff --git a/vendor/github.com/golang/protobuf/jsonpb/decode.go b/vendor/github.com/golang/protobuf/jsonpb/decode.go index 60e82caa9..6c16c255f 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/decode.go +++ b/vendor/github.com/golang/protobuf/jsonpb/decode.go @@ -386,8 +386,14 @@ func (u *Unmarshaler) unmarshalMessage(m protoreflect.Message, in []byte) error } func isSingularWellKnownValue(fd protoreflect.FieldDescriptor) bool { + if fd.Cardinality() == protoreflect.Repeated { + return false + } if md := fd.Message(); md != nil { - return md.FullName() == "google.protobuf.Value" && fd.Cardinality() != protoreflect.Repeated + return md.FullName() == "google.protobuf.Value" + } + if ed := fd.Enum(); ed != nil { + return ed.FullName() == "google.protobuf.NullValue" } return false } diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/LICENSE b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/doc.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/doc.go similarity index 97% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/doc.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/doc.go index d8a1f5dad..462e9d485 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/doc.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/doc.go @@ -17,4 +17,4 @@ limitations under the License. // +k8s:deepcopy-gen=package // +groupName=snapshot.storage.k8s.io -package v1beta1 +package v1 diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/register.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/register.go similarity index 98% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/register.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/register.go index 91f451424..cca3da0b9 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/register.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/register.go @@ -11,7 +11,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package v1beta1 +package v1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -28,7 +28,7 @@ var ( // AddToScheme adds to scheme AddToScheme = SchemeBuilder.AddToScheme // SchemeGroupVersion is the group version used to register these objects. - SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} ) // Resource takes an unqualified resource and returns a Group-qualified GroupResource. diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/types.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/types.go similarity index 74% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/types.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/types.go index 1299d3655..b9745df21 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/types.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/types.go @@ -1,5 +1,5 @@ /* -Copyright 2019 The Kubernetes Authors. +Copyright 2020 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ limitations under the License. */ // +kubebuilder:object:generate=true -package v1beta1 +package v1 import ( core_v1 "k8s.io/api/core/v1" @@ -31,13 +31,13 @@ import ( // +kubebuilder:object:root=true // +kubebuilder:resource:scope=Namespaced // +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if a snapshot is ready to be used to restore a volume." -// +kubebuilder:printcolumn:name="SourcePVC",type=string,JSONPath=`.spec.source.persistentVolumeClaimName`,description="Name of the source PVC from where a dynamically taken snapshot will be created." -// +kubebuilder:printcolumn:name="SourceSnapshotContent",type=string,JSONPath=`.spec.source.volumeSnapshotContentName`,description="Name of the VolumeSnapshotContent which represents a pre-provisioned snapshot." -// +kubebuilder:printcolumn:name="RestoreSize",type=string,JSONPath=`.status.restoreSize`,description="Represents the complete size of the snapshot." +// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if the snapshot is ready to be used to restore a volume." +// +kubebuilder:printcolumn:name="SourcePVC",type=string,JSONPath=`.spec.source.persistentVolumeClaimName`,description="If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created." +// +kubebuilder:printcolumn:name="SourceSnapshotContent",type=string,JSONPath=`.spec.source.volumeSnapshotContentName`,description="If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot." +// +kubebuilder:printcolumn:name="RestoreSize",type=string,JSONPath=`.status.restoreSize`,description="Represents the minimum size of volume required to rehydrate from this snapshot." // +kubebuilder:printcolumn:name="SnapshotClass",type=string,JSONPath=`.spec.volumeSnapshotClassName`,description="The name of the VolumeSnapshotClass requested by the VolumeSnapshot." -// +kubebuilder:printcolumn:name="SnapshotContent",type=string,JSONPath=`.status.boundVolumeSnapshotContentName`,description="The name of the VolumeSnapshotContent to which this VolumeSnapshot is bound." -// +kubebuilder:printcolumn:name="CreationTime",type=date,JSONPath=`.status.creationTime`,description="Timestamp when the point-in-time snapshot is taken by the underlying storage system." +// +kubebuilder:printcolumn:name="SnapshotContent",type=string,JSONPath=`.status.boundVolumeSnapshotContentName`,description="Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object." +// +kubebuilder:printcolumn:name="CreationTime",type=date,JSONPath=`.status.creationTime`,description="Timestamp when the point-in-time snapshot was taken by the underlying storage system." // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp` type VolumeSnapshot struct { metav1.TypeMeta `json:",inline"` @@ -52,10 +52,10 @@ type VolumeSnapshot struct { Spec VolumeSnapshotSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` // status represents the current information of a snapshot. - // NOTE: status can be modified by sources other than system controllers, - // and must not be depended upon for accuracy. - // Controllers should only use information from the VolumeSnapshotContent object - // after verifying that the binding is accurate and complete. + // Consumers must verify binding between VolumeSnapshot and + // VolumeSnapshotContent objects is successful (by validating that both + // VolumeSnapshot and VolumeSnapshotContent point at each other) before + // using this object. // +optional Status *VolumeSnapshotStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` } @@ -78,12 +78,18 @@ type VolumeSnapshotSpec struct { // Required. Source VolumeSnapshotSource `json:"source" protobuf:"bytes,1,opt,name=source"` - // volumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. - // If not specified, the default snapshot class will be used if one exists. - // If not specified, and there is no default snapshot class, dynamic snapshot creation will fail. + // VolumeSnapshotClassName is the name of the VolumeSnapshotClass + // requested by the VolumeSnapshot. + // VolumeSnapshotClassName may be left nil to indicate that the default + // SnapshotClass should be used. + // A given cluster may have multiple default Volume SnapshotClasses: one + // default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, + // VolumeSnapshotSource will be checked to figure out what the associated + // CSI Driver is, and the default VolumeSnapshotClass associated with that + // CSI Driver will be used. If more than one VolumeSnapshotClass exist for + // a given CSI Driver and more than one have been marked as default, + // CreateSnapshot will fail and generate an event. // Empty string is not allowed for this field. - // TODO(xiangqian): a webhook validation on empty string. - // More info: https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes // +optional VolumeSnapshotClassName *string `json:"volumeSnapshotClassName,omitempty" protobuf:"bytes,2,opt,name=volumeSnapshotClassName"` } @@ -93,48 +99,62 @@ type VolumeSnapshotSpec struct { // object should be used. // Exactly one of its members must be set. // Members in VolumeSnapshotSource are immutable. -// TODO(xiangqian): Add a webhook to ensure that VolumeSnapshotSource members -// will not be updated once specified. type VolumeSnapshotSource struct { // persistentVolumeClaimName specifies the name of the PersistentVolumeClaim - // object in the same namespace as the VolumeSnapshot object where the - // snapshot should be dynamically taken from. + // object representing the volume from which a snapshot should be created. + // This PVC is assumed to be in the same namespace as the VolumeSnapshot + // object. + // This field should be set if the snapshot does not exists, and needs to be + // created. // This field is immutable. // +optional PersistentVolumeClaimName *string `json:"persistentVolumeClaimName,omitempty" protobuf:"bytes,1,opt,name=persistentVolumeClaimName"` // volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent - // object. + // object representing an existing volume snapshot. + // This field should be set if the snapshot already exists and only needs a representation in Kubernetes. // This field is immutable. // +optional VolumeSnapshotContentName *string `json:"volumeSnapshotContentName,omitempty" protobuf:"bytes,2,opt,name=volumeSnapshotContentName"` } // VolumeSnapshotStatus is the status of the VolumeSnapshot +// Note that CreationTime, RestoreSize, ReadyToUse, and Error are in both +// VolumeSnapshotStatus and VolumeSnapshotContentStatus. Fields in VolumeSnapshotStatus +// are updated based on fields in VolumeSnapshotContentStatus. They are eventual +// consistency. These fields are duplicate in both objects due to the following reasons: +// - Fields in VolumeSnapshotContentStatus can be used for filtering when importing a +// volumesnapshot. +// - VolumsnapshotStatus is used by end users because they cannot see VolumeSnapshotContent. +// - CSI snapshotter sidecar is light weight as it only watches VolumeSnapshotContent +// object, not VolumeSnapshot object. type VolumeSnapshotStatus struct { - // boundVolumeSnapshotContentName represents the name of the VolumeSnapshotContent - // object to which the VolumeSnapshot object is bound. + // boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent + // object to which this VolumeSnapshot object intends to bind to. // If not specified, it indicates that the VolumeSnapshot object has not been // successfully bound to a VolumeSnapshotContent object yet. - // NOTE: Specified boundVolumeSnapshotContentName alone does not mean binding - // is valid. Controllers MUST always verify bidirectional binding between - // VolumeSnapshot and VolumeSnapshotContent to avoid possible security issues. + // NOTE: To avoid possible security issues, consumers must verify binding between + // VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that + // both VolumeSnapshot and VolumeSnapshotContent point at each other) before using + // this object. // +optional BoundVolumeSnapshotContentName *string `json:"boundVolumeSnapshotContentName,omitempty" protobuf:"bytes,1,opt,name=boundVolumeSnapshotContentName"` // creationTime is the timestamp when the point-in-time snapshot is taken // by the underlying storage system. - // In dynamic snapshot creation case, this field will be filled in with the - // "creation_time" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // snapshot controller with the "creation_time" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "creation_time" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. - // If not specified, it indicates that the creation time of the snapshot is unknown. + // If not specified, it may indicate that the creation time of the snapshot is unknown. // +optional CreationTime *metav1.Time `json:"creationTime,omitempty" protobuf:"bytes,2,opt,name=creationTime"` - // readyToUse indicates if a snapshot is ready to be used to restore a volume. - // In dynamic snapshot creation case, this field will be filled in with the - // "ready_to_use" value returned from CSI "CreateSnapshotRequest" gRPC call. + // readyToUse indicates if the snapshot is ready to be used to restore a volume. + // In dynamic snapshot creation case, this field will be filled in by the + // snapshot controller with the "ready_to_use" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "ready_to_use" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, // otherwise, this field will be set to "True". @@ -142,9 +162,11 @@ type VolumeSnapshotStatus struct { // +optional ReadyToUse *bool `json:"readyToUse,omitempty" protobuf:"varint,3,opt,name=readyToUse"` - // restoreSize represents the complete size of the snapshot in bytes. - // In dynamic snapshot creation case, this field will be filled in with the - // "size_bytes" value returned from CSI "CreateSnapshotRequest" gRPC call. + // restoreSize represents the minimum size of volume required to create a volume + // from this snapshot. + // In dynamic snapshot creation case, this field will be filled in by the + // snapshot controller with the "size_bytes" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "size_bytes" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // When restoring a volume from this snapshot, the size of the volume MUST NOT @@ -157,6 +179,8 @@ type VolumeSnapshotStatus struct { // This field could be helpful to upper level controllers(i.e., application controller) // to decide whether they should continue on waiting for the snapshot to be created // based on the type of error reported. + // The snapshot controller will keep retrying when an error occurrs during the + // snapshot creation. Upon success, this error field will be cleared. // +optional Error *VolumeSnapshotError `json:"error,omitempty" protobuf:"bytes,5,opt,name=error,casttype=VolumeSnapshotError"` } @@ -223,7 +247,7 @@ type VolumeSnapshotClassList struct { // +kubebuilder:object:root=true // +kubebuilder:resource:scope=Cluster // +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if a snapshot is ready to be used to restore a volume." +// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if the snapshot is ready to be used to restore a volume." // +kubebuilder:printcolumn:name="RestoreSize",type=integer,JSONPath=`.status.restoreSize`,description="Represents the complete size of the snapshot in bytes" // +kubebuilder:printcolumn:name="DeletionPolicy",type=string,JSONPath=`.spec.deletionPolicy`,description="Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted." // +kubebuilder:printcolumn:name="Driver",type=string,JSONPath=`.spec.driver`,description="Name of the CSI driver used to create the physical snapshot on the underlying storage system." @@ -276,9 +300,11 @@ type VolumeSnapshotContentSpec struct { // Supported values are "Retain" and "Delete". // "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. // "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. - // In dynamic snapshot creation case, this field will be filled in with the "DeletionPolicy" field defined in the - // VolumeSnapshotClass the VolumeSnapshot refers to. - // For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. + // For dynamically provisioned snapshots, this field will automatically be filled in by the + // CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding + // VolumeSnapshotClass. + // For pre-existing snapshots, users MUST specify this field when creating the + // VolumeSnapshotContent object. // Required. DeletionPolicy DeletionPolicy `json:"deletionPolicy" protobuf:"bytes,2,opt,name=deletionPolicy"` @@ -289,11 +315,16 @@ type VolumeSnapshotContentSpec struct { // Required. Driver string `json:"driver" protobuf:"bytes,3,opt,name=driver"` - // name of the VolumeSnapshotClass to which this snapshot belongs. + // name of the VolumeSnapshotClass from which this snapshot was (or will be) + // created. + // Note that after provisioning, the VolumeSnapshotClass may be deleted or + // recreated with different set of values, and as such, should not be referenced + // post-snapshot creation. // +optional VolumeSnapshotClassName *string `json:"volumeSnapshotClassName,omitempty" protobuf:"bytes,4,opt,name=volumeSnapshotClassName"` - // source specifies from where a snapshot will be created. + // source specifies whether the snapshot is (or should be) dynamically provisioned + // or already exists, and just requires a Kubernetes object representation. // This field is immutable after creation. // Required. Source VolumeSnapshotContentSource `json:"source" protobuf:"bytes,5,opt,name=source"` @@ -312,13 +343,23 @@ type VolumeSnapshotContentSource struct { VolumeHandle *string `json:"volumeHandle,omitempty" protobuf:"bytes,1,opt,name=volumeHandle"` // snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on - // the underlying storage system. + // the underlying storage system for which a Kubernetes object representation + // was (or should be) created. // This field is immutable. // +optional SnapshotHandle *string `json:"snapshotHandle,omitempty" protobuf:"bytes,2,opt,name=snapshotHandle"` } // VolumeSnapshotContentStatus is the status of a VolumeSnapshotContent object +// Note that CreationTime, RestoreSize, ReadyToUse, and Error are in both +// VolumeSnapshotStatus and VolumeSnapshotContentStatus. Fields in VolumeSnapshotStatus +// are updated based on fields in VolumeSnapshotContentStatus. They are eventual +// consistency. These fields are duplicate in both objects due to the following reasons: +// - Fields in VolumeSnapshotContentStatus can be used for filtering when importing a +// volumesnapshot. +// - VolumsnapshotStatus is used by end users because they cannot see VolumeSnapshotContent. +// - CSI snapshotter sidecar is light weight as it only watches VolumeSnapshotContent +// object, not VolumeSnapshot object. type VolumeSnapshotContentStatus struct { // snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. // If not specified, it indicates that dynamic snapshot creation has either failed @@ -328,8 +369,9 @@ type VolumeSnapshotContentStatus struct { // creationTime is the timestamp when the point-in-time snapshot is taken // by the underlying storage system. - // In dynamic snapshot creation case, this field will be filled in with the - // "creation_time" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // CSI snapshotter sidecar with the "creation_time" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "creation_time" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // If not specified, it indicates the creation time is unknown. @@ -340,8 +382,9 @@ type VolumeSnapshotContentStatus struct { CreationTime *int64 `json:"creationTime,omitempty" protobuf:"varint,2,opt,name=creationTime"` // restoreSize represents the complete size of the snapshot in bytes. - // In dynamic snapshot creation case, this field will be filled in with the - // "size_bytes" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // CSI snapshotter sidecar with the "size_bytes" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "size_bytes" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // When restoring a volume from this snapshot, the size of the volume MUST NOT @@ -352,8 +395,9 @@ type VolumeSnapshotContentStatus struct { RestoreSize *int64 `json:"restoreSize,omitempty" protobuf:"bytes,3,opt,name=restoreSize"` // readyToUse indicates if a snapshot is ready to be used to restore a volume. - // In dynamic snapshot creation case, this field will be filled in with the - // "ready_to_use" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // CSI snapshotter sidecar with the "ready_to_use" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "ready_to_use" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, // otherwise, this field will be set to "True". @@ -361,7 +405,8 @@ type VolumeSnapshotContentStatus struct { // +optional. ReadyToUse *bool `json:"readyToUse,omitempty" protobuf:"varint,4,opt,name=readyToUse"` - // error is the latest observed error during snapshot creation, if any. + // error is the last observed error during snapshot creation, if any. + // Upon success after retry, this error field will be cleared. // +optional Error *VolumeSnapshotError `json:"error,omitempty" protobuf:"bytes,5,opt,name=error,casttype=VolumeSnapshotError"` } diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/zz_generated.deepcopy.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/zz_generated.deepcopy.go similarity index 99% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/zz_generated.deepcopy.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/zz_generated.deepcopy.go index 2918bf92d..febab0cd4 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/zz_generated.deepcopy.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2019 The Kubernetes Authors. +Copyright 2020 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ limitations under the License. // Code generated by deepcopy-gen. DO NOT EDIT. -package v1beta1 +package v1 import ( runtime "k8s.io/apimachinery/pkg/runtime" diff --git a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md index d777b793b..5e779fe64 100644 --- a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md +++ b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md @@ -1,3 +1,149 @@ +## 2.9.2 + +### Maintenance +- Bump github.com/go-task/slim-sprig (#1167) [3fcc5bf] +- Bump github.com/onsi/gomega from 1.27.3 to 1.27.4 (#1163) [6143ffe] + +## 2.9.1 + +### Fixes +This release fixes a longstanding issue where `ginkgo -coverpkg=./...` would not work. This is now resolved and fixes [#1161](https://github.com/onsi/ginkgo/issues/1161) and [#995](https://github.com/onsi/ginkgo/issues/995) +- Support -coverpkg=./... [26ca1b5] +- document coverpkg a bit more clearly [fc44c3b] + +### Maintenance +- bump various dependencies +- Improve Documentation and fix typo (#1158) [93de676] + +## 2.9.0 + +### Features +- AttachProgressReporter is an experimental feature that allows users to provide arbitrary information when a ProgressReport is requested [28801fe] + +- GinkgoT() has been expanded to include several Ginkgo-specific methods [2bd5a3b] + + The intent is to enable the development of third-party libraries that integrate deeply with Ginkgo using `GinkgoT()` to access Ginkgo's functionality. + +## 2.8.4 + +### Features +- Add OmitSuiteSetupNodes to JunitReportConfig (#1147) [979fbc2] +- Add a reference to ginkgolinter in docs.index.md (#1143) [8432589] + +### Fixes +- rename tools hack to see if it fixes things for downstream users [a8bb39a] + +### Maintenance +- Bump golang.org/x/text (#1144) [41b2a8a] +- Bump github.com/onsi/gomega from 1.27.0 to 1.27.1 (#1142) [7c4f583] + +## 2.8.3 + +Released to fix security issue in golang.org/x/net dependency + +### Maintenance + +- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#1141) [fc1a02e] +- remove tools.go hack from documentation [0718693] + +## 2.8.2 + +Ginkgo now includes a `tools.go` file in the root directory of the `ginkgo` package. This should allow modules that simply `go get github.com/onsi/ginkgo/v2` to also pull in the CLI dependencies. This obviates the need for consumers of Ginkgo to have their own `tools.go` file and makes it simpler to ensure that the version of the `ginkgo` CLI being used matches the version of the library. You can simply run `go run github.com/onsi/ginkgo/v2/ginkgo` to run the version of the cli associated with your package go.mod. + +### Maintenance + +- Bump github.com/onsi/gomega from 1.26.0 to 1.27.0 (#1139) [5767b0a] +- Fix minor typos (#1138) [e1e9723] +- Fix link in V2 Migration Guide (#1137) [a588f60] + +## 2.8.1 + +### Fixes +- lock around default report output to avoid triggering the race detector when calling By from goroutines [2d5075a] +- don't run ReportEntries through sprintf [febbe38] + +### Maintenance +- Bump golang.org/x/tools from 0.5.0 to 0.6.0 (#1135) [11a4860] +- test: update matrix for Go 1.20 (#1130) [4890a62] +- Bump golang.org/x/sys from 0.4.0 to 0.5.0 (#1133) [a774638] +- Bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#1120) [3f233bd] +- Bump github-pages from 227 to 228 in /docs (#1131) [f9b8649] +- Bump activesupport from 6.0.6 to 6.0.6.1 in /docs (#1127) [6f8c042] +- Update index.md with instructions on how to upgrade Ginkgo [833a75e] + +## 2.8.0 + +### Features + +- Introduce GinkgoHelper() to track and exclude helper functions from potential CodeLocations [e19f556] + +Modeled after `testing.T.Helper()`. Now, rather than write code like: + +```go +func helper(model Model) { + Expect(model).WithOffset(1).To(BeValid()) + Expect(model.SerialNumber).WithOffset(1).To(MatchRegexp(/[a-f0-9]*/)) +} +``` + +you can stop tracking offsets (which makes nesting composing helpers nearly impossible) and simply write: + +```go +func helper(model Model) { + GinkgoHelper() + Expect(model).To(BeValid()) + Expect(model.SerialNumber).To(MatchRegexp(/[a-f0-9]*/)) +} +``` + +- Introduce GinkgoLabelFilter() and Label().MatchesLabelFilter() to make it possible to programmatically match filters (fixes #1119) [2f6597c] + +You can now write code like this: + +```go +BeforeSuite(func() { + if Label("slow").MatchesLabelFilter(GinkgoLabelFilter()) { + // do slow setup + } + + if Label("fast").MatchesLabelFilter(GinkgoLabelFilter()) { + // do fast setup + } +}) +``` + +to programmatically check whether a given set of labels will match the configured `--label-filter`. + +### Maintenance + +- Bump webrick from 1.7.0 to 1.8.1 in /docs (#1125) [ea4966e] +- cdeql: add ruby language (#1124) [9dd275b] +- dependabot: add bundler package-ecosystem for docs (#1123) [14e7bdd] + +## 2.7.1 + +### Fixes +- Bring back SuiteConfig.EmitSpecProgress to avoid compilation issue for consumers that set it manually [d2a1cb0] + +### Maintenance +- Bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#1118) [cafece6] +- Bump golang.org/x/tools from 0.4.0 to 0.5.0 (#1111) [eda66c2] +- Bump golang.org/x/sys from 0.3.0 to 0.4.0 (#1112) [ac5ccaa] +- Bump github.com/onsi/gomega from 1.24.1 to 1.24.2 (#1097) [eee6480] + +## 2.7.0 + +### Features +- Introduce ContinueOnFailure for Ordered containers [e0123ca] - Ordered containers that are also decorated with ContinueOnFailure will not stop running specs after the first spec fails. +- Support for bootstrap commands to use custom data for templates (#1110) [7a2b242] +- Support for labels and pending decorator in ginkgo outline output (#1113) [e6e3b98] +- Color aliases for custom color support (#1101) [49fab7a] + +### Fixes +- correctly ensure deterministic spec order, even if specs are generated by iterating over a map [89dda20] +- Fix a bug where timedout specs were not correctly treated as failures when determining whether or not to run AfterAlls in an Ordered container. +- Ensure go test coverprofile outputs to the expected location (#1105) [b0bd77b] + ## 2.6.1 ### Features @@ -76,7 +222,7 @@ to build tooling on top of as it has stronger guarantees to be stable from versi ### Fixes - correcting some typos (#1064) [1403d3c] -- fix flaky internal_integration interupt specs [2105ba3] +- fix flaky internal_integration interrupt specs [2105ba3] - Correct busted link in README [be6b5b9] ### Maintenance diff --git a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go index 4a14e50a8..a244bdc18 100644 --- a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go @@ -92,11 +92,11 @@ type GinkgoWriterInterface interface { } /* -SpecContext is the context object passed into nodes that are subject to a timeout or need to be notified of an interrupt. It implements the standard context.Context interface but also contains additional helpers to provide an extensibility point for Ginkgo. (As an example, Gomega's Eventually can use the methods defined on SpecContext to provide deeper integratoin with Ginkgo). +SpecContext is the context object passed into nodes that are subject to a timeout or need to be notified of an interrupt. It implements the standard context.Context interface but also contains additional helpers to provide an extensibility point for Ginkgo. (As an example, Gomega's Eventually can use the methods defined on SpecContext to provide deeper integration with Ginkgo). You can do anything with SpecContext that you do with a typical context.Context including wrapping it with any of the context.With* methods. -Ginkgo will cancel the SpecContext when a node is interrupted (e.g. by the user sending an interupt signal) or when a node has exceeded it's allowed run-time. Note, however, that even in cases where a node has a deadline, SpecContext will not return a deadline via .Deadline(). This is because Ginkgo does not use a WithDeadline() context to model node deadlines as Ginkgo needs control over the precise timing of the context cancellation to ensure it can provide an accurate progress report at the moment of cancellation. +Ginkgo will cancel the SpecContext when a node is interrupted (e.g. by the user sending an interrupt signal) or when a node has exceeded its allowed run-time. Note, however, that even in cases where a node has a deadline, SpecContext will not return a deadline via .Deadline(). This is because Ginkgo does not use a WithDeadline() context to model node deadlines as Ginkgo needs control over the precise timing of the context cancellation to ensure it can provide an accurate progress report at the moment of cancellation. */ type SpecContext = internal.SpecContext @@ -163,6 +163,29 @@ func GinkgoParallelProcess() int { return suiteConfig.ParallelProcess } +/* +GinkgoHelper marks the function it's called in as a test helper. When a failure occurs inside a helper function, Ginkgo will skip the helper when analyzing the stack trace to identify where the failure occurred. + +This is an alternative, simpler, mechanism to passing in a skip offset when calling Fail or using Gomega. +*/ +func GinkgoHelper() { + types.MarkAsHelper(1) +} + +/* +GinkgoLabelFilter() returns the label filter configured for this suite via `--label-filter`. + +You can use this to manually check if a set of labels would satisfy the filter via: + + if (Label("cat", "dog").MatchesLabelFilter(GinkgoLabelFilter())) { + //... + } +*/ +func GinkgoLabelFilter() string { + suiteConfig, _ := GinkgoConfiguration() + return suiteConfig.LabelFilter +} + /* PauseOutputInterception() pauses Ginkgo's output interception. This is only relevant when running in parallel and output to stdout/stderr is being intercepted. You generally @@ -517,7 +540,7 @@ and will simply log the passed in text to the GinkgoWriter. If By is handed a f By will also generate and attach a ReportEntry to the spec. This will ensure that By annotations appear in Ginkgo's machine-readable reports. -Note that By does not generate a new Ginkgo node - rather it is simply synctactic sugar around GinkgoWriter and AddReportEntry +Note that By does not generate a new Ginkgo node - rather it is simply syntactic sugar around GinkgoWriter and AddReportEntry You can learn more about By here: https://onsi.github.io/ginkgo/#documenting-complex-specs-by */ func By(text string, callback ...func()) { @@ -720,7 +743,7 @@ For example: os.SetEnv("FOO", "BAR") }) -will register a cleanup handler that will set the environment variable "FOO" to it's current value (obtained by os.GetEnv("FOO")) after the spec runs and then sets the environment variable "FOO" to "BAR" for the current spec. +will register a cleanup handler that will set the environment variable "FOO" to its current value (obtained by os.GetEnv("FOO")) after the spec runs and then sets the environment variable "FOO" to "BAR" for the current spec. Similarly: @@ -748,3 +771,24 @@ func DeferCleanup(args ...interface{}) { } pushNode(internal.NewCleanupNode(deprecationTracker, fail, args...)) } + +/* +AttachProgressReporter allows you to register a function that will be called whenever Ginkgo generates a Progress Report. The contents returned by the function will be included in the report. + +**This is an experimental feature and the public-facing interface may change in a future minor version of Ginkgo** + +Progress Reports are generated: +- whenever the user explicitly requests one (via `SIGINFO` or `SIGUSR1`) +- on nodes decorated with PollProgressAfter +- on suites run with --poll-progress-after +- whenever a test times out + +Ginkgo uses Progress Reports to convey the current state of the test suite, including any running goroutines. By attaching a progress reporter you are able to supplement these reports with additional information. + +# AttachProgressReporter returns a function that can be called to detach the progress reporter + +You can learn more about AttachProgressReporter here: https://onsi.github.io/ginkgo/#attaching-additional-information-to-progress-reports +*/ +func AttachProgressReporter(reporter func() string) func() { + return global.Suite.AttachProgressReporter(reporter) +} diff --git a/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go b/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go index e43d9cbbb..c65af4ce1 100644 --- a/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go @@ -46,7 +46,7 @@ const Pending = internal.Pending /* Serial is a decorator that allows you to mark a spec or container as serial. These specs will never run in parallel with other specs. -Tests in ordered containers cannot be marked as serial - mark the ordered container instead. +Specs in ordered containers cannot be marked as serial - mark the ordered container instead. You can learn more here: https://onsi.github.io/ginkgo/#serial-specs You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference @@ -54,7 +54,7 @@ You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorat const Serial = internal.Serial /* -Ordered is a decorator that allows you to mark a container as ordered. Tests in the container will always run in the order they appear. +Ordered is a decorator that allows you to mark a container as ordered. Specs in the container will always run in the order they appear. They will never be randomized and they will never run in parallel with one another, though they may run in parallel with other specs. You can learn more here: https://onsi.github.io/ginkgo/#ordered-containers @@ -62,6 +62,16 @@ You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorat */ const Ordered = internal.Ordered +/* +ContinueOnFailure is a decorator that allows you to mark an Ordered container to continue running specs even if failures occur. Ordinarily an ordered container will stop running specs after the first failure occurs. Note that if a BeforeAll or a BeforeEach/JustBeforeEach annotated with OncePerOrdered fails then no specs will run as the precondition for the Ordered container will consider to be failed. + +ContinueOnFailure only applies to the outermost Ordered container. Attempting to place ContinueOnFailure in a nested container will result in an error. + +You can learn more here: https://onsi.github.io/ginkgo/#ordered-containers +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const ContinueOnFailure = internal.ContinueOnFailure + /* OncePerOrdered is a decorator that allows you to mark outer BeforeEach, AfterEach, JustBeforeEach, and JustAfterEach setup nodes to run once per ordered context. Normally these setup nodes run around each individual spec, with OncePerOrdered they will run once around the set of specs in an ordered container. diff --git a/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go b/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go index da224eab6..743555dde 100644 --- a/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go +++ b/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "regexp" + "strconv" "strings" ) @@ -50,13 +51,35 @@ func NewWithNoColorBool(noColor bool) Formatter { } func New(colorMode ColorMode) Formatter { + colorAliases := map[string]int{ + "black": 0, + "red": 1, + "green": 2, + "yellow": 3, + "blue": 4, + "magenta": 5, + "cyan": 6, + "white": 7, + } + for colorAlias, n := range colorAliases { + colorAliases[fmt.Sprintf("bright-%s", colorAlias)] = n + 8 + } + getColor := func(color, defaultEscapeCode string) string { color = strings.ToUpper(strings.ReplaceAll(color, "-", "_")) envVar := fmt.Sprintf("GINKGO_CLI_COLOR_%s", color) - if escapeCode := os.Getenv(envVar); escapeCode != "" { - return escapeCode + envVarColor := os.Getenv(envVar) + if envVarColor == "" { + return defaultEscapeCode } - return defaultEscapeCode + if colorCode, ok := colorAliases[envVarColor]; ok { + return fmt.Sprintf("\x1b[38;5;%dm", colorCode) + } + colorCode, err := strconv.Atoi(envVarColor) + if err != nil || colorCode < 0 || colorCode > 255 { + return defaultEscapeCode + } + return fmt.Sprintf("\x1b[38;5;%dm", colorCode) } f := Formatter{ @@ -97,7 +120,10 @@ func (f Formatter) Fi(indentation uint, format string, args ...interface{}) stri } func (f Formatter) Fiw(indentation uint, maxWidth uint, format string, args ...interface{}) string { - out := fmt.Sprintf(f.style(format), args...) + out := f.style(format) + if len(args) > 0 { + out = fmt.Sprintf(out, args...) + } if indentation == 0 && maxWidth == 0 { return out diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go index 0273abe9c..73aff0b7a 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go @@ -2,6 +2,7 @@ package generators import ( "bytes" + "encoding/json" "fmt" "os" "text/template" @@ -25,6 +26,9 @@ func BuildBootstrapCommand() command.Command { {Name: "template", KeyPath: "CustomTemplate", UsageArgument: "template-file", Usage: "If specified, generate will use the contents of the file passed as the bootstrap template"}, + {Name: "template-data", KeyPath: "CustomTemplateData", + UsageArgument: "template-data-file", + Usage: "If specified, generate will use the contents of the file passed as data to be rendered in the bootstrap template"}, }, &conf, types.GinkgoFlagSections{}, @@ -57,6 +61,7 @@ type bootstrapData struct { GomegaImport string GinkgoPackage string GomegaPackage string + CustomData map[string]any } func generateBootstrap(conf GeneratorsConfig) { @@ -95,17 +100,32 @@ func generateBootstrap(conf GeneratorsConfig) { tpl, err := os.ReadFile(conf.CustomTemplate) command.AbortIfError("Failed to read custom bootstrap file:", err) templateText = string(tpl) + if conf.CustomTemplateData != "" { + var tplCustomDataMap map[string]any + tplCustomData, err := os.ReadFile(conf.CustomTemplateData) + command.AbortIfError("Failed to read custom boostrap data file:", err) + if !json.Valid([]byte(tplCustomData)) { + command.AbortWith("Invalid JSON object in custom data file.") + } + //create map from the custom template data + json.Unmarshal(tplCustomData, &tplCustomDataMap) + data.CustomData = tplCustomDataMap + } } else if conf.Agouti { templateText = agoutiBootstrapText } else { templateText = bootstrapText } - bootstrapTemplate, err := template.New("bootstrap").Funcs(sprig.TxtFuncMap()).Parse(templateText) + //Setting the option to explicitly fail if template is rendered trying to access missing key + bootstrapTemplate, err := template.New("bootstrap").Funcs(sprig.TxtFuncMap()).Option("missingkey=error").Parse(templateText) command.AbortIfError("Failed to parse bootstrap template:", err) buf := &bytes.Buffer{} - bootstrapTemplate.Execute(buf, data) + //Being explicit about failing sooner during template rendering + //when accessing custom data rather than during the go fmt command + err = bootstrapTemplate.Execute(buf, data) + command.AbortIfError("Failed to render bootstrap template:", err) buf.WriteTo(f) diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go index 93b0b4b25..48d23f919 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go @@ -2,6 +2,7 @@ package generators import ( "bytes" + "encoding/json" "fmt" "os" "path/filepath" @@ -28,6 +29,9 @@ func BuildGenerateCommand() command.Command { {Name: "template", KeyPath: "CustomTemplate", UsageArgument: "template-file", Usage: "If specified, generate will use the contents of the file passed as the test file template"}, + {Name: "template-data", KeyPath: "CustomTemplateData", + UsageArgument: "template-data-file", + Usage: "If specified, generate will use the contents of the file passed as data to be rendered in the test file template"}, }, &conf, types.GinkgoFlagSections{}, @@ -64,6 +68,7 @@ type specData struct { GomegaImport string GinkgoPackage string GomegaPackage string + CustomData map[string]any } func generateTestFiles(conf GeneratorsConfig, args []string) { @@ -122,16 +127,31 @@ func generateTestFileForSubject(subject string, conf GeneratorsConfig) { tpl, err := os.ReadFile(conf.CustomTemplate) command.AbortIfError("Failed to read custom template file:", err) templateText = string(tpl) + if conf.CustomTemplateData != "" { + var tplCustomDataMap map[string]any + tplCustomData, err := os.ReadFile(conf.CustomTemplateData) + command.AbortIfError("Failed to read custom template data file:", err) + if !json.Valid([]byte(tplCustomData)) { + command.AbortWith("Invalid JSON object in custom data file.") + } + //create map from the custom template data + json.Unmarshal(tplCustomData, &tplCustomDataMap) + data.CustomData = tplCustomDataMap + } } else if conf.Agouti { templateText = agoutiSpecText } else { templateText = specText } - specTemplate, err := template.New("spec").Funcs(sprig.TxtFuncMap()).Parse(templateText) + //Setting the option to explicitly fail if template is rendered trying to access missing key + specTemplate, err := template.New("spec").Funcs(sprig.TxtFuncMap()).Option("missingkey=error").Parse(templateText) command.AbortIfError("Failed to read parse test template:", err) - specTemplate.Execute(f, data) + //Being explicit about failing sooner during template rendering + //when accessing custom data rather than during the go fmt command + err = specTemplate.Execute(f, data) + command.AbortIfError("Failed to render bootstrap template:", err) internal.GoFmt(targetFile) } diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go index 3086e6056..3046a4487 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go @@ -13,6 +13,7 @@ import ( type GeneratorsConfig struct { Agouti, NoDot, Internal bool CustomTemplate string + CustomTemplateData string } func getPackageAndFormattedName() (string, string, string) { diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go index 496ec4a28..86da7340d 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go @@ -25,7 +25,16 @@ func CompileSuite(suite TestSuite, goFlagsConfig types.GoFlagsConfig) TestSuite return suite } - args, err := types.GenerateGoTestCompileArgs(goFlagsConfig, path, "./") + ginkgoInvocationPath, _ := os.Getwd() + ginkgoInvocationPath, _ = filepath.Abs(ginkgoInvocationPath) + packagePath := suite.AbsPath() + pathToInvocationPath, err := filepath.Rel(packagePath, ginkgoInvocationPath) + if err != nil { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to get relative path from package to the current working directory:\n%s", err.Error()) + return suite + } + args, err := types.GenerateGoTestCompileArgs(goFlagsConfig, path, "./", pathToInvocationPath) if err != nil { suite.State = TestSuiteStateFailedToCompile suite.CompilationError = fmt.Errorf("Failed to generate go test compile flags:\n%s", err.Error()) diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go index cad238671..41052ea19 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go @@ -6,6 +6,7 @@ import ( "io" "os" "os/exec" + "path/filepath" "regexp" "strings" "syscall" @@ -63,6 +64,12 @@ func checkForNoTestsWarning(buf *bytes.Buffer) bool { } func runGoTest(suite TestSuite, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig) TestSuite { + // As we run the go test from the suite directory, make sure the cover profile is absolute + // and placed into the expected output directory when one is configured. + if goFlagsConfig.Cover && !filepath.IsAbs(goFlagsConfig.CoverProfile) { + goFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0) + } + args, err := types.GenerateGoTestRunArgs(goFlagsConfig) command.AbortIfError("Failed to generate test run arguments", err) cmd, buf := buildAndStartCommand(suite, args, true) diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go index c197bb686..0b9b19fe7 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go @@ -1,6 +1,7 @@ package outline import ( + "github.com/onsi/ginkgo/v2/types" "go/ast" "go/token" "strconv" @@ -25,9 +26,10 @@ type ginkgoMetadata struct { // End is the position of first character immediately after the spec or container block End int `json:"end"` - Spec bool `json:"spec"` - Focused bool `json:"focused"` - Pending bool `json:"pending"` + Spec bool `json:"spec"` + Focused bool `json:"focused"` + Pending bool `json:"pending"` + Labels []string `json:"labels"` } // ginkgoNode is used to construct the outline as a tree @@ -145,27 +147,35 @@ func ginkgoNodeFromCallExpr(fset *token.FileSet, ce *ast.CallExpr, ginkgoPackage case "It", "Specify", "Entry": n.Spec = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + n.Pending = pendingFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "FIt", "FSpecify", "FEntry": n.Spec = true n.Focused = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "PIt", "PSpecify", "XIt", "XSpecify", "PEntry", "XEntry": n.Spec = true n.Pending = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "Context", "Describe", "When", "DescribeTable": n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + n.Pending = pendingFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "FContext", "FDescribe", "FWhen", "FDescribeTable": n.Focused = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "PContext", "PDescribe", "PWhen", "XContext", "XDescribe", "XWhen", "PDescribeTable", "XDescribeTable": n.Pending = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "By": n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) @@ -216,3 +226,77 @@ func textFromCallExpr(ce *ast.CallExpr) (string, bool) { return text.Value, true } } + +func labelFromCallExpr(ce *ast.CallExpr) []string { + + labels := []string{} + if len(ce.Args) < 2 { + return labels + } + + for _, arg := range ce.Args[1:] { + switch expr := arg.(type) { + case *ast.CallExpr: + id, ok := expr.Fun.(*ast.Ident) + if !ok { + // to skip over cases where the expr.Fun. is actually *ast.SelectorExpr + continue + } + if id.Name == "Label" { + ls := extractLabels(expr) + for _, label := range ls { + labels = append(labels, label) + } + } + } + } + return labels +} + +func extractLabels(expr *ast.CallExpr) []string { + out := []string{} + for _, arg := range expr.Args { + switch expr := arg.(type) { + case *ast.BasicLit: + if expr.Kind == token.STRING { + unquoted, err := strconv.Unquote(expr.Value) + if err != nil { + unquoted = expr.Value + } + validated, err := types.ValidateAndCleanupLabel(unquoted, types.CodeLocation{}) + if err == nil { + out = append(out, validated) + } + } + } + } + + return out +} + +func pendingFromCallExpr(ce *ast.CallExpr) bool { + + pending := false + if len(ce.Args) < 2 { + return pending + } + + for _, arg := range ce.Args[1:] { + switch expr := arg.(type) { + case *ast.CallExpr: + id, ok := expr.Fun.(*ast.Ident) + if !ok { + // to skip over cases where the expr.Fun. is actually *ast.SelectorExpr + continue + } + if id.Name == "Pending" { + pending = true + } + case *ast.Ident: + if expr.Name == "Pending" { + pending = true + } + } + } + return pending +} diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go index 4b45e7627..c2327cda8 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go @@ -85,12 +85,19 @@ func (o *outline) String() string { // one 'width' of spaces for every level of nesting. func (o *outline) StringIndent(width int) string { var b strings.Builder - b.WriteString("Name,Text,Start,End,Spec,Focused,Pending\n") + b.WriteString("Name,Text,Start,End,Spec,Focused,Pending,Labels\n") currentIndent := 0 pre := func(n *ginkgoNode) { b.WriteString(fmt.Sprintf("%*s", currentIndent, "")) - b.WriteString(fmt.Sprintf("%s,%s,%d,%d,%t,%t,%t\n", n.Name, n.Text, n.Start, n.End, n.Spec, n.Focused, n.Pending)) + var labels string + if len(n.Labels) == 1 { + labels = n.Labels[0] + } else { + labels = strings.Join(n.Labels, ", ") + } + //enclosing labels in a double quoted comma separate listed so that when inmported into a CSV app the Labels column has comma separate strings + b.WriteString(fmt.Sprintf("%s,%s,%d,%d,%t,%t,%t,\"%s\"\n", n.Name, n.Text, n.Start, n.End, n.Spec, n.Focused, n.Pending, labels)) currentIndent += width } post := func(n *ginkgoNode) { diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go new file mode 100644 index 000000000..85162720f --- /dev/null +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go @@ -0,0 +1,8 @@ +//go:build ginkgoclidependencies +// +build ginkgoclidependencies + +package ginkgo + +import ( + _ "github.com/onsi/ginkgo/v2/ginkgo" +) diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go index 1beeb1144..17073145f 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go @@ -1,26 +1,42 @@ package ginkgo -import "github.com/onsi/ginkgo/v2/internal/testingtproxy" +import ( + "github.com/onsi/ginkgo/v2/internal/testingtproxy" +) /* -GinkgoT() implements an interface analogous to *testing.T and can be used with -third-party libraries that accept *testing.T through an interface. +GinkgoT() implements an interface that allows third party libraries to integrate with and build on top of Ginkgo. + +GinkgoT() is analogous to *testing.T and implements the majority of *testing.T's methods. It can be typically be used a a drop-in replacement with third-party libraries that accept *testing.T through an interface. GinkgoT() takes an optional offset argument that can be used to get the -correct line number associated with the failure. +correct line number associated with the failure - though you do not need to use this if you call GinkgoHelper() or GinkgoT().Helper() appropriately You can learn more here: https://onsi.github.io/ginkgo/#using-third-party-libraries */ -func GinkgoT(optionalOffset ...int) GinkgoTInterface { +func GinkgoT(optionalOffset ...int) FullGinkgoTInterface { offset := 3 if len(optionalOffset) > 0 { offset = optionalOffset[0] } - return testingtproxy.New(GinkgoWriter, Fail, Skip, DeferCleanup, CurrentSpecReport, offset) + return testingtproxy.New( + GinkgoWriter, + Fail, + Skip, + DeferCleanup, + CurrentSpecReport, + AddReportEntry, + GinkgoRecover, + AttachProgressReporter, + suiteConfig.RandomSeed, + suiteConfig.ParallelProcess, + suiteConfig.ParallelTotal, + reporterConfig.NoColor, + offset) } /* -The interface returned by GinkgoT(). This covers most of the methods in the testing package's T. +The portion of the interface returned by GinkgoT() that maps onto methods in the testing package's T. */ type GinkgoTInterface interface { Cleanup(func()) @@ -43,3 +59,33 @@ type GinkgoTInterface interface { Skipped() bool TempDir() string } + +/* +Additional methods returned by GinkgoT() that provide deeper integration points into Ginkgo +*/ +type FullGinkgoTInterface interface { + GinkgoTInterface + + AddReportEntryVisibilityAlways(name string, args ...any) + AddReportEntryVisibilityFailureOrVerbose(name string, args ...any) + AddReportEntryVisibilityNever(name string, args ...any) + + //Prints to the GinkgoWriter + Print(a ...interface{}) + Printf(format string, a ...interface{}) + Println(a ...interface{}) + + //Provides access to Ginkgo's color formatting, correctly configured to match the color settings specified in the invocation of ginkgo + F(format string, args ...any) string + Fi(indentation uint, format string, args ...any) string + Fiw(indentation uint, maxWidth uint, format string, args ...any) string + + GinkgoRecover() + DeferCleanup(args ...any) + + RandomSeed() int64 + ParallelProcess() int + ParallelTotal() int + + AttachProgressReporter(func() string) func() +} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/group.go b/vendor/github.com/onsi/ginkgo/v2/internal/group.go index 5c782d3ff..ae1b7b011 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/group.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/group.go @@ -94,15 +94,19 @@ type group struct { runOncePairs map[uint]runOncePairs runOnceTracker map[runOncePair]types.SpecState - succeeded bool + succeeded bool + failedInARunOnceBefore bool + continueOnFailure bool } func newGroup(suite *Suite) *group { return &group{ - suite: suite, - runOncePairs: map[uint]runOncePairs{}, - runOnceTracker: map[runOncePair]types.SpecState{}, - succeeded: true, + suite: suite, + runOncePairs: map[uint]runOncePairs{}, + runOnceTracker: map[runOncePair]types.SpecState{}, + succeeded: true, + failedInARunOnceBefore: false, + continueOnFailure: false, } } @@ -137,10 +141,14 @@ func (g *group) evaluateSkipStatus(spec Spec) (types.SpecState, types.Failure) { if !g.suite.deadline.IsZero() && g.suite.deadline.Before(time.Now()) { return types.SpecStateSkipped, types.Failure{} } - if !g.succeeded { + if !g.succeeded && !g.continueOnFailure { return types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt), "Spec skipped because an earlier spec in an ordered container failed") } + if g.failedInARunOnceBefore && g.continueOnFailure { + return types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt), + "Spec skipped because a BeforeAll node failed") + } beforeOncePairs := g.runOncePairs[spec.SubjectID()].withType(types.NodeTypeBeforeAll | types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach) for _, pair := range beforeOncePairs { if g.runOnceTracker[pair].Is(types.SpecStateSkipped) { @@ -168,7 +176,8 @@ func (g *group) isLastSpecWithPair(specID uint, pair runOncePair) bool { return lastSpecID == specID } -func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { +func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) bool { + failedInARunOnceBefore := false pairs := g.runOncePairs[spec.SubjectID()] nodes := spec.Nodes.WithType(types.NodeTypeBeforeAll) @@ -194,6 +203,7 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { } if g.suite.currentSpecReport.State != types.SpecStatePassed { terminatingNode, terminatingPair = node, oncePair + failedInARunOnceBefore = !terminatingPair.isZero() break } } @@ -216,7 +226,7 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { //this node has already been run on this attempt, don't rerun it return false } - pair := runOncePair{} + var pair runOncePair switch node.NodeType { case types.NodeTypeCleanupAfterEach, types.NodeTypeCleanupAfterAll: // check if we were generated in an AfterNode that has already run @@ -246,9 +256,13 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { if !terminatingPair.isZero() && terminatingNode.NestingLevel == node.NestingLevel { return true //...or, a run-once node at our nesting level was skipped which means this is our last chance to run } - case types.SpecStateFailed, types.SpecStatePanicked: // the spec has failed... + case types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateTimedout: // the spec has failed... if isFinalAttempt { - return true //...if this was the last attempt then we're the last spec to run and so the AfterNode should run + if g.continueOnFailure { + return isLastSpecWithPair || failedInARunOnceBefore //...we're configured to continue on failures - so we should only run if we're the last spec for this pair or if we failed in a runOnceBefore (which means we _are_ the last spec to run) + } else { + return true //...this was the last attempt and continueOnFailure is false therefore we are the last spec to run and so the AfterNode should run + } } if !terminatingPair.isZero() { // ...and it failed in a run-once. which will be running again if node.NodeType.Is(types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll) { @@ -281,10 +295,12 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { includeDeferCleanups = true } + return failedInARunOnceBefore } func (g *group) run(specs Specs) { g.specs = specs + g.continueOnFailure = specs[0].Nodes.FirstNodeMarkedOrdered().MarkedContinueOnFailure for _, spec := range g.specs { g.runOncePairs[spec.SubjectID()] = runOncePairsForSpec(spec) } @@ -301,8 +317,8 @@ func (g *group) run(specs Specs) { skip := g.suite.config.DryRun || g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates|types.SpecStateSkipped|types.SpecStatePending) g.suite.currentSpecReport.StartTime = time.Now() + failedInARunOnceBefore := false if !skip { - var maxAttempts = 1 if g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 { @@ -327,7 +343,7 @@ func (g *group) run(specs Specs) { } } - g.attemptSpec(attempt == maxAttempts-1, spec) + failedInARunOnceBefore = g.attemptSpec(attempt == maxAttempts-1, spec) g.suite.currentSpecReport.EndTime = time.Now() g.suite.currentSpecReport.RunTime = g.suite.currentSpecReport.EndTime.Sub(g.suite.currentSpecReport.StartTime) @@ -355,6 +371,7 @@ func (g *group) run(specs Specs) { g.suite.processCurrentSpecReport() if g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates) { g.succeeded = false + g.failedInARunOnceBefore = g.failedInARunOnceBefore || failedInARunOnceBefore } g.suite.selectiveLock.Lock() g.suite.currentSpecReport = types.SpecReport{} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/node.go b/vendor/github.com/onsi/ginkgo/v2/internal/node.go index 69928eed6..0869bffb3 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/node.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/node.go @@ -47,19 +47,20 @@ type Node struct { ReportEachBody func(types.SpecReport) ReportSuiteBody func(types.Report) - MarkedFocus bool - MarkedPending bool - MarkedSerial bool - MarkedOrdered bool - MarkedOncePerOrdered bool - FlakeAttempts int - MustPassRepeatedly int - Labels Labels - PollProgressAfter time.Duration - PollProgressInterval time.Duration - NodeTimeout time.Duration - SpecTimeout time.Duration - GracePeriod time.Duration + MarkedFocus bool + MarkedPending bool + MarkedSerial bool + MarkedOrdered bool + MarkedContinueOnFailure bool + MarkedOncePerOrdered bool + FlakeAttempts int + MustPassRepeatedly int + Labels Labels + PollProgressAfter time.Duration + PollProgressInterval time.Duration + NodeTimeout time.Duration + SpecTimeout time.Duration + GracePeriod time.Duration NodeIDWhereCleanupWasGenerated uint } @@ -69,6 +70,7 @@ type focusType bool type pendingType bool type serialType bool type orderedType bool +type continueOnFailureType bool type honorsOrderedType bool type suppressProgressReporting bool @@ -76,6 +78,7 @@ const Focus = focusType(true) const Pending = pendingType(true) const Serial = serialType(true) const Ordered = orderedType(true) +const ContinueOnFailure = continueOnFailureType(true) const OncePerOrdered = honorsOrderedType(true) const SuppressProgressReporting = suppressProgressReporting(true) @@ -90,6 +93,10 @@ type NodeTimeout time.Duration type SpecTimeout time.Duration type GracePeriod time.Duration +func (l Labels) MatchesLabelFilter(query string) bool { + return types.MustParseLabelFilter(query)(l) +} + func UnionOfLabels(labels ...Labels) Labels { out := Labels{} seen := map[string]bool{} @@ -133,6 +140,8 @@ func isDecoration(arg interface{}) bool { return true case t == reflect.TypeOf(Ordered): return true + case t == reflect.TypeOf(ContinueOnFailure): + return true case t == reflect.TypeOf(OncePerOrdered): return true case t == reflect.TypeOf(SuppressProgressReporting): @@ -241,6 +250,11 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy if !nodeType.Is(types.NodeTypeContainer) { appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Ordered")) } + case t == reflect.TypeOf(ContinueOnFailure): + node.MarkedContinueOnFailure = bool(arg.(continueOnFailureType)) + if !nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "ContinueOnFailure")) + } case t == reflect.TypeOf(OncePerOrdered): node.MarkedOncePerOrdered = bool(arg.(honorsOrderedType)) if !nodeType.Is(types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach | types.NodeTypeAfterEach | types.NodeTypeJustAfterEach) { @@ -386,6 +400,10 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy appendError(types.GinkgoErrors.InvalidDeclarationOfFocusedAndPending(node.CodeLocation, nodeType)) } + if node.MarkedContinueOnFailure && !node.MarkedOrdered { + appendError(types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation)) + } + hasContext := node.HasContext || node.SynchronizedAfterSuiteProc1BodyHasContext || node.SynchronizedAfterSuiteAllProcsBodyHasContext || node.SynchronizedBeforeSuiteProc1BodyHasContext || node.SynchronizedBeforeSuiteAllProcsBodyHasContext if !hasContext && (node.NodeTimeout > 0 || node.SpecTimeout > 0 || node.GracePeriod > 0) && len(errors) == 0 { diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go b/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go index 161be820c..7ed43c7fd 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go @@ -7,6 +7,58 @@ import ( "github.com/onsi/ginkgo/v2/types" ) +type SortableSpecs struct { + Specs Specs + Indexes []int +} + +func NewSortableSpecs(specs Specs) *SortableSpecs { + indexes := make([]int, len(specs)) + for i := range specs { + indexes[i] = i + } + return &SortableSpecs{ + Specs: specs, + Indexes: indexes, + } +} +func (s *SortableSpecs) Len() int { return len(s.Indexes) } +func (s *SortableSpecs) Swap(i, j int) { s.Indexes[i], s.Indexes[j] = s.Indexes[j], s.Indexes[i] } +func (s *SortableSpecs) Less(i, j int) bool { + a, b := s.Specs[s.Indexes[i]], s.Specs[s.Indexes[j]] + + firstOrderedA := a.Nodes.FirstNodeMarkedOrdered() + firstOrderedB := b.Nodes.FirstNodeMarkedOrdered() + if firstOrderedA.ID == firstOrderedB.ID && !firstOrderedA.IsZero() { + // strictly preserve order in ordered containers. ID will track this as IDs are generated monotonically + return a.FirstNodeWithType(types.NodeTypeIt).ID < b.FirstNodeWithType(types.NodeTypeIt).ID + } + + aCLs := a.Nodes.WithType(types.NodeTypesForContainerAndIt).CodeLocations() + bCLs := b.Nodes.WithType(types.NodeTypesForContainerAndIt).CodeLocations() + for i := 0; i < len(aCLs) && i < len(bCLs); i++ { + aCL, bCL := aCLs[i], bCLs[i] + if aCL.FileName < bCL.FileName { + return true + } else if aCL.FileName > bCL.FileName { + return false + } + if aCL.LineNumber < bCL.LineNumber { + return true + } else if aCL.LineNumber > bCL.LineNumber { + return false + } + } + // either everything is equal or we have different lengths of CLs + if len(aCLs) < len(bCLs) { + return true + } else if len(aCLs) > len(bCLs) { + return false + } + // ok, now we are sure everything was equal. so we use the spec text to break ties + return a.Text() < b.Text() +} + type GroupedSpecIndices []SpecIndices type SpecIndices []int @@ -28,12 +80,17 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, // Seed a new random source based on thee configured random seed. r := rand.New(rand.NewSource(suiteConfig.RandomSeed)) - // first break things into execution groups + // first, we sort the entire suite to ensure a deterministic order. the sort is performed by filename, then line number, and then spec text. this ensures every parallel process has the exact same spec order and is only necessary to cover the edge case where the user iterates over a map to generate specs. + sortableSpecs := NewSortableSpecs(specs) + sort.Sort(sortableSpecs) + + // then we break things into execution groups // a group represents a single unit of execution and is a collection of SpecIndices // usually a group is just a single spec, however ordered containers must be preserved as a single group executionGroupIDs := []uint{} executionGroups := map[uint]SpecIndices{} - for idx, spec := range specs { + for _, idx := range sortableSpecs.Indexes { + spec := specs[idx] groupNode := spec.Nodes.FirstNodeMarkedOrdered() if groupNode.IsZero() { groupNode = spec.Nodes.FirstNodeWithType(types.NodeTypeIt) @@ -48,7 +105,6 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, // we shuffle outermost containers. so we need to form shufflable groupings of GroupIDs shufflableGroupingIDs := []uint{} shufflableGroupingIDToGroupIDs := map[uint][]uint{} - shufflableGroupingsIDToSortKeys := map[uint]string{} // for each execution group we're going to have to pick a node to represent how the // execution group is grouped for shuffling: @@ -57,7 +113,7 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, nodeTypesToShuffle = types.NodeTypeIt } - //so, fo reach execution group: + //so, for each execution group: for _, groupID := range executionGroupIDs { // pick out a representative spec representativeSpec := specs[executionGroups[groupID][0]] @@ -72,22 +128,9 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, if len(shufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID]) == 1 { // record the shuffleable group ID shufflableGroupingIDs = append(shufflableGroupingIDs, shufflableGroupingNode.ID) - // and record the sort key to use - shufflableGroupingsIDToSortKeys[shufflableGroupingNode.ID] = shufflableGroupingNode.CodeLocation.String() } } - // now we sort the shufflable groups by the sort key. We use the shufflable group nodes code location and break ties using its node id - sort.SliceStable(shufflableGroupingIDs, func(i, j int) bool { - keyA := shufflableGroupingsIDToSortKeys[shufflableGroupingIDs[i]] - keyB := shufflableGroupingsIDToSortKeys[shufflableGroupingIDs[j]] - if keyA == keyB { - return shufflableGroupingIDs[i] < shufflableGroupingIDs[j] - } else { - return keyA < keyB - } - }) - // now we permute the sorted shufflable grouping IDs and build the ordered Groups orderedGroups := GroupedSpecIndices{} permutation := r.Perm(len(shufflableGroupingIDs)) diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go b/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go new file mode 100644 index 000000000..2c6e260f7 --- /dev/null +++ b/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go @@ -0,0 +1,79 @@ +package internal + +import ( + "context" + "sort" + "strings" + "sync" + + "github.com/onsi/ginkgo/v2/types" +) + +type ProgressReporterManager struct { + lock *sync.Mutex + progressReporters map[int]func() string + prCounter int +} + +func NewProgressReporterManager() *ProgressReporterManager { + return &ProgressReporterManager{ + progressReporters: map[int]func() string{}, + lock: &sync.Mutex{}, + } +} + +func (prm *ProgressReporterManager) AttachProgressReporter(reporter func() string) func() { + prm.lock.Lock() + defer prm.lock.Unlock() + prm.prCounter += 1 + prCounter := prm.prCounter + prm.progressReporters[prCounter] = reporter + + return func() { + prm.lock.Lock() + defer prm.lock.Unlock() + delete(prm.progressReporters, prCounter) + } +} + +func (prm *ProgressReporterManager) QueryProgressReporters(ctx context.Context, failer *Failer) []string { + prm.lock.Lock() + keys := []int{} + for key := range prm.progressReporters { + keys = append(keys, key) + } + sort.Ints(keys) + reporters := []func() string{} + for _, key := range keys { + reporters = append(reporters, prm.progressReporters[key]) + } + prm.lock.Unlock() + + if len(reporters) == 0 { + return nil + } + out := []string{} + for _, reporter := range reporters { + reportC := make(chan string, 1) + go func() { + defer func() { + e := recover() + if e != nil { + failer.Panic(types.NewCodeLocationWithStackTrace(1), e) + reportC <- "failed to query attached progress reporter" + } + }() + reportC <- reporter() + }() + var report string + select { + case report = <-reportC: + case <-ctx.Done(): + return out + } + if strings.TrimSpace(report) != "" { + out = append(out, report) + } + } + return out +} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go b/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go index 8f569dd35..2515b84a1 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go @@ -2,8 +2,6 @@ package internal import ( "context" - "sort" - "sync" "github.com/onsi/ginkgo/v2/types" ) @@ -17,11 +15,9 @@ type SpecContext interface { type specContext struct { context.Context + *ProgressReporterManager - cancel context.CancelFunc - lock *sync.Mutex - progressReporters map[int]func() string - prCounter int + cancel context.CancelFunc suite *Suite } @@ -36,11 +32,9 @@ This is because Ginkgo needs finer control over when the context is canceled. S func NewSpecContext(suite *Suite) *specContext { ctx, cancel := context.WithCancel(context.Background()) sc := &specContext{ - cancel: cancel, - suite: suite, - lock: &sync.Mutex{}, - prCounter: 0, - progressReporters: map[int]func() string{}, + cancel: cancel, + suite: suite, + ProgressReporterManager: NewProgressReporterManager(), } ctx = context.WithValue(ctx, "GINKGO_SPEC_CONTEXT", sc) //yes, yes, the go docs say don't use a string for a key... but we'd rather avoid a circular dependency between Gomega and Ginkgo sc.Context = ctx //thank goodness for garbage collectors that can handle circular dependencies @@ -51,40 +45,3 @@ func NewSpecContext(suite *Suite) *specContext { func (sc *specContext) SpecReport() types.SpecReport { return sc.suite.CurrentSpecReport() } - -func (sc *specContext) AttachProgressReporter(reporter func() string) func() { - sc.lock.Lock() - defer sc.lock.Unlock() - sc.prCounter += 1 - prCounter := sc.prCounter - sc.progressReporters[prCounter] = reporter - - return func() { - sc.lock.Lock() - defer sc.lock.Unlock() - delete(sc.progressReporters, prCounter) - } -} - -func (sc *specContext) QueryProgressReporters() []string { - sc.lock.Lock() - keys := []int{} - for key := range sc.progressReporters { - keys = append(keys, key) - } - sort.Ints(keys) - reporters := []func() string{} - for _, key := range keys { - reporters = append(reporters, sc.progressReporters[key]) - } - sc.lock.Unlock() - - if len(reporters) == 0 { - return nil - } - out := []string{} - for _, reporter := range reporters { - out = append(out, reporter()) - } - return out -} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go index f470641a6..a1dbd4c62 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go @@ -9,6 +9,7 @@ import ( "github.com/onsi/ginkgo/v2/internal/parallel_support" "github.com/onsi/ginkgo/v2/reporters" "github.com/onsi/ginkgo/v2/types" + "golang.org/x/net/context" ) type Phase uint @@ -19,10 +20,14 @@ const ( PhaseRun ) +var PROGRESS_REPORTER_DEADLING = 5 * time.Second + type Suite struct { tree *TreeNode topLevelContainers Nodes + *ProgressReporterManager + phase Phase suiteNodes Nodes @@ -64,8 +69,9 @@ type Suite struct { func NewSuite() *Suite { return &Suite{ - tree: &TreeNode{}, - phase: PhaseBuildTopLevel, + tree: &TreeNode{}, + phase: PhaseBuildTopLevel, + ProgressReporterManager: NewProgressReporterManager(), selectiveLock: &sync.Mutex{}, } @@ -151,6 +157,13 @@ func (suite *Suite) PushNode(node Node) error { } } + if node.MarkedContinueOnFailure { + firstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered() + if !firstOrderedNode.IsZero() { + return types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation) + } + } + if node.NodeType == types.NodeTypeContainer { // During PhaseBuildTopLevel we only track the top level containers without entering them // We only enter the top level container nodes during PhaseBuildTree @@ -331,10 +344,13 @@ func (suite *Suite) generateProgressReport(fullReport bool) types.ProgressReport suite.selectiveLock.Lock() defer suite.selectiveLock.Unlock() + deadline, cancel := context.WithTimeout(context.Background(), PROGRESS_REPORTER_DEADLING) + defer cancel() var additionalReports []string if suite.currentSpecContext != nil { - additionalReports = suite.currentSpecContext.QueryProgressReporters() + additionalReports = append(additionalReports, suite.currentSpecContext.QueryProgressReporters(deadline, suite.failer)...) } + additionalReports = append(additionalReports, suite.QueryProgressReporters(deadline, suite.failer)...) gwOutput := suite.currentSpecReport.CapturedGinkgoWriterOutput + string(suite.writer.Bytes()) pr, err := NewProgressReport(suite.isRunningInParallel(), suite.currentSpecReport, suite.currentNode, suite.currentNodeStartTime, suite.currentByStep, gwOutput, timelineLocation, additionalReports, suite.config.SourceRoots, fullReport) diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go index 2f42b2642..92acc0a00 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go @@ -5,34 +5,61 @@ import ( "io" "os" + "github.com/onsi/ginkgo/v2/formatter" "github.com/onsi/ginkgo/v2/internal" "github.com/onsi/ginkgo/v2/types" ) type failFunc func(message string, callerSkip ...int) type skipFunc func(message string, callerSkip ...int) -type cleanupFunc func(args ...interface{}) +type cleanupFunc func(args ...any) type reportFunc func() types.SpecReport +type addReportEntryFunc func(names string, args ...any) +type ginkgoWriterInterface interface { + io.Writer -func New(writer io.Writer, fail failFunc, skip skipFunc, cleanup cleanupFunc, report reportFunc, offset int) *ginkgoTestingTProxy { + Print(a ...interface{}) + Printf(format string, a ...interface{}) + Println(a ...interface{}) +} +type ginkgoRecoverFunc func() +type attachProgressReporterFunc func(func() string) func() + +func New(writer ginkgoWriterInterface, fail failFunc, skip skipFunc, cleanup cleanupFunc, report reportFunc, addReportEntry addReportEntryFunc, ginkgoRecover ginkgoRecoverFunc, attachProgressReporter attachProgressReporterFunc, randomSeed int64, parallelProcess int, parallelTotal int, noColor bool, offset int) *ginkgoTestingTProxy { return &ginkgoTestingTProxy{ - fail: fail, - offset: offset, - writer: writer, - skip: skip, - cleanup: cleanup, - report: report, + fail: fail, + offset: offset, + writer: writer, + skip: skip, + cleanup: cleanup, + report: report, + addReportEntry: addReportEntry, + ginkgoRecover: ginkgoRecover, + attachProgressReporter: attachProgressReporter, + randomSeed: randomSeed, + parallelProcess: parallelProcess, + parallelTotal: parallelTotal, + f: formatter.NewWithNoColorBool(noColor), } } type ginkgoTestingTProxy struct { - fail failFunc - skip skipFunc - cleanup cleanupFunc - report reportFunc - offset int - writer io.Writer -} + fail failFunc + skip skipFunc + cleanup cleanupFunc + report reportFunc + offset int + writer ginkgoWriterInterface + addReportEntry addReportEntryFunc + ginkgoRecover ginkgoRecoverFunc + attachProgressReporter attachProgressReporterFunc + randomSeed int64 + parallelProcess int + parallelTotal int + f formatter.Formatter +} + +// basic testing.T support func (t *ginkgoTestingTProxy) Cleanup(f func()) { t.cleanup(f, internal.Offset(1)) @@ -81,7 +108,7 @@ func (t *ginkgoTestingTProxy) Fatalf(format string, args ...interface{}) { } func (t *ginkgoTestingTProxy) Helper() { - // No-op + types.MarkAsHelper(1) } func (t *ginkgoTestingTProxy) Log(args ...interface{}) { @@ -126,3 +153,54 @@ func (t *ginkgoTestingTProxy) TempDir() string { return tmpDir } + +// FullGinkgoTInterface +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityAlways(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityAlways} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityFailureOrVerbose(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityFailureOrVerbose} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityNever(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityNever} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) Print(a ...any) { + t.writer.Print(a...) +} +func (t *ginkgoTestingTProxy) Printf(format string, a ...any) { + t.writer.Printf(format, a...) +} +func (t *ginkgoTestingTProxy) Println(a ...any) { + t.writer.Println(a...) +} +func (t *ginkgoTestingTProxy) F(format string, args ...any) string { + return t.f.F(format, args...) +} +func (t *ginkgoTestingTProxy) Fi(indentation uint, format string, args ...any) string { + return t.f.Fi(indentation, format, args...) +} +func (t *ginkgoTestingTProxy) Fiw(indentation uint, maxWidth uint, format string, args ...any) string { + return t.f.Fiw(indentation, maxWidth, format, args...) +} +func (t *ginkgoTestingTProxy) GinkgoRecover() { + t.ginkgoRecover() +} +func (t *ginkgoTestingTProxy) DeferCleanup(args ...any) { + finalArgs := []any{internal.Offset(1)} + t.cleanup(append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) RandomSeed() int64 { + return t.randomSeed +} +func (t *ginkgoTestingTProxy) ParallelProcess() int { + return t.parallelProcess +} +func (t *ginkgoTestingTProxy) ParallelTotal() int { + return t.parallelTotal +} +func (t *ginkgoTestingTProxy) AttachProgressReporter(f func() string) func() { + return t.attachProgressReporter(f) +} diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go b/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go index 7a27220ca..56b7be758 100644 --- a/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go +++ b/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go @@ -12,6 +12,7 @@ import ( "io" "runtime" "strings" + "sync" "time" "github.com/onsi/ginkgo/v2/formatter" @@ -23,7 +24,7 @@ type DefaultReporter struct { writer io.Writer // managing the emission stream - lastChar string + lastCharWasNewline bool lastEmissionWasDelimiter bool // rendering @@ -32,6 +33,7 @@ type DefaultReporter struct { formatter formatter.Formatter runningInParallel bool + lock *sync.Mutex } func NewDefaultReporterUnderTest(conf types.ReporterConfig, writer io.Writer) *DefaultReporter { @@ -46,12 +48,13 @@ func NewDefaultReporter(conf types.ReporterConfig, writer io.Writer) *DefaultRep conf: conf, writer: writer, - lastChar: "\n", + lastCharWasNewline: true, lastEmissionWasDelimiter: false, specDenoter: "•", retryDenoter: "↺", formatter: formatter.NewWithNoColorBool(conf.NoColor), + lock: &sync.Mutex{}, } if runtime.GOOS == "windows" { reporter.specDenoter = "+" @@ -528,7 +531,7 @@ func (r *DefaultReporter) EmitReportEntry(entry types.ReportEntry) { } func (r *DefaultReporter) emitReportEntry(indent uint, entry types.ReportEntry) { - r.emitBlock(r.fi(indent, "{{bold}}"+entry.Name+"{{gray}} - %s @ %s{{/}}", entry.Location, entry.Time.Format(types.GINKGO_TIME_FORMAT))) + r.emitBlock(r.fi(indent, "{{bold}}"+entry.Name+"{{gray}} "+fmt.Sprintf("- %s @ %s{{/}}", entry.Location, entry.Time.Format(types.GINKGO_TIME_FORMAT)))) if representation := entry.StringRepresentation(); representation != "" { r.emitBlock(r.fi(indent+1, representation)) } @@ -619,31 +622,37 @@ func (r *DefaultReporter) emitSource(indent uint, fc types.FunctionCall) { /* Emitting to the writer */ func (r *DefaultReporter) emit(s string) { - if len(s) > 0 { - r.lastChar = s[len(s)-1:] - r.lastEmissionWasDelimiter = false - r.writer.Write([]byte(s)) - } + r._emit(s, false, false) } func (r *DefaultReporter) emitBlock(s string) { - if len(s) > 0 { - if r.lastChar != "\n" { - r.emit("\n") - } - r.emit(s) - if r.lastChar != "\n" { - r.emit("\n") - } - } + r._emit(s, true, false) } func (r *DefaultReporter) emitDelimiter(indent uint) { - if r.lastEmissionWasDelimiter { + r._emit(r.fi(indent, "{{gray}}%s{{/}}", strings.Repeat("-", 30)), true, true) +} + +// a bit ugly - but we're trying to minimize locking on this hot codepath +func (r *DefaultReporter) _emit(s string, block bool, isDelimiter bool) { + if len(s) == 0 { + return + } + r.lock.Lock() + defer r.lock.Unlock() + if isDelimiter && r.lastEmissionWasDelimiter { return } - r.emitBlock(r.fi(indent, "{{gray}}%s{{/}}", strings.Repeat("-", 30))) - r.lastEmissionWasDelimiter = true + if block && !r.lastCharWasNewline { + r.writer.Write([]byte("\n")) + } + r.lastCharWasNewline = (s[len(s)-1:] == "\n") + r.writer.Write([]byte(s)) + if block && !r.lastCharWasNewline { + r.writer.Write([]byte("\n")) + r.lastCharWasNewline = true + } + r.lastEmissionWasDelimiter = isDelimiter } /* Rendering text */ diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go b/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go index fb87e24d7..ca98609d0 100644 --- a/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go +++ b/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go @@ -36,6 +36,9 @@ type JunitReportConfig struct { // Enable OmitLeafNodeType to prevent the spec leaf node type from appearing in the spec name OmitLeafNodeType bool + + // Enable OmitSuiteSetupNodes to prevent the creation of testcase entries for setup nodes + OmitSuiteSetupNodes bool } type JUnitTestSuites struct { @@ -177,6 +180,9 @@ func GenerateJUnitReportWithConfig(report types.Report, dst string, config Junit }, } for _, spec := range report.SpecReports { + if config.OmitSuiteSetupNodes && spec.LeafNodeType != types.NodeTypeIt { + continue + } name := fmt.Sprintf("[%s]", spec.LeafNodeType) if config.OmitLeafNodeType { name = "" diff --git a/vendor/github.com/onsi/ginkgo/v2/table_dsl.go b/vendor/github.com/onsi/ginkgo/v2/table_dsl.go index 683674462..ac9b7abb5 100644 --- a/vendor/github.com/onsi/ginkgo/v2/table_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/table_dsl.go @@ -13,7 +13,7 @@ import ( /* The EntryDescription decorator allows you to pass a format string to DescribeTable() and Entry(). This format string is used to generate entry names via: - fmt.Sprintf(formatString, parameters...) + fmt.Sprintf(formatString, parameters...) where parameters are the parameters passed into the entry. @@ -32,19 +32,20 @@ DescribeTable describes a table-driven spec. For example: - DescribeTable("a simple table", - func(x int, y int, expected bool) { - Ω(x > y).Should(Equal(expected)) - }, - Entry("x > y", 1, 0, true), - Entry("x == y", 0, 0, false), - Entry("x < y", 0, 1, false), - ) + DescribeTable("a simple table", + func(x int, y int, expected bool) { + Ω(x > y).Should(Equal(expected)) + }, + Entry("x > y", 1, 0, true), + Entry("x == y", 0, 0, false), + Entry("x < y", 0, 1, false), + ) You can learn more about DescribeTable here: https://onsi.github.io/ginkgo/#table-specs And can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns */ func DescribeTable(description string, args ...interface{}) bool { + GinkgoHelper() generateTable(description, args...) return true } @@ -53,6 +54,7 @@ func DescribeTable(description string, args ...interface{}) bool { You can focus a table with `FDescribeTable`. This is equivalent to `FDescribe`. */ func FDescribeTable(description string, args ...interface{}) bool { + GinkgoHelper() args = append(args, internal.Focus) generateTable(description, args...) return true @@ -62,6 +64,7 @@ func FDescribeTable(description string, args ...interface{}) bool { You can mark a table as pending with `PDescribeTable`. This is equivalent to `PDescribe`. */ func PDescribeTable(description string, args ...interface{}) bool { + GinkgoHelper() args = append(args, internal.Pending) generateTable(description, args...) return true @@ -95,26 +98,29 @@ If you want to generate interruptible specs simply write a Table function that a You can learn more about Entry here: https://onsi.github.io/ginkgo/#table-specs */ func Entry(description interface{}, args ...interface{}) TableEntry { + GinkgoHelper() decorations, parameters := internal.PartitionDecorations(args...) - return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(1)} + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} } /* You can focus a particular entry with FEntry. This is equivalent to FIt. */ func FEntry(description interface{}, args ...interface{}) TableEntry { + GinkgoHelper() decorations, parameters := internal.PartitionDecorations(args...) decorations = append(decorations, internal.Focus) - return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(1)} + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} } /* You can mark a particular entry as pending with PEntry. This is equivalent to PIt. */ func PEntry(description interface{}, args ...interface{}) TableEntry { + GinkgoHelper() decorations, parameters := internal.PartitionDecorations(args...) decorations = append(decorations, internal.Pending) - return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(1)} + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} } /* @@ -126,7 +132,8 @@ var contextType = reflect.TypeOf(new(context.Context)).Elem() var specContextType = reflect.TypeOf(new(SpecContext)).Elem() func generateTable(description string, args ...interface{}) { - cl := types.NewCodeLocation(2) + GinkgoHelper() + cl := types.NewCodeLocation(0) containerNodeArgs := []interface{}{cl} entries := []TableEntry{} diff --git a/vendor/github.com/onsi/ginkgo/v2/types/code_location.go b/vendor/github.com/onsi/ginkgo/v2/types/code_location.go index 129109183..9cd576817 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/code_location.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/code_location.go @@ -7,6 +7,7 @@ import ( "runtime" "runtime/debug" "strings" + "sync" ) type CodeLocation struct { @@ -38,6 +39,73 @@ func (codeLocation CodeLocation) ContentsOfLine() string { return lines[codeLocation.LineNumber-1] } +type codeLocationLocator struct { + pcs map[uintptr]bool + helpers map[string]bool + lock *sync.Mutex +} + +func (c *codeLocationLocator) addHelper(pc uintptr) { + c.lock.Lock() + defer c.lock.Unlock() + + if c.pcs[pc] { + return + } + c.lock.Unlock() + f := runtime.FuncForPC(pc) + c.lock.Lock() + if f == nil { + return + } + c.helpers[f.Name()] = true + c.pcs[pc] = true +} + +func (c *codeLocationLocator) hasHelper(name string) bool { + c.lock.Lock() + defer c.lock.Unlock() + return c.helpers[name] +} + +func (c *codeLocationLocator) getCodeLocation(skip int) CodeLocation { + pc := make([]uintptr, 40) + n := runtime.Callers(skip+2, pc) + if n == 0 { + return CodeLocation{} + } + pc = pc[:n] + frames := runtime.CallersFrames(pc) + for { + frame, more := frames.Next() + if !c.hasHelper(frame.Function) { + return CodeLocation{FileName: frame.File, LineNumber: frame.Line} + } + if !more { + break + } + } + return CodeLocation{} +} + +var clLocator = &codeLocationLocator{ + pcs: map[uintptr]bool{}, + helpers: map[string]bool{}, + lock: &sync.Mutex{}, +} + +// MarkAsHelper is used by GinkgoHelper to mark the caller (appropriately offset by skip)as a helper. You can use this directly if you need to provide an optional `skip` to mark functions further up the call stack as helpers. +func MarkAsHelper(optionalSkip ...int) { + skip := 1 + if len(optionalSkip) > 0 { + skip += optionalSkip[0] + } + pc, _, _, ok := runtime.Caller(skip) + if ok { + clLocator.addHelper(pc) + } +} + func NewCustomCodeLocation(message string) CodeLocation { return CodeLocation{ CustomMessage: message, @@ -45,14 +113,13 @@ func NewCustomCodeLocation(message string) CodeLocation { } func NewCodeLocation(skip int) CodeLocation { - _, file, line, _ := runtime.Caller(skip + 1) - return CodeLocation{FileName: file, LineNumber: line} + return clLocator.getCodeLocation(skip + 1) } func NewCodeLocationWithStackTrace(skip int) CodeLocation { - _, file, line, _ := runtime.Caller(skip + 1) - stackTrace := PruneStack(string(debug.Stack()), skip+1) - return CodeLocation{FileName: file, LineNumber: line, FullStackTrace: stackTrace} + cl := clLocator.getCodeLocation(skip + 1) + cl.FullStackTrace = PruneStack(string(debug.Stack()), skip+1) + return cl } // PruneStack removes references to functions that are internal to Ginkgo diff --git a/vendor/github.com/onsi/ginkgo/v2/types/config.go b/vendor/github.com/onsi/ginkgo/v2/types/config.go index 4ec636eb2..1014c7b49 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/config.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/config.go @@ -8,6 +8,7 @@ package types import ( "flag" "os" + "path/filepath" "runtime" "strconv" "strings" @@ -30,6 +31,7 @@ type SuiteConfig struct { PollProgressAfter time.Duration PollProgressInterval time.Duration Timeout time.Duration + EmitSpecProgress bool // this is deprecated but its removal is causing compile issue for some users that were setting it manually OutputInterceptorMode string SourceRoots []string GracePeriod time.Duration @@ -599,13 +601,29 @@ func VetAndInitializeCLIAndGoConfig(cliConfig CLIConfig, goFlagsConfig GoFlagsCo } // GenerateGoTestCompileArgs is used by the Ginkgo CLI to generate command line arguments to pass to the go test -c command when compiling the test -func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, destination string, packageToBuild string) ([]string, error) { +func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, destination string, packageToBuild string, pathToInvocationPath string) ([]string, error) { // if the user has set the CoverProfile run-time flag make sure to set the build-time cover flag to make sure // the built test binary can generate a coverprofile if goFlagsConfig.CoverProfile != "" { goFlagsConfig.Cover = true } + if goFlagsConfig.CoverPkg != "" { + coverPkgs := strings.Split(goFlagsConfig.CoverPkg, ",") + adjustedCoverPkgs := make([]string, len(coverPkgs)) + for i, coverPkg := range coverPkgs { + coverPkg = strings.Trim(coverPkg, " ") + if strings.HasPrefix(coverPkg, "./") { + // this is a relative coverPkg - we need to reroot it + adjustedCoverPkgs[i] = "./" + filepath.Join(pathToInvocationPath, strings.TrimPrefix(coverPkg, "./")) + } else { + // this is a package name - don't touch it + adjustedCoverPkgs[i] = coverPkg + } + } + goFlagsConfig.CoverPkg = strings.Join(adjustedCoverPkgs, ",") + } + args := []string{"test", "-c", "-o", destination, packageToBuild} goArgs, err := GenerateFlagArgs( GoBuildFlags, diff --git a/vendor/github.com/onsi/ginkgo/v2/types/errors.go b/vendor/github.com/onsi/ginkgo/v2/types/errors.go index a0f59fb4b..1e0dbfd9d 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/errors.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/errors.go @@ -298,6 +298,15 @@ func (g ginkgoErrors) SetupNodeNotInOrderedContainer(cl CodeLocation, nodeType N } } +func (g ginkgoErrors) InvalidContinueOnFailureDecoration(cl CodeLocation) error { + return GinkgoError{ + Heading: "ContinueOnFailure not decorating an outermost Ordered Container", + Message: "ContinueOnFailure can only decorate an Ordered container, and this Ordered container must be the outermost Ordered container.", + CodeLocation: cl, + DocLink: "ordered-containers", + } +} + /* DeferCleanup errors */ func (g ginkgoErrors) DeferCleanupInvalidFunction(cl CodeLocation) error { return GinkgoError{ diff --git a/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go b/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go index 0403f9e63..b0d3b651e 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go @@ -272,12 +272,23 @@ func tokenize(input string) func() (*treeNode, error) { } } +func MustParseLabelFilter(input string) LabelFilter { + filter, err := ParseLabelFilter(input) + if err != nil { + panic(err) + } + return filter +} + func ParseLabelFilter(input string) (LabelFilter, error) { if DEBUG_LABEL_FILTER_PARSING { fmt.Println("\n==============") fmt.Println("Input: ", input) fmt.Print("Tokens: ") } + if input == "" { + return func(_ []string) bool { return true }, nil + } nextToken := tokenize(input) root := &treeNode{token: lfTokenRoot} diff --git a/vendor/github.com/onsi/ginkgo/v2/types/types.go b/vendor/github.com/onsi/ginkgo/v2/types/types.go index 3e979ba8c..d048a8ada 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/types.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/types.go @@ -604,6 +604,9 @@ var ssEnumSupport = NewEnumSupport(map[uint]string{ func (ss SpecState) String() string { return ssEnumSupport.String(uint(ss)) } +func (ss SpecState) GomegaString() string { + return ssEnumSupport.String(uint(ss)) +} func (ss *SpecState) UnmarshalJSON(b []byte) error { out, err := ssEnumSupport.UnmarshJSON(b) *ss = SpecState(out) diff --git a/vendor/github.com/onsi/ginkgo/v2/types/version.go b/vendor/github.com/onsi/ginkgo/v2/types/version.go index 03d5ff98a..8e7f7404f 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/version.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/version.go @@ -1,3 +1,3 @@ package types -const VERSION = "2.6.1" +const VERSION = "2.9.2" diff --git a/vendor/github.com/onsi/gomega/.gitignore b/vendor/github.com/onsi/gomega/.gitignore index 5f12ff053..52266eae1 100644 --- a/vendor/github.com/onsi/gomega/.gitignore +++ b/vendor/github.com/onsi/gomega/.gitignore @@ -3,4 +3,5 @@ . .idea gomega.iml -TODO.md \ No newline at end of file +TODO.md +.vscode \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md index 35dfec067..ef428f6f6 100644 --- a/vendor/github.com/onsi/gomega/CHANGELOG.md +++ b/vendor/github.com/onsi/gomega/CHANGELOG.md @@ -1,3 +1,88 @@ +## 1.27.6 + +### Fixes +- Allow collections matchers to work correctly when expected has nil elements [60e7cf3] + +### Maintenance +- updates MatchError godoc comment to also accept a Gomega matcher (#654) [67b869d] + +## 1.27.5 + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.2 (#653) [a215021] +- Bump github.com/go-task/slim-sprig (#652) [a26fed8] + +## 1.27.4 + +### Fixes +- improve error formatting and remove duplication of error message in Eventually/Consistently [854f075] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.9.0 to 2.9.1 (#650) [ccebd9b] + +## 1.27.3 + +### Fixes +- format.Object now always includes err.Error() when passed an error [86d97ef] +- Fix HaveExactElements to work inside ContainElement or other collection matchers (#648) [636757e] + +### Maintenance +- Bump github.com/golang/protobuf from 1.5.2 to 1.5.3 (#649) [cc16689] +- Bump github.com/onsi/ginkgo/v2 from 2.8.4 to 2.9.0 (#646) [e783366] + +## 1.27.2 + +### Fixes +- improve poll progress message when polling a consistently that has been passing [28a319b] + +### Maintenance +- bump ginkgo +- remove tools.go hack as Ginkgo 2.8.2 automatically pulls in the cli dependencies [81443b3] + +## 1.27.1 + +### Maintenance + +- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#640) [bc686cd] + +## 1.27.0 + +### Features +- Add HaveExactElements matcher (#634) [9d50783] +- update Gomega docs to discuss GinkgoHelper() [be32774] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.8.0 to 2.8.1 (#639) [296a68b] +- Bump golang.org/x/net from 0.5.0 to 0.6.0 (#638) [c2b098b] +- Bump github-pages from 227 to 228 in /docs (#636) [a9069ab] +- test: update matrix for Go 1.20 (#635) [6bd25c8] +- Bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.8.0 (#631) [5445f8b] +- Bump webrick from 1.7.0 to 1.8.1 in /docs (#630) [03e93bb] +- codeql: add ruby language (#626) [63c7d21] +- dependabot: add bundler package-ecosystem for docs (#625) [d92f963] + +## 1.26.0 + +### Features +- When a polled function returns an error, keep track of the actual and report on the matcher state of the last non-errored actual [21f3090] +- improve eventually failure message output [c530fb3] + +### Fixes +- fix several documentation spelling issues [e2eff1f] + + +## 1.25.0 + +### Features +- add `MustPassRepeatedly(int)` to asyncAssertion (#619) [4509f72] +- compare unwrapped errors using DeepEqual (#617) [aaeaa5d] + +### Maintenance +- Bump golang.org/x/net from 0.4.0 to 0.5.0 (#614) [c7cfea4] +- Bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0 (#615) [71b8adb] +- Docs: Fix typo "MUltiple" -> "Multiple" (#616) [9351dda] +- clean up go.sum [cd1dc1d] + ## 1.24.2 ### Fixes diff --git a/vendor/github.com/onsi/gomega/format/format.go b/vendor/github.com/onsi/gomega/format/format.go index 1a2ed877a..56bdd053b 100644 --- a/vendor/github.com/onsi/gomega/format/format.go +++ b/vendor/github.com/onsi/gomega/format/format.go @@ -52,7 +52,7 @@ var CharactersAroundMismatchToInclude uint = 5 var contextType = reflect.TypeOf((*context.Context)(nil)).Elem() var timeType = reflect.TypeOf(time.Time{}) -//The default indentation string emitted by the format package +// The default indentation string emitted by the format package var Indent = " " var longFormThreshold = 20 @@ -258,7 +258,11 @@ Set PrintContextObjects to true to print the content of objects implementing con func Object(object interface{}, indentation uint) string { indent := strings.Repeat(Indent, int(indentation)) value := reflect.ValueOf(object) - return fmt.Sprintf("%s<%s>: %s", indent, formatType(value), formatValue(value, indentation)) + commonRepresentation := "" + if err, ok := object.(error); ok { + commonRepresentation += "\n" + IndentString(err.Error(), indentation) + "\n" + indent + } + return fmt.Sprintf("%s<%s>: %s%s", indent, formatType(value), commonRepresentation, formatValue(value, indentation)) } /* diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go index b65c8be9b..872592bfb 100644 --- a/vendor/github.com/onsi/gomega/gomega_dsl.go +++ b/vendor/github.com/onsi/gomega/gomega_dsl.go @@ -22,7 +22,7 @@ import ( "github.com/onsi/gomega/types" ) -const GOMEGA_VERSION = "1.24.2" +const GOMEGA_VERSION = "1.27.6" const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler. If you're using Ginkgo then you probably forgot to put your assertion in an It(). @@ -204,7 +204,7 @@ func Ω(actual interface{}, extra ...interface{}) Assertion { // All subsequent arguments will be required to be nil/zero. // // This is convenient if you want to make an assertion on a method/function that returns -// a value and an error - a common patter in Go. +// a value and an error - a common pattern in Go. // // For example, given a function with signature: // @@ -360,6 +360,16 @@ You can also pass additional arugments to functions that take a Gomega. The onl g.Expect(elements).To(ConsistOf(expected)) }).WithContext(ctx).WithArguments("/names", "Joe", "Jane", "Sam").Should(Succeed()) +You can ensure that you get a number of consecutive successful tries before succeeding using `MustPassRepeatedly(int)`. For Example: + + int count := 0 + Eventually(func() bool { + count++ + return count > 2 + }).MustPassRepeatedly(2).Should(BeTrue()) + // Because we had to wait for 2 calls that returned true + Expect(count).To(Equal(3)) + Finally, in addition to passing timeouts and a context to Eventually you can be more explicit with Eventually's chaining configuration methods: Eventually(..., "1s", "2s", ctx).Should(...) diff --git a/vendor/github.com/onsi/gomega/internal/async_assertion.go b/vendor/github.com/onsi/gomega/internal/async_assertion.go index cc8615a11..1188b0bce 100644 --- a/vendor/github.com/onsi/gomega/internal/async_assertion.go +++ b/vendor/github.com/onsi/gomega/internal/async_assertion.go @@ -2,6 +2,7 @@ package internal import ( "context" + "errors" "fmt" "reflect" "runtime" @@ -16,6 +17,22 @@ var errInterface = reflect.TypeOf((*error)(nil)).Elem() var gomegaType = reflect.TypeOf((*types.Gomega)(nil)).Elem() var contextType = reflect.TypeOf(new(context.Context)).Elem() +type formattedGomegaError interface { + FormattedGomegaError() string +} + +type asyncPolledActualError struct { + message string +} + +func (err *asyncPolledActualError) Error() string { + return err.message +} + +func (err *asyncPolledActualError) FormattedGomegaError() string { + return err.message +} + type contextWithAttachProgressReporter interface { AttachProgressReporter(func() string) func() } @@ -55,21 +72,23 @@ type AsyncAssertion struct { actual interface{} argsToForward []interface{} - timeoutInterval time.Duration - pollingInterval time.Duration - ctx context.Context - offset int - g *Gomega + timeoutInterval time.Duration + pollingInterval time.Duration + mustPassRepeatedly int + ctx context.Context + offset int + g *Gomega } -func NewAsyncAssertion(asyncType AsyncAssertionType, actualInput interface{}, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, ctx context.Context, offset int) *AsyncAssertion { +func NewAsyncAssertion(asyncType AsyncAssertionType, actualInput interface{}, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, mustPassRepeatedly int, ctx context.Context, offset int) *AsyncAssertion { out := &AsyncAssertion{ - asyncType: asyncType, - timeoutInterval: timeoutInterval, - pollingInterval: pollingInterval, - offset: offset, - ctx: ctx, - g: g, + asyncType: asyncType, + timeoutInterval: timeoutInterval, + pollingInterval: pollingInterval, + mustPassRepeatedly: mustPassRepeatedly, + offset: offset, + ctx: ctx, + g: g, } out.actual = actualInput @@ -115,6 +134,11 @@ func (assertion *AsyncAssertion) WithArguments(argsToForward ...interface{}) typ return assertion } +func (assertion *AsyncAssertion) MustPassRepeatedly(count int) types.AsyncAssertion { + assertion.mustPassRepeatedly = count + return assertion +} + func (assertion *AsyncAssertion) Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool { assertion.g.THelper() vetOptionalDescription("Asynchronous assertion", optionalDescription...) @@ -141,7 +165,9 @@ func (assertion *AsyncAssertion) buildDescription(optionalDescription ...interfa func (assertion *AsyncAssertion) processReturnValues(values []reflect.Value) (interface{}, error) { if len(values) == 0 { - return nil, fmt.Errorf("No values were returned by the function passed to Gomega") + return nil, &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s did not return any values", assertion.asyncType), + } } actual := values[0].Interface() @@ -164,10 +190,12 @@ func (assertion *AsyncAssertion) processReturnValues(values []reflect.Value) (in continue } if i == len(values)-2 && extraType.Implements(errInterface) { - err = fmt.Errorf("function returned error: %w", extra.(error)) + err = extra.(error) } if err == nil { - err = fmt.Errorf("Unexpected non-nil/non-zero return value at index %d:\n\t<%T>: %#v", i+1, extra, extra) + err = &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s had an unexpected non-nil/non-zero return value at index %d:\n%s", assertion.asyncType, i+1, format.Object(extra, 1)), + } } } @@ -202,6 +230,13 @@ You can learn more at https://onsi.github.io/gomega/#eventually `, assertion.asyncType, t, t.NumIn(), numProvided, have, assertion.asyncType) } +func (assertion *AsyncAssertion) invalidMustPassRepeatedlyError(reason string) error { + return fmt.Errorf(`Invalid use of MustPassRepeatedly with %s %s + +You can learn more at https://onsi.github.io/gomega/#eventually +`, assertion.asyncType, reason) +} + func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error), error) { if !assertion.actualIsFunc { return func() (interface{}, error) { return assertion.actual, nil }, nil @@ -239,7 +274,9 @@ func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error skip = callerSkip[0] } _, file, line, _ := runtime.Caller(skip + 1) - assertionFailure = fmt.Errorf("Assertion in callback at %s:%d failed:\n%s", file, line, message) + assertionFailure = &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s failed at %s:%d with:\n%s", assertion.asyncType, file, line, message), + } // we throw an asyncGomegaHaltExecutionError so that defer GinkgoRecover() can catch this error if the user makes an assertion in a goroutine panic(asyncGomegaHaltExecutionError{}) }))) @@ -257,6 +294,13 @@ func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error return nil, assertion.argumentMismatchError(actualType, len(inValues)) } + if assertion.mustPassRepeatedly != 1 && assertion.asyncType != AsyncAssertionTypeEventually { + return nil, assertion.invalidMustPassRepeatedlyError("it can only be used with Eventually") + } + if assertion.mustPassRepeatedly < 1 { + return nil, assertion.invalidMustPassRepeatedlyError("parameter can't be < 1") + } + return func() (actual interface{}, err error) { var values []reflect.Value assertionFailure = nil @@ -338,22 +382,39 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch timeout := assertion.afterTimeout() lock := sync.Mutex{} - var matches bool - var err error + var matches, hasLastValidActual bool + var actual, lastValidActual interface{} + var actualErr, matcherErr error var oracleMatcherSaysStop bool assertion.g.THelper() - pollActual, err := assertion.buildActualPoller() - if err != nil { - assertion.g.Fail(err.Error(), 2+assertion.offset) + pollActual, buildActualPollerErr := assertion.buildActualPoller() + if buildActualPollerErr != nil { + assertion.g.Fail(buildActualPollerErr.Error(), 2+assertion.offset) return false } - value, err := pollActual() - if err == nil { - oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, value) - matches, err = assertion.pollMatcher(matcher, value) + actual, actualErr = pollActual() + if actualErr == nil { + lastValidActual = actual + hasLastValidActual = true + oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual) + matches, matcherErr = assertion.pollMatcher(matcher, actual) + } + + renderError := func(preamble string, err error) string { + message := "" + if pollingSignalErr, ok := AsPollingSignalError(err); ok { + message = err.Error() + for _, attachment := range pollingSignalErr.Attachments { + message += fmt.Sprintf("\n%s:\n", attachment.Description) + message += format.Object(attachment.Object, 1) + } + } else { + message = preamble + "\n" + format.Object(err, 1) + } + return message } messageGenerator := func() string { @@ -361,23 +422,53 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch lock.Lock() defer lock.Unlock() message := "" - if err != nil { - if pollingSignalErr, ok := AsPollingSignalError(err); ok && pollingSignalErr.IsStopTrying() { - message = err.Error() - for _, attachment := range pollingSignalErr.Attachments { - message += fmt.Sprintf("\n%s:\n", attachment.Description) - message += format.Object(attachment.Object, 1) + + if actualErr == nil { + if matcherErr == nil { + if desiredMatch != matches { + if desiredMatch { + message += matcher.FailureMessage(actual) + } else { + message += matcher.NegatedFailureMessage(actual) + } + } else { + if assertion.asyncType == AsyncAssertionTypeConsistently { + message += "There is no failure as the matcher passed to Consistently has not yet failed" + } else { + message += "There is no failure as the matcher passed to Eventually succeeded on its most recent iteration" + } } } else { - message = "Error: " + err.Error() + "\n" + format.Object(err, 1) + var fgErr formattedGomegaError + if errors.As(actualErr, &fgErr) { + message += fgErr.FormattedGomegaError() + "\n" + } else { + message += renderError(fmt.Sprintf("The matcher passed to %s returned the following error:", assertion.asyncType), matcherErr) + } } } else { - if desiredMatch { - message = matcher.FailureMessage(value) + var fgErr formattedGomegaError + if errors.As(actualErr, &fgErr) { + message += fgErr.FormattedGomegaError() + "\n" } else { - message = matcher.NegatedFailureMessage(value) + message += renderError(fmt.Sprintf("The function passed to %s returned the following error:", assertion.asyncType), actualErr) + } + if hasLastValidActual { + message += fmt.Sprintf("\nAt one point, however, the function did return successfully.\nYet, %s failed because", assertion.asyncType) + _, e := matcher.Match(lastValidActual) + if e != nil { + message += renderError(" the matcher returned the following error:", e) + } else { + message += " the matcher was not satisfied:\n" + if desiredMatch { + message += matcher.FailureMessage(lastValidActual) + } else { + message += matcher.NegatedFailureMessage(lastValidActual) + } + } } } + description := assertion.buildDescription(optionalDescription...) return fmt.Sprintf("%s%s", description, message) } @@ -396,30 +487,39 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch } } + // Used to count the number of times in a row a step passed + passedRepeatedlyCount := 0 for { var nextPoll <-chan time.Time = nil var isTryAgainAfterError = false - if pollingSignalErr, ok := AsPollingSignalError(err); ok { - if pollingSignalErr.IsStopTrying() { - fail("Told to stop trying") - return false - } - if pollingSignalErr.IsTryAgainAfter() { - nextPoll = time.After(pollingSignalErr.TryAgainDuration()) - isTryAgainAfterError = true + for _, err := range []error{actualErr, matcherErr} { + if pollingSignalErr, ok := AsPollingSignalError(err); ok { + if pollingSignalErr.IsStopTrying() { + fail("Told to stop trying") + return false + } + if pollingSignalErr.IsTryAgainAfter() { + nextPoll = time.After(pollingSignalErr.TryAgainDuration()) + isTryAgainAfterError = true + } } } - if err == nil && matches == desiredMatch { + if actualErr == nil && matcherErr == nil && matches == desiredMatch { if assertion.asyncType == AsyncAssertionTypeEventually { - return true + passedRepeatedlyCount += 1 + if passedRepeatedlyCount == assertion.mustPassRepeatedly { + return true + } } } else if !isTryAgainAfterError { if assertion.asyncType == AsyncAssertionTypeConsistently { fail("Failed") return false } + // Reset the consecutive pass count + passedRepeatedlyCount = 0 } if oracleMatcherSaysStop { @@ -437,15 +537,19 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch select { case <-nextPoll: - v, e := pollActual() + a, e := pollActual() lock.Lock() - value, err = v, e + actual, actualErr = a, e lock.Unlock() - if err == nil { - oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, value) - m, e := assertion.pollMatcher(matcher, value) + if actualErr == nil { + lock.Lock() + lastValidActual = actual + hasLastValidActual = true + lock.Unlock() + oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual) + m, e := assertion.pollMatcher(matcher, actual) lock.Lock() - matches, err = m, e + matches, matcherErr = m, e lock.Unlock() } case <-contextDone: diff --git a/vendor/github.com/onsi/gomega/internal/gomega.go b/vendor/github.com/onsi/gomega/internal/gomega.go index 2d92877f3..de1f4f336 100644 --- a/vendor/github.com/onsi/gomega/internal/gomega.go +++ b/vendor/github.com/onsi/gomega/internal/gomega.go @@ -109,7 +109,7 @@ func (g *Gomega) makeAsyncAssertion(asyncAssertionType AsyncAssertionType, offse } } - return NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, ctx, offset) + return NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, 1, ctx, offset) } func (g *Gomega) SetDefaultEventuallyTimeout(t time.Duration) { diff --git a/vendor/github.com/onsi/gomega/matchers.go b/vendor/github.com/onsi/gomega/matchers.go index 857586a91..b832f3dba 100644 --- a/vendor/github.com/onsi/gomega/matchers.go +++ b/vendor/github.com/onsi/gomega/matchers.go @@ -87,14 +87,17 @@ func Succeed() types.GomegaMatcher { return &matchers.SucceedMatcher{} } -// MatchError succeeds if actual is a non-nil error that matches the passed in string/error. +// MatchError succeeds if actual is a non-nil error that matches the passed in +// string, error, or matcher. // // These are valid use-cases: // -// Expect(err).Should(MatchError("an error")) //asserts that err.Error() == "an error" -// Expect(err).Should(MatchError(SomeError)) //asserts that err == SomeError (via reflect.DeepEqual) +// Expect(err).Should(MatchError("an error")) //asserts that err.Error() == "an error" +// Expect(err).Should(MatchError(SomeError)) //asserts that err == SomeError (via reflect.DeepEqual) +// Expect(err).Should(MatchError(ContainsSubstring("sprocket not found"))) // asserts that edrr.Error() contains substring "sprocket not found" // -// It is an error for err to be nil or an object that does not implement the Error interface +// It is an error for err to be nil or an object that does not implement the +// Error interface func MatchError(expected interface{}) types.GomegaMatcher { return &matchers.MatchErrorMatcher{ Expected: expected, @@ -349,6 +352,20 @@ func ConsistOf(elements ...interface{}) types.GomegaMatcher { } } +// HaveExactElemets succeeds if actual contains elements that precisely match the elemets passed into the matcher. The ordering of the elements does matter. +// By default HaveExactElements() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples: +// +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements("Foo", "FooBar")) +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements("Foo", ContainSubstring("Bar"))) +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements(ContainSubstring("Foo"), ContainSubstring("Foo"))) +// +// Actual must be an array or slice. +func HaveExactElements(elements ...interface{}) types.GomegaMatcher { + return &matchers.HaveExactElementsMatcher{ + Elements: elements, + } +} + // ContainElements succeeds if actual contains the passed in elements. The ordering of the elements does not matter. // By default ContainElements() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples: // diff --git a/vendor/github.com/onsi/gomega/matchers/consist_of.go b/vendor/github.com/onsi/gomega/matchers/consist_of.go index e8ef0dee1..f69037a4f 100644 --- a/vendor/github.com/onsi/gomega/matchers/consist_of.go +++ b/vendor/github.com/onsi/gomega/matchers/consist_of.go @@ -48,11 +48,13 @@ func neighbours(value, matcher interface{}) (bool, error) { func equalMatchersToElements(matchers []interface{}) (elements []interface{}) { for _, matcher := range matchers { - equalMatcher, ok := matcher.(*EqualMatcher) - if ok { - matcher = equalMatcher.Expected + if equalMatcher, ok := matcher.(*EqualMatcher); ok { + elements = append(elements, equalMatcher.Expected) + } else if _, ok := matcher.(*BeNilMatcher); ok { + elements = append(elements, nil) + } else { + elements = append(elements, matcher) } - elements = append(elements, matcher) } return } @@ -72,11 +74,13 @@ func flatten(elems []interface{}) []interface{} { func matchers(expectedElems []interface{}) (matchers []interface{}) { for _, e := range flatten(expectedElems) { - matcher, isMatcher := e.(omegaMatcher) - if !isMatcher { - matcher = &EqualMatcher{Expected: e} + if e == nil { + matchers = append(matchers, &BeNilMatcher{}) + } else if matcher, isMatcher := e.(omegaMatcher); isMatcher { + matchers = append(matchers, matcher) + } else { + matchers = append(matchers, &EqualMatcher{Expected: e}) } - matchers = append(matchers, matcher) } return } @@ -89,9 +93,14 @@ func presentable(elems []interface{}) interface{} { } sv := reflect.ValueOf(elems) - tt := sv.Index(0).Elem().Type() + firstEl := sv.Index(0) + if firstEl.IsNil() { + return elems + } + tt := firstEl.Elem().Type() for i := 1; i < sv.Len(); i++ { - if sv.Index(i).Elem().Type() != tt { + el := sv.Index(i) + if el.IsNil() || (sv.Index(i).Elem().Type() != tt) { return elems } } diff --git a/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go b/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go new file mode 100644 index 000000000..7cce776c1 --- /dev/null +++ b/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go @@ -0,0 +1,83 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type mismatchFailure struct { + failure string + index int +} + +type HaveExactElementsMatcher struct { + Elements []interface{} + mismatchFailures []mismatchFailure + missingIndex int + extraIndex int +} + +func (matcher *HaveExactElementsMatcher) Match(actual interface{}) (success bool, err error) { + matcher.resetState() + + if isMap(actual) { + return false, fmt.Errorf("error") + } + + matchers := matchers(matcher.Elements) + values := valuesOf(actual) + + lenMatchers := len(matchers) + lenValues := len(values) + + for i := 0; i < lenMatchers || i < lenValues; i++ { + if i >= lenMatchers { + matcher.extraIndex = i + continue + } + + if i >= lenValues { + matcher.missingIndex = i + return + } + + elemMatcher := matchers[i].(omegaMatcher) + match, err := elemMatcher.Match(values[i]) + if err != nil || !match { + matcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{ + index: i, + failure: elemMatcher.FailureMessage(values[i]), + }) + } + } + + return matcher.missingIndex+matcher.extraIndex+len(matcher.mismatchFailures) == 0, nil +} + +func (matcher *HaveExactElementsMatcher) FailureMessage(actual interface{}) (message string) { + message = format.Message(actual, "to have exact elements with", presentable(matcher.Elements)) + if matcher.missingIndex > 0 { + message = fmt.Sprintf("%s\nthe missing elements start from index %d", message, matcher.missingIndex) + } + if matcher.extraIndex > 0 { + message = fmt.Sprintf("%s\nthe extra elements start from index %d", message, matcher.extraIndex) + } + if len(matcher.mismatchFailures) != 0 { + message = fmt.Sprintf("%s\nthe mismatch indexes were:", message) + } + for _, mismatch := range matcher.mismatchFailures { + message = fmt.Sprintf("%s\n%d: %s", message, mismatch.index, mismatch.failure) + } + return +} + +func (matcher *HaveExactElementsMatcher) NegatedFailureMessage(actual interface{}) (message string) { + return format.Message(actual, "not to contain elements", presentable(matcher.Elements)) +} + +func (matcher *HaveExactElementsMatcher) resetState() { + matcher.mismatchFailures = nil + matcher.missingIndex = 0 + matcher.extraIndex = 0 +} diff --git a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go index 5bcfdd2ad..22a1b6730 100644 --- a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go @@ -31,5 +31,5 @@ func (matcher *HaveOccurredMatcher) FailureMessage(actual interface{}) (message } func (matcher *HaveOccurredMatcher) NegatedFailureMessage(actual interface{}) (message string) { - return fmt.Sprintf("Unexpected error:\n%s\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1), "occurred") + return fmt.Sprintf("Unexpected error:\n%s\n%s", format.Object(actual, 1), "occurred") } diff --git a/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go b/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go index c8993a86d..827475ea5 100644 --- a/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go @@ -25,7 +25,17 @@ func (matcher *MatchErrorMatcher) Match(actual interface{}) (success bool, err e expected := matcher.Expected if isError(expected) { - return reflect.DeepEqual(actualErr, expected) || errors.Is(actualErr, expected.(error)), nil + // first try the built-in errors.Is + if errors.Is(actualErr, expected.(error)) { + return true, nil + } + // if not, try DeepEqual along the error chain + for unwrapped := actualErr; unwrapped != nil; unwrapped = errors.Unwrap(unwrapped) { + if reflect.DeepEqual(unwrapped, expected) { + return true, nil + } + } + return false, nil } if isString(expected) { diff --git a/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go index 721ed5529..327350f7b 100644 --- a/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go @@ -1,11 +1,16 @@ package matchers import ( + "errors" "fmt" "github.com/onsi/gomega/format" ) +type formattedGomegaError interface { + FormattedGomegaError() string +} + type SucceedMatcher struct { } @@ -25,7 +30,11 @@ func (matcher *SucceedMatcher) Match(actual interface{}) (success bool, err erro } func (matcher *SucceedMatcher) FailureMessage(actual interface{}) (message string) { - return fmt.Sprintf("Expected success, but got an error:\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1)) + var fgErr formattedGomegaError + if errors.As(actual.(error), &fgErr) { + return fgErr.FormattedGomegaError() + } + return fmt.Sprintf("Expected success, but got an error:\n%s", format.Object(actual, 1)) } func (matcher *SucceedMatcher) NegatedFailureMessage(actual interface{}) (message string) { diff --git a/vendor/github.com/onsi/gomega/tools b/vendor/github.com/onsi/gomega/tools deleted file mode 100644 index e4195cf36..000000000 --- a/vendor/github.com/onsi/gomega/tools +++ /dev/null @@ -1,8 +0,0 @@ -//go:build tools -// +build tools - -package main - -import ( - _ "github.com/onsi/ginkgo/v2/ginkgo" -) diff --git a/vendor/github.com/onsi/gomega/types/types.go b/vendor/github.com/onsi/gomega/types/types.go index 125de6497..7c7adb941 100644 --- a/vendor/github.com/onsi/gomega/types/types.go +++ b/vendor/github.com/onsi/gomega/types/types.go @@ -75,6 +75,7 @@ type AsyncAssertion interface { ProbeEvery(interval time.Duration) AsyncAssertion WithContext(ctx context.Context) AsyncAssertion WithArguments(argsToForward ...interface{}) AsyncAssertion + MustPassRepeatedly(count int) AsyncAssertion } // Assertions are returned by Ω and Expect and enable assertions against Gomega matchers diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go index 7b5b78cbd..2671217da 100644 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go +++ b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go @@ -245,7 +245,7 @@ func feSquareGeneric(v, a *Element) { v.carryPropagate() } -// carryPropagate brings the limbs below 52 bits by applying the reduction +// carryPropagateGeneric brings the limbs below 52 bits by applying the reduction // identity (a * 2²⁵⁵ + b = a * 19 + b) to the l4 carry. TODO inline func (v *Element) carryPropagateGeneric() *Element { c0 := v.l0 >> 51 diff --git a/vendor/golang.org/x/crypto/openpgp/keys.go b/vendor/golang.org/x/crypto/openpgp/keys.go index faa2fb369..d62f787e9 100644 --- a/vendor/golang.org/x/crypto/openpgp/keys.go +++ b/vendor/golang.org/x/crypto/openpgp/keys.go @@ -61,7 +61,7 @@ type Key struct { type KeyRing interface { // KeysById returns the set of keys that have the given key id. KeysById(id uint64) []Key - // KeysByIdAndUsage returns the set of keys with the given id + // KeysByIdUsage returns the set of keys with the given id // that also meet the key usage given by requiredUsage. // The requiredUsage is expressed as the bitwise-OR of // packet.KeyFlag* values. @@ -183,7 +183,7 @@ func (el EntityList) KeysById(id uint64) (keys []Key) { return } -// KeysByIdAndUsage returns the set of keys with the given id that also meet +// KeysByIdUsage returns the set of keys with the given id that also meet // the key usage given by requiredUsage. The requiredUsage is expressed as // the bitwise-OR of packet.KeyFlag* values. func (el EntityList) KeysByIdUsage(id uint64, requiredUsage byte) (keys []Key) { diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go index 822ed42a0..7a96eae33 100644 --- a/vendor/golang.org/x/net/html/doc.go +++ b/vendor/golang.org/x/net/html/doc.go @@ -92,6 +92,21 @@ example, to process each anchor node in depth-first order: The relevant specifications include: https://html.spec.whatwg.org/multipage/syntax.html and https://html.spec.whatwg.org/multipage/syntax.html#tokenization + +# Security Considerations + +Care should be taken when parsing and interpreting HTML, whether full documents +or fragments, within the framework of the HTML specification, especially with +regard to untrusted inputs. + +This package provides both a tokenizer and a parser. Only the parser constructs +a DOM according to the HTML specification, resolving malformed and misplaced +tags where appropriate. The tokenizer simply tokenizes the HTML presented to it, +and as such does not resolve issues that may exist in the processed HTML, +producing a literal interpretation of the input. + +If your use case requires semantically well-formed HTML, as defined by the +WHATWG specifiction, the parser should be used rather than the tokenizer. */ package html // import "golang.org/x/net/html" diff --git a/vendor/golang.org/x/net/html/escape.go b/vendor/golang.org/x/net/html/escape.go index d85613962..04c6bec21 100644 --- a/vendor/golang.org/x/net/html/escape.go +++ b/vendor/golang.org/x/net/html/escape.go @@ -193,6 +193,87 @@ func lower(b []byte) []byte { return b } +// escapeComment is like func escape but escapes its input bytes less often. +// Per https://github.com/golang/go/issues/58246 some HTML comments are (1) +// meaningful and (2) contain angle brackets that we'd like to avoid escaping +// unless we have to. +// +// "We have to" includes the '&' byte, since that introduces other escapes. +// +// It also includes those bytes (not including EOF) that would otherwise end +// the comment. Per the summary table at the bottom of comment_test.go, this is +// the '>' byte that, per above, we'd like to avoid escaping unless we have to. +// +// Studying the summary table (and T actions in its '>' column) closely, we +// only need to escape in states 43, 44, 49, 51 and 52. State 43 is at the +// start of the comment data. State 52 is after a '!'. The other three states +// are after a '-'. +// +// Our algorithm is thus to escape every '&' and to escape '>' if and only if: +// - The '>' is after a '!' or '-' (in the unescaped data) or +// - The '>' is at the start of the comment data (after the opening ""); err != nil { diff --git a/vendor/golang.org/x/net/html/token.go b/vendor/golang.org/x/net/html/token.go index 50f7c6aac..5c2a1f4ef 100644 --- a/vendor/golang.org/x/net/html/token.go +++ b/vendor/golang.org/x/net/html/token.go @@ -110,7 +110,7 @@ func (t Token) String() string { case SelfClosingTagToken: return "<" + t.tagString() + "/>" case CommentToken: - return "" + return "" case DoctypeToken: return "" } @@ -598,10 +598,10 @@ scriptDataDoubleEscapeEnd: // readComment reads the next comment token starting with "