From 375b4d42f1909b3a539224193781aaf23bbe419b Mon Sep 17 00:00:00 2001 From: Sebastian Sch Date: Wed, 26 Jun 2024 16:41:31 +0300 Subject: [PATCH] BUMP version Signed-off-by: Sebastian Sch --- api/v1/zz_generated.deepcopy.go | 1 - ....openshift.io_sriovnetworkpoolconfigs.yaml | 2 + .../sriovnetworknodepolicy_controller.go | 2 +- controllers/suite_test.go | 4 +- ....openshift.io_sriovnetworkpoolconfigs.yaml | 2 + go.mod | 84 +- go.sum | 204 +- pkg/drain/drainer.go | 4 +- pkg/helper/mock/mock_helper.go | 14 + pkg/host/internal/lib/dputils/dputils.go | 6 + .../internal/lib/dputils/mock/mock_dputils.go | 15 + .../internal/lib/netlink/mock/mock_netlink.go | 15 + pkg/host/internal/lib/netlink/netlink.go | 9 +- pkg/host/internal/network/network.go | 13 +- pkg/host/internal/sriov/sriov.go | 13 +- pkg/host/internal/sriov/sriov_test.go | 27 +- pkg/host/mock/mock_host.go | 14 + pkg/host/types/interfaces.go | 2 + .../{sriovnet => rdmamap}/.golangci.yml | 8 +- .../github.com/Mellanox/rdmamap/.travis.yml | 12 + .../Mellanox/{sriovnet => rdmamap}/LICENSE | 0 .../Mellanox/{sriovnet => rdmamap}/Makefile | 6 +- vendor/github.com/Mellanox/rdmamap/README.md | 40 + .../github.com/Mellanox/rdmamap/rdma_map.go | 396 + .../github.com/Mellanox/rdmamap/rdma_stats.go | 213 + .../github.com/Mellanox/sriovnet/.travis.yml | 16 - vendor/github.com/Mellanox/sriovnet/README.md | 59 - .../Mellanox/sriovnet/file_access.go | 139 - .../Mellanox/sriovnet/mofed_ib_helper.go | 57 - .../pkg/utils/filesystem/defaultfs.go | 119 - .../sriovnet/pkg/utils/filesystem/fakefs.go | 151 - .../pkg/utils/filesystem/filesystem.go | 41 - .../pkg/utils/netlinkops/netlinkops.go | 114 - .../github.com/Mellanox/sriovnet/sriovnet.go | 466 - .../Mellanox/sriovnet/sriovnet_helper.go | 129 - .../Mellanox/sriovnet/sriovnet_switchdev.go | 391 - .../json-patch/v5/internal/json/decode.go | 1385 +++ .../json-patch/v5/internal/json/encode.go | 1486 +++ .../json-patch/v5/internal/json/fold.go | 141 + .../json-patch/v5/internal/json/fuzz.go | 42 + .../json-patch/v5/internal/json/indent.go | 143 + .../json-patch/v5/internal/json/scanner.go | 610 ++ .../json-patch/v5/internal/json/stream.go | 495 + .../json-patch/v5/internal/json/tables.go | 218 + .../json-patch/v5/internal/json/tags.go | 38 + .../github.com/evanphx/json-patch/v5/merge.go | 110 +- .../github.com/evanphx/json-patch/v5/patch.go | 389 +- vendor/github.com/go-logr/logr/README.md | 126 +- vendor/github.com/go-logr/logr/SECURITY.md | 18 + vendor/github.com/go-logr/logr/context.go | 33 + .../github.com/go-logr/logr/context_noslog.go | 49 + .../github.com/go-logr/logr/context_slog.go | 83 + vendor/github.com/go-logr/logr/funcr/funcr.go | 231 +- .../github.com/go-logr/logr/funcr/slogsink.go | 105 + vendor/github.com/go-logr/logr/logr.go | 78 +- vendor/github.com/go-logr/logr/sloghandler.go | 192 + vendor/github.com/go-logr/logr/slogr.go | 100 + vendor/github.com/go-logr/logr/slogr/slogr.go | 61 + vendor/github.com/go-logr/logr/slogsink.go | 120 + vendor/github.com/go-logr/zapr/.golangci.yaml | 20 + vendor/github.com/go-logr/zapr/README.md | 39 +- vendor/github.com/go-logr/zapr/slogzapr.go | 183 + vendor/github.com/go-logr/zapr/zapr.go | 15 +- vendor/github.com/go-logr/zapr/zapr_noslog.go | 34 + vendor/github.com/go-logr/zapr/zapr_slog.go | 48 + vendor/github.com/golang/glog/glog.go | 226 +- vendor/github.com/golang/glog/glog_file.go | 41 +- .../github.com/golang/glog/glog_file_linux.go | 39 + .../github.com/golang/glog/glog_file_other.go | 30 + .../github.com/golang/glog/glog_file_posix.go | 53 + vendor/github.com/golang/glog/glog_flags.go | 9 +- .../golang/glog/internal/logsink/logsink.go | 6 + .../golang/protobuf/jsonpb/decode.go | 530 -- .../golang/protobuf/jsonpb/encode.go | 559 -- .../github.com/golang/protobuf/jsonpb/json.go | 69 - .../github.com/golang/protobuf/ptypes/any.go | 7 +- vendor/github.com/google/uuid/CHANGELOG.md | 31 + vendor/github.com/google/uuid/CONTRIBUTING.md | 2 +- vendor/github.com/google/uuid/hash.go | 6 + vendor/github.com/google/uuid/time.go | 21 +- vendor/github.com/google/uuid/uuid.go | 79 +- vendor/github.com/google/uuid/version6.go | 56 + vendor/github.com/google/uuid/version7.go | 104 + .../github.com/gorilla/websocket/.gitignore | 25 + vendor/github.com/gorilla/websocket/AUTHORS | 9 + vendor/github.com/gorilla/websocket/LICENSE | 22 + vendor/github.com/gorilla/websocket/README.md | 39 + vendor/github.com/gorilla/websocket/client.go | 422 + .../gorilla/websocket/compression.go | 148 + vendor/github.com/gorilla/websocket/conn.go | 1230 +++ vendor/github.com/gorilla/websocket/doc.go | 227 + vendor/github.com/gorilla/websocket/join.go | 42 + vendor/github.com/gorilla/websocket/json.go | 60 + vendor/github.com/gorilla/websocket/mask.go | 55 + .../github.com/gorilla/websocket/mask_safe.go | 16 + .../github.com/gorilla/websocket/prepared.go | 102 + vendor/github.com/gorilla/websocket/proxy.go | 77 + vendor/github.com/gorilla/websocket/server.go | 365 + .../gorilla/websocket/tls_handshake.go | 21 + .../gorilla/websocket/tls_handshake_116.go | 21 + vendor/github.com/gorilla/websocket/util.go | 283 + .../gorilla/websocket/x_net_proxy.go | 473 + vendor/github.com/jaypipes/ghw/README.md | 39 +- vendor/github.com/jaypipes/ghw/doc.go | 448 +- .../jaypipes/ghw/pkg/block/block.go | 23 +- .../jaypipes/ghw/pkg/block/block_linux.go | 76 +- .../jaypipes/ghw/pkg/block/block_windows.go | 66 +- vendor/github.com/jaypipes/ghw/pkg/cpu/cpu.go | 19 +- .../jaypipes/ghw/pkg/cpu/cpu_linux.go | 312 +- .../jaypipes/ghw/pkg/gpu/gpu_windows.go | 4 +- .../jaypipes/ghw/pkg/linuxpath/path_linux.go | 2 + .../jaypipes/ghw/pkg/memory/memory_linux.go | 72 +- vendor/github.com/jaypipes/ghw/pkg/net/net.go | 26 +- .../jaypipes/ghw/pkg/net/net_linux.go | 206 +- .../jaypipes/ghw/pkg/pci/pci_linux.go | 6 +- .../github.com/jaypipes/ghw/pkg/util/util.go | 26 + .../NOTICE | 1 + .../pkg/apis/k8s.cni.cncf.io/v1/types.go | 21 + .../pkg/types/types.go | 170 +- .../pkg/utils/ddp.go | 60 +- .../pkg/utils/mocks/NetlinkProvider.go | 87 +- .../pkg/utils/mocks/RdmaProvider.go | 84 + .../pkg/utils/mocks/SriovnetProvider.go | 186 +- .../pkg/utils/mocks/VdpaProvider.go | 20 +- .../pkg/utils/netlink_provider.go | 78 + .../pkg/utils/rdma_provider.go | 56 + .../pkg/utils/sriovnet_provider.go | 32 +- .../pkg/utils/testing.go | 54 +- .../pkg/utils/utils.go | 172 +- .../k8snetworkplumbingwg/sriovnet/.gitignore | 31 + .../sriovnet/.golangci.yml | 1 - .../k8snetworkplumbingwg/sriovnet/Makefile | 8 +- .../k8snetworkplumbingwg/sriovnet/errors.go | 25 + .../sriovnet/file_access.go | 16 + .../sriovnet/mofed_ib_helper.go | 16 + .../k8snetworkplumbingwg/sriovnet/sriovnet.go | 61 +- .../sriovnet/sriovnet_aux.go | 67 +- .../sriovnet/sriovnet_helper.go | 16 + .../sriovnet/sriovnet_switchdev.go | 16 + .../k8snetworkplumbingwg/sriovnet/utils.go | 33 +- vendor/github.com/mxk/go-flowrate/LICENSE | 29 + .../mxk/go-flowrate/flowrate/flowrate.go | 267 + .../github.com/mxk/go-flowrate/flowrate/io.go | 133 + .../mxk/go-flowrate/flowrate/util.go | 67 + vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md | 125 + vendor/github.com/onsi/ginkgo/v2/README.md | 6 +- vendor/github.com/onsi/ginkgo/v2/core_dsl.go | 109 +- .../ginkgo/v2/ginkgo/internal/gocovmerge.go | 129 + .../ginkgo/internal/profiles_and_reports.go | 44 +- .../ginkgo/v2/ginkgo/internal/test_suite.go | 9 +- .../onsi/ginkgo/v2/ginkgo/outline/ginkgo.go | 7 +- .../onsi/ginkgo/v2/ginkgo/outline/import.go | 9 +- .../ginkgo/v2/ginkgo/watch/dependencies.go | 2 +- .../ginkgo/v2/ginkgo/watch/package_hash.go | 4 +- .../github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go | 110 +- .../onsi/ginkgo/v2/internal/global/init.go | 11 + .../onsi/ginkgo/v2/internal/group.go | 5 +- .../onsi/ginkgo/v2/internal/node.go | 43 +- .../v2/internal/output_interceptor_wasm.go | 7 + .../v2/internal/progress_report_wasm.go | 10 + .../onsi/ginkgo/v2/internal/spec_context.go | 4 +- .../onsi/ginkgo/v2/internal/suite.go | 44 +- .../onsi/ginkgo/v2/internal/writer.go | 6 +- .../ginkgo/v2/reporters/default_reporter.go | 47 +- .../onsi/ginkgo/v2/reporters/json_report.go | 6 +- .../onsi/ginkgo/v2/reporters/junit_report.go | 12 + .../onsi/ginkgo/v2/reporting_dsl.go | 59 +- vendor/github.com/onsi/ginkgo/v2/table_dsl.go | 113 +- .../onsi/ginkgo/v2/types/code_location.go | 2 +- .../github.com/onsi/ginkgo/v2/types/config.go | 6 +- .../github.com/onsi/ginkgo/v2/types/errors.go | 13 +- .../github.com/onsi/ginkgo/v2/types/flags.go | 15 +- .../github.com/onsi/ginkgo/v2/types/types.go | 4 +- .../onsi/ginkgo/v2/types/version.go | 2 +- vendor/github.com/onsi/gomega/CHANGELOG.md | 76 + vendor/github.com/onsi/gomega/gomega_dsl.go | 10 +- .../onsi/gomega/internal/async_assertion.go | 7 +- vendor/github.com/onsi/gomega/matchers.go | 58 +- .../matchers/be_comparable_to_matcher.go | 4 +- .../onsi/gomega/matchers/be_false_matcher.go | 13 +- .../onsi/gomega/matchers/be_true_matcher.go | 13 +- .../gomega/matchers/have_http_body_matcher.go | 9 +- .../gomega/matchers/match_error_matcher.go | 25 +- .../openshift/api/.ci-operator.yaml | 2 +- vendor/github.com/openshift/api/.gitignore | 2 + .../github.com/openshift/api/Dockerfile.rhel8 | 23 + vendor/github.com/openshift/api/Makefile | 64 +- vendor/github.com/openshift/api/OWNERS | 10 - vendor/github.com/openshift/api/README.md | 265 +- ...piserver.openshift.io_apirequestcount.yaml | 254 - .../v1/stable.apirequestcount.testsuite.yaml | 15 - .../api/apiserver/v1/types_apirequestcount.go | 11 +- ..._generated.featuregated-crd-manifests.yaml | 34 + ...enshift_01_rolebindingrestriction.crd.yaml | 158 - .../api/authorization/v1/generated.proto | 4 + ...able.rolebindingrestriction.testsuite.yaml | 14 - .../openshift/api/authorization/v1/types.go | 4 + ..._generated.featuregated-crd-manifests.yaml | 21 + vendor/github.com/openshift/api/build/OWNERS | 5 +- .../openshift/api/build/v1/consts.go | 8 +- .../openshift/api/cloudnetwork/.codegen.yaml | 0 .../v1/001-cloudprivateipconfig.crd.yaml | 107 - .../001-cloudprivateipconfig.crd.yaml-patch | 10 - .../api/cloudnetwork/v1/generated.proto | 2 + ...stable.cloudprivateipconfig.testsuite.yaml | 18 - .../openshift/api/cloudnetwork/v1/types.go | 2 + ..._generated.featuregated-crd-manifests.yaml | 21 + .../openshift/api/config/.codegen.yaml | 6 - ...rsion-operator_01_clusteroperator.crd.yaml | 137 - ...ersion-operator_01_clusterversion.crd.yaml | 445 - .../0000_03_config-operator_01_proxy.crd.yaml | 78 - ...rketplace-operator_01_operatorhub.crd.yaml | 84 - ...ator_01_apiserver-CustomNoUpgrade.crd.yaml | 179 - ...fig-operator_01_apiserver-Default.crd.yaml | 179 - ...01_apiserver-TechPreviewNoUpgrade.crd.yaml | 179 - ...config-operator_01_authentication.crd.yaml | 101 - .../0000_10_config-operator_01_build.crd.yaml | 290 - ...000_10_config-operator_01_console.crd.yaml | 57 - ...g-operator_01_dns-CustomNoUpgrade.crd.yaml | 114 - ...10_config-operator_01_dns-Default.crd.yaml | 114 - ...rator_01_dns-TechPreviewNoUpgrade.crd.yaml | 114 - ...10_config-operator_01_featuregate.crd.yaml | 153 - .../0000_10_config-operator_01_image.crd.yaml | 108 - ...ig-operator_01_imagecontentpolicy.crd.yaml | 68 - ...-operator_01_imagedigestmirrorset.crd.yaml | 74 - ...fig-operator_01_imagetagmirrorset.crd.yaml | 74 - ...01_infrastructure-CustomNoUpgrade.crd.yaml | 999 -- ...rastructure-CustomNoUpgrade.crd.yaml-patch | 24 - ...perator_01_infrastructure-Default.crd.yaml | 855 -- ...r_01_infrastructure-Default.crd.yaml-patch | 24 - ...frastructure-TechPreviewNoUpgrade.crd.yaml | 999 -- ...ucture-TechPreviewNoUpgrade.crd.yaml-patch | 24 - ...000_10_config-operator_01_ingress.crd.yaml | 334 - ...000_10_config-operator_01_network.crd.yaml | 163 - .../0000_10_config-operator_01_node.crd.yaml | 59 - .../0000_10_config-operator_01_oauth.crd.yaml | 444 - ...000_10_config-operator_01_project.crd.yaml | 55 - ...0_10_config-operator_01_scheduler.crd.yaml | 68 - .../config/v1/custom.apiserver.testsuite.yaml | 35 - .../api/config/v1/custom.dns.testsuite.yaml | 104 - .../v1/custom.infrastructure.testsuite.yaml | 321 - .../github.com/openshift/api/config/v1/doc.go | 1 + .../openshift/api/config/v1/feature_gates.go | 304 - .../config/v1/stable.apiserver.testsuite.yaml | 36 - .../v1/stable.authentication.testsuite.yaml | 14 - .../api/config/v1/stable.build.testsuite.yaml | 14 - .../v1/stable.clusteroperator.testsuite.yaml | 14 - .../v1/stable.clusterversion.testsuite.yaml | 138 - .../config/v1/stable.console.testsuite.yaml | 14 - .../api/config/v1/stable.dns.testsuite.yaml | 105 - .../v1/stable.featuregate.testsuite.yaml | 14 - .../api/config/v1/stable.image.testsuite.yaml | 14 - .../stable.imagecontentpolicy.testsuite.yaml | 14 - ...stable.imagedigestmirrorset.testsuite.yaml | 14 - .../stable.imagetagmirrorset.testsuite.yaml | 14 - .../v1/stable.infrastructure.testsuite.yaml | 965 -- .../config/v1/stable.ingress.testsuite.yaml | 14 - .../config/v1/stable.network.testsuite.yaml | 14 - .../api/config/v1/stable.node.testsuite.yaml | 14 - .../api/config/v1/stable.oauth.testsuite.yaml | 14 - .../v1/stable.operatorhub.testsuite.yaml | 14 - .../config/v1/stable.project.testsuite.yaml | 14 - .../api/config/v1/stable.proxy.testsuite.yaml | 14 - .../config/v1/stable.scheduler.testsuite.yaml | 14 - .../v1/techpreview.apiserver.testsuite.yaml | 35 - .../config/v1/techpreview.dns.testsuite.yaml | 14 - .../techpreview.infrastructure.testsuite.yaml | 519 - .../openshift/api/config/v1/types.go | 30 + .../api/config/v1/types_apiserver.go | 7 +- .../api/config/v1/types_authentication.go | 331 +- .../openshift/api/config/v1/types_build.go | 6 + .../api/config/v1/types_cluster_operator.go | 11 + .../api/config/v1/types_cluster_version.go | 167 +- .../openshift/api/config/v1/types_console.go | 5 + .../openshift/api/config/v1/types_dns.go | 5 + .../openshift/api/config/v1/types_feature.go | 173 +- .../openshift/api/config/v1/types_image.go | 9 +- .../config/v1/types_image_content_policy.go | 5 + .../v1/types_image_digest_mirror_set.go | 5 + .../config/v1/types_image_tag_mirror_set.go | 5 + .../api/config/v1/types_infrastructure.go | 453 +- .../openshift/api/config/v1/types_ingress.go | 33 +- .../openshift/api/config/v1/types_network.go | 120 +- .../openshift/api/config/v1/types_node.go | 3 + .../openshift/api/config/v1/types_oauth.go | 5 + .../api/config/v1/types_operatorhub.go | 5 + .../openshift/api/config/v1/types_project.go | 5 + .../openshift/api/config/v1/types_proxy.go | 5 + .../api/config/v1/types_scheduling.go | 33 + .../api/config/v1/types_testreporting.go | 46 + .../api/config/v1/types_tlssecurityprofile.go | 63 +- .../api/config/v1/zz_generated.deepcopy.go | 764 +- ..._generated.featuregated-crd-manifests.yaml | 491 + .../v1/zz_generated.swagger_doc_generated.go | 334 +- ...or_01_backup-TechPreviewNoUpgrade.crd.yaml | 100 - ...ig-operator_01_insightsdatagather.crd.yaml | 62 - .../openshift/api/config/v1alpha1/register.go | 4 + .../techpreview.backup.testsuite.yaml | 202 - ...hpreview.insightsdatagather.testsuite.yaml | 14 - .../api/config/v1alpha1/types_backup.go | 6 + .../v1alpha1/types_cluster_image_policy.go | 77 + .../api/config/v1alpha1/types_image_policy.go | 236 + .../api/config/v1alpha1/types_insights.go | 6 + .../config/v1alpha1/zz_generated.deepcopy.go | 384 + ..._generated.featuregated-crd-manifests.yaml | 92 + .../zz_generated.swagger_doc_generated.go | 156 + .../console/v1/00_consoleclidownload.crd.yaml | 77 - .../v1/00_consoleexternalloglink.crd.yaml | 68 - .../api/console/v1/00_consolelink.crd.yaml | 125 - .../v1/00_consolenotification.crd.yaml | 84 - .../console/v1/00_consolequickstart.crd.yaml | 165 - .../api/console/v1/00_consolesample.crd.yaml | 167 - .../console/v1/00_consoleyamlsample.crd.yaml | 74 - .../api/console/v1/90_consoleplugin.crd.yaml | 294 - .../stable.consoleclidownload.testsuite.yaml | 20 - ...able.consoleexternalloglink.testsuite.yaml | 18 - .../v1/stable.consolelink.testsuite.yaml | 20 - .../stable.consolenotification.testsuite.yaml | 16 - .../v1/stable.consoleplugin.testsuite.yaml | 88 - .../stable.consolequickstart.testsuite.yaml | 28 - .../v1/stable.consolesample.testsuite.yaml | 183 - .../stable.consoleyamlsample.testsuite.yaml | 26 - .../console/v1/types_console_cli_download.go | 10 + .../v1/types_console_external_log_links.go | 11 + .../api/console/v1/types_console_link.go | 12 + .../console/v1/types_console_notification.go | 11 + .../api/console/v1/types_console_plugin.go | 8 + .../console/v1/types_console_quick_start.go | 7 + .../api/console/v1/types_console_sample.go | 7 + .../console/v1/types_console_yaml_sample.go | 7 + ..._generated.featuregated-crd-manifests.yaml | 225 + .../v1alpha1/90_consoleplugin.crd.yaml | 294 - .../stable.consoleplugin.testsuite.yaml | 23 - .../console/v1alpha1/types_console_plugin.go | 8 + ..._generated.featuregated-crd-manifests.yaml | 24 + vendor/github.com/openshift/api/features.md | 74 + .../0000_10-helm-chart-repository.crd.yaml | 130 - ..._10-project-helm-chart-repository.crd.yaml | 139 - .../stable.helmchartrepository.testsuite.yaml | 14 - ....projecthelmchartrepository.testsuite.yaml | 14 - .../v1beta1/types_helm_chart_repository.go | 5 + .../types_project_helm_chart_repository.go | 5 + ..._generated.featuregated-crd-manifests.yaml | 42 + .../v1/00_imageregistry.crd.yaml | 1263 --- .../v1/00_imageregistry.crd.yaml-patch | 13 - .../imageregistry/v1/01_imagepruner.crd.yaml | 644 -- .../v1/stable.config.testsuite.yaml | 18 - .../v1/stable.imagepruner.testsuite.yaml | 15 - .../openshift/api/imageregistry/v1/types.go | 123 +- .../api/imageregistry/v1/types_imagepruner.go | 5 + .../imageregistry/v1/zz_generated.deepcopy.go | 44 +- ..._generated.featuregated-crd-manifests.yaml | 43 + .../v1/zz_generated.swagger_doc_generated.go | 31 +- vendor/github.com/openshift/api/install.go | 2 - .../api/kubecontrolplane/v1/types.go | 6 +- .../v1/zz_generated.swagger_doc_generated.go | 2 +- .../openshift/api/legacyconfig/v1/types.go | 9 +- .../v1/zz_generated.swagger_doc_generated.go | 6 +- .../openshift/api/machine/.codegen.yaml | 1 + .../0000_10_controlplanemachineset.crd.yaml | 564 -- ....controlplanemachineset.aws.testsuite.yaml | 368 - ...ontrolplanemachineset.azure.testsuite.yaml | 74 - ....controlplanemachineset.gcp.testsuite.yaml | 74 - ...olplanemachineset.openstack.testsuite.yaml | 632 -- ...able.controlplanemachineset.testsuite.yaml | 488 - .../v1/types_controlplanemachineset.go | 58 +- .../api/machine/v1/types_nutanixprovider.go | 8 + .../api/machine/v1/zz_generated.deepcopy.go | 53 +- ..._generated.featuregated-crd-manifests.yaml | 51 + .../v1/zz_generated.swagger_doc_generated.go | 28 +- .../api/machine/v1alpha1/types_openstack.go | 71 + .../machine/v1alpha1/zz_generated.deepcopy.go | 61 + .../zz_generated.swagger_doc_generated.go | 76 +- .../machine/v1beta1/0000_10_machine.crd.yaml | 329 - .../v1beta1/0000_10_machinehealthcheck.yaml | 195 - .../v1beta1/0000_10_machineset.crd.yaml | 351 - .../v1beta1/stable.machine.testsuite.yaml | 14 - .../stable.machinehealthcheck.testsuite.yaml | 16 - .../v1beta1/stable.machineset.testsuite.yaml | 15 - .../machine/v1beta1/types_azureprovider.go | 2 +- .../api/machine/v1beta1/types_gcpprovider.go | 45 +- .../api/machine/v1beta1/types_machine.go | 7 + .../v1beta1/types_machinehealthcheck.go | 8 +- .../api/machine/v1beta1/types_machineset.go | 7 + .../api/machine/v1beta1/types_provider.go | 2 + .../machine/v1beta1/types_vsphereprovider.go | 6 + .../machine/v1beta1/zz_generated.deepcopy.go | 31 +- ..._generated.featuregated-crd-manifests.yaml | 138 + .../zz_generated.swagger_doc_generated.go | 15 +- .../openshift/api/monitoring/install.go | 4 +- .../api/monitoring/{v1alpha1 => v1}/Makefile | 2 +- .../api/monitoring/{v1alpha1 => v1}/doc.go | 2 +- .../monitoring/{v1alpha1 => v1}/register.go | 4 +- .../api/monitoring/{v1alpha1 => v1}/types.go | 138 +- .../{v1alpha1 => v1}/zz_generated.deepcopy.go | 6 +- ..._generated.featuregated-crd-manifests.yaml | 44 + .../zz_generated.swagger_doc_generated.go | 38 +- ...00_50_monitoring_01_alertingrules.crd.yaml | 122 - ...monitoring_02_alertrelabelconfigs.crd.yaml | 140 - .../techpreview.alertingrule.testsuite.yaml | 24 - ...hpreview.alertrelabelconfig.testsuite.yaml | 20 - .../openshift/api/network/.codegen.yaml | 1 + .../openshift/api/network/install.go | 3 +- .../network/v1/001-clusternetwork-crd.yaml | 102 - .../api/network/v1/002-hostsubnet-crd.yaml | 88 - .../api/network/v1/003-netnamespace-crd.yaml | 66 - .../v1/004-egressnetworkpolicy-crd.yaml | 71 - .../openshift/api/network/v1/generated.proto | 37 +- .../v1/stable.clusternetwork.testsuite.yaml | 16 - .../stable.egressnetworkpolicy.testsuite.yaml | 16 - .../v1/stable.hostsubnet.testsuite.yaml | 18 - .../v1/stable.netnamespace.testsuite.yaml | 16 - .../openshift/api/network/v1/types.go | 37 +- ..._generated.featuregated-crd-manifests.yaml | 126 + .../openshift/api/network/v1alpha1/Makefile | 3 + .../openshift/api/network/v1alpha1/doc.go | 6 + .../api/network/v1alpha1/register.go | 40 + .../network/v1alpha1/types_dnsnameresolver.go | 142 + .../network/v1alpha1/zz_generated.deepcopy.go | 161 + ..._generated.featuregated-crd-manifests.yaml | 23 + .../zz_generated.swagger_doc_generated.go | 76 + .../v1/001-egressrouter.crd.yaml | 208 - .../v1/001-egressrouter.crd.yaml-patch | 26 - .../api/networkoperator/v1/generated.proto | 7 +- .../v1/stable.egressrouter.testsuite.yaml | 23 - .../networkoperator/v1/types_egressrouter.go | 7 +- ..._generated.featuregated-crd-manifests.yaml | 29 + .../api/openshiftcontrolplane/v1/types.go | 33 +- .../v1/zz_generated.swagger_doc_generated.go | 2 +- .../openshift/api/operator/.codegen.yaml | 8 +- ...0000_10_config-operator_01_config.crd.yaml | 136 - .../0000_12_etcd-operator_01_config.crd.yaml | 192 - ...kube-apiserver-operator_01_config.crd.yaml | 205 - ...piserver-operator_01_config.crd.yaml-patch | 3 - ...roller-manager-operator_01_config.crd.yaml | 198 - ...-manager-operator_01_config.crd.yaml-patch | 3 - ...kube-scheduler-operator_01_config.crd.yaml | 194 - ...cheduler-operator_01_config.crd.yaml-patch | 3 - ...hift-apiserver-operator_01_config.crd.yaml | 141 - ...oud-credential-operator_00_config.crd.yaml | 143 - ...rsion-migrator-operator_00_config.crd.yaml | 133 - ...authentication-operator_01_config.crd.yaml | 140 - ...roller-manager-operator_02_config.crd.yaml | 134 - ...00_50_cluster_storage_operator_01_crd.yaml | 144 - ...ess-operator_00-ingresscontroller.crd.yaml | 1137 --- ...erator_00-ingresscontroller.crd.yaml-patch | 32 - ...ghts-operator_00-insightsoperator.crd.yaml | 260 - .../0000_50_service-ca-operator_02_crd.yaml | 135 - ...00_70_cluster-network-operator_01.crd.yaml | 524 - .../v1/0000_70_dns-operator_00.crd.yaml | 305 - .../v1/0000_70_dns-operator_00.crd.yaml-patch | 21 - ...i_snapshot_controller_operator_01_crd.yaml | 134 - ...0_90_cluster_csi_driver_01_config.crd.yaml | 255 - ...luster_csi_driver_01_config.crd.yaml-patch | 22 - .../operator/v1/00_console-operator.crd.yaml | 438 - .../openshift/api/operator/v1/register.go | 2 + .../v1/stable.authentication.testsuite.yaml | 16 - .../v1/stable.cloudcredential.testsuite.yaml | 16 - .../v1/stable.clustercsidriver.testsuite.yaml | 20 - .../operator/v1/stable.config.testsuite.yaml | 16 - .../operator/v1/stable.console.testsuite.yaml | 157 - ...table.csisnapshotcontroller.testsuite.yaml | 16 - .../api/operator/v1/stable.dns.testsuite.yaml | 21 - .../operator/v1/stable.etcd.testsuite.yaml | 16 - .../stable.ingresscontroller.testsuite.yaml | 478 - .../v1/stable.insightsoperator.testsuite.yaml | 16 - .../v1/stable.kubeapiserver.testsuite.yaml | 16 - ...table.kubecontrollermanager.testsuite.yaml | 17 - .../v1/stable.kubescheduler.testsuite.yaml | 16 - ....kubestorageversionmigrator.testsuite.yaml | 16 - .../operator/v1/stable.network.testsuite.yaml | 17 - .../stable.openshiftapiserver.testsuite.yaml | 16 - ....openshiftcontrollermanager.testsuite.yaml | 16 - .../v1/stable.serviceca.testsuite.yaml | 16 - .../operator/v1/stable.storage.testsuite.yaml | 113 - .../openshift/api/operator/v1/types.go | 12 +- .../api/operator/v1/types_authentication.go | 6 + .../api/operator/v1/types_cloudcredential.go | 6 + .../openshift/api/operator/v1/types_config.go | 5 + .../api/operator/v1/types_console.go | 5 + .../operator/v1/types_csi_cluster_driver.go | 67 +- .../api/operator/v1/types_csi_snapshot.go | 6 +- .../openshift/api/operator/v1/types_dns.go | 13 +- .../openshift/api/operator/v1/types_etcd.go | 46 + .../api/operator/v1/types_ingress.go | 22 +- .../api/operator/v1/types_insights.go | 5 + .../api/operator/v1/types_kubeapiserver.go | 5 + .../v1/types_kubecontrollermanager.go | 5 + .../v1/types_kubestorageversionmigrator.go | 5 + .../operator/v1/types_machineconfiguration.go | 496 + .../api/operator/v1/types_network.go | 253 +- .../operator/v1/types_openshiftapiserver.go | 5 + .../v1/types_openshiftcontrollermanager.go | 5 + .../api/operator/v1/types_scheduler.go | 5 + .../api/operator/v1/types_serviceca.go | 5 + .../api/operator/v1/types_storage.go | 6 +- .../api/operator/v1/zz_generated.deepcopy.go | 645 +- ..._generated.featuregated-crd-manifests.yaml | 428 + .../v1/zz_generated.swagger_doc_generated.go | 292 +- ...1_etcdbackup-TechPreviewNoUpgrade.crd.yaml | 114 - ...rator_01_imagecontentsourcepolicy.crd.yaml | 59 - ...g-operator_01_olm-CustomNoUpgrade.crd.yaml | 140 - ...rator_01_olm-TechPreviewNoUpgrade.crd.yaml | 140 - .../v1alpha1/custom.olm.testsuite.yaml | 28 - ...le.imagecontentsourcepolicy.testsuite.yaml | 14 - .../techpreview.etcdbackup.testsuite.yaml | 38 - .../v1alpha1/techpreview.olm.testsuite.yaml | 28 - .../api/operator/v1alpha1/types_etcdbackup.go | 7 +- .../types_image_content_source_policy.go | 5 + .../api/operator/v1alpha1/types_olm.go | 6 + ..._generated.featuregated-crd-manifests.yaml | 67 + ...10-pod-network-connectivity-check.crd.yaml | 227 - ...podnetworkconnectivitycheck.testsuite.yaml | 18 - .../v1alpha1/types_conditioncheck.go | 5 + ..._generated.featuregated-crd-manifests.yaml | 22 + ...openshift_01_clusterresourcequota.crd.yaml | 197 - .../openshift/api/quota/v1/generated.proto | 5 + ...stable.clusterresourcequota.testsuite.yaml | 18 - .../openshift/api/quota/v1/types.go | 5 + ..._generated.featuregated-crd-manifests.yaml | 21 + .../openshift/api/route/.codegen.yaml | 5 - .../api/route/v1/custom.route.testsuite.yaml | 103 - .../openshift/api/route/v1/generated.proto | 14 +- .../route/v1/route-CustomNoUpgrade.crd.yaml | 364 - .../v1/route-TechPreviewNoUpgrade.crd.yaml | 364 - .../openshift/api/route/v1/route.crd.yaml | 407 - .../api/route/v1/route.crd.yaml-patch | 67 - .../api/route/v1/stable.route.testsuite.yaml | 675 -- .../route/v1/techpreview.route.testsuite.yaml | 103 - .../openshift/api/route/v1/types.go | 24 +- ..._generated.featuregated-crd-manifests.yaml | 34 + .../v1/zz_generated.swagger_doc_generated.go | 4 +- .../api/samples/v1/00_samplesconfig.crd.yaml | 127 - .../openshift/api/samples/v1/generated.pb.go | 154 +- .../openshift/api/samples/v1/generated.proto | 26 + .../samples/v1/stable.config.testsuite.yaml | 14 - .../openshift/api/samples/v1/types_config.go | 31 + .../api/samples/v1/zz_generated.deepcopy.go | 5 + ..._generated.featuregated-crd-manifests.yaml | 23 + .../v1/zz_generated.swagger_doc_generated.go | 1 + ...0000_03_security-openshift_01_scc.crd.yaml | 279 - .../openshift/api/security/v1/generated.proto | 22 +- ....securitycontextconstraints.testsuite.yaml | 36 - .../openshift/api/security/v1/types.go | 22 +- ..._generated.featuregated-crd-manifests.yaml | 58 + .../v1alpha1/0000_10_sharedconfigmap.crd.yaml | 105 - .../v1alpha1/0000_10_sharedsecret.crd.yaml | 105 - .../stable.sharedconfigmap.testsuite.yaml | 20 - .../stable.sharedsecret.testsuite.yaml | 20 - .../v1alpha1/types_shared_configmap.go | 7 +- .../v1alpha1/types_shared_secret.go | 6 +- ..._generated.featuregated-crd-manifests.yaml | 46 + vendor/github.com/spf13/afero/memmap.go | 3 +- vendor/github.com/spf13/afero/unionFile.go | 2 +- vendor/github.com/stretchr/objx/README.md | 8 +- vendor/github.com/stretchr/objx/Taskfile.yml | 5 +- vendor/github.com/stretchr/objx/accessors.go | 24 +- .../github.com/stretchr/objx/conversions.go | 4 +- vendor/github.com/stretchr/objx/doc.go | 44 +- vendor/github.com/stretchr/objx/map.go | 9 +- .../testify/assert/assertion_compare.go | 28 +- .../assert/assertion_compare_can_convert.go | 16 - .../assert/assertion_compare_legacy.go | 16 - .../testify/assert/assertion_format.go | 32 +- .../testify/assert/assertion_forward.go | 59 +- .../stretchr/testify/assert/assertions.go | 207 +- .../testify/assert/http_assertions.go | 27 +- .../github.com/stretchr/testify/mock/mock.go | 129 +- vendor/go.uber.org/zap/.golangci.yml | 77 + vendor/go.uber.org/zap/CHANGELOG.md | 221 +- vendor/go.uber.org/zap/Makefile | 82 +- vendor/go.uber.org/zap/array.go | 127 + vendor/go.uber.org/zap/array_go118.go | 156 - vendor/go.uber.org/zap/buffer/buffer.go | 5 + vendor/go.uber.org/zap/error.go | 5 +- vendor/go.uber.org/zap/field.go | 25 +- vendor/go.uber.org/zap/http_handler.go | 19 +- .../stacktrace/stack.go} | 71 +- vendor/go.uber.org/zap/logger.go | 42 +- vendor/go.uber.org/zap/sink.go | 5 +- vendor/go.uber.org/zap/writer.go | 12 +- vendor/go.uber.org/zap/zapcore/core.go | 6 +- vendor/go.uber.org/zap/zapcore/entry.go | 4 +- vendor/go.uber.org/zap/zapcore/error.go | 5 +- .../go.uber.org/zap/zapcore/json_encoder.go | 143 +- vendor/go.uber.org/zap/zapcore/lazy_with.go | 54 + vendor/golang.org/x/net/websocket/client.go | 139 + vendor/golang.org/x/net/websocket/dial.go | 29 + vendor/golang.org/x/net/websocket/hybi.go | 583 ++ vendor/golang.org/x/net/websocket/server.go | 113 + .../golang.org/x/net/websocket/websocket.go | 449 + vendor/golang.org/x/sync/errgroup/errgroup.go | 3 + vendor/golang.org/x/sync/errgroup/go120.go | 1 - .../golang.org/x/sync/errgroup/pre_go120.go | 1 - vendor/golang.org/x/sys/execabs/execabs.go | 102 - .../golang.org/x/sys/execabs/execabs_go118.go | 17 - .../golang.org/x/sys/execabs/execabs_go119.go | 20 - vendor/golang.org/x/tools/cover/profile.go | 266 + .../x/tools/go/ast/astutil/enclosing.go | 8 +- .../x/tools/go/ast/astutil/rewrite.go | 8 +- .../x/tools/go/ast/inspector/typeof.go | 4 +- .../x/tools/go/gcexportdata/gcexportdata.go | 186 + .../x/tools/go/gcexportdata/importer.go | 75 + .../tools/go/internal/packagesdriver/sizes.go | 53 + vendor/golang.org/x/tools/go/packages/doc.go | 250 + .../x/tools/go/packages/external.go | 140 + .../golang.org/x/tools/go/packages/golist.go | 1106 +++ .../x/tools/go/packages/golist_overlay.go | 83 + .../x/tools/go/packages/loadmode_string.go | 57 + .../x/tools/go/packages/packages.go | 1313 +++ .../golang.org/x/tools/go/packages/visit.go | 59 + .../x/tools/go/types/objectpath/objectpath.go | 752 ++ .../x/tools/internal/event/keys/util.go | 21 + .../x/tools/internal/fastwalk/fastwalk.go | 196 - .../internal/fastwalk/fastwalk_darwin.go | 119 - .../fastwalk/fastwalk_dirent_fileno.go | 14 - .../internal/fastwalk/fastwalk_dirent_ino.go | 15 - .../fastwalk/fastwalk_dirent_namlen_bsd.go | 14 - .../fastwalk/fastwalk_dirent_namlen_linux.go | 29 - .../internal/fastwalk/fastwalk_portable.go | 41 - .../tools/internal/fastwalk/fastwalk_unix.go | 153 - .../x/tools/internal/gcimporter/bimport.go | 150 + .../x/tools/internal/gcimporter/exportdata.go | 99 + .../x/tools/internal/gcimporter/gcimporter.go | 273 + .../x/tools/internal/gcimporter/iexport.go | 1321 +++ .../x/tools/internal/gcimporter/iimport.go | 1089 +++ .../internal/gcimporter/newInterface10.go | 22 + .../internal/gcimporter/newInterface11.go | 14 + .../support_go117.go} | 12 +- .../internal/gcimporter/support_go118.go | 37 + .../x/tools/internal/gcimporter/unified_no.go | 10 + .../tools/internal/gcimporter/unified_yes.go | 10 + .../x/tools/internal/gcimporter/ureader_no.go | 19 + .../tools/internal/gcimporter/ureader_yes.go | 728 ++ .../x/tools/internal/gocommand/invoke.go | 27 +- .../x/tools/internal/gopathwalk/walk.go | 289 +- .../x/tools/internal/imports/fix.go | 190 +- .../x/tools/internal/imports/imports.go | 2 +- .../x/tools/internal/imports/mod.go | 287 +- .../x/tools/internal/imports/mod_cache.go | 116 +- .../x/tools/internal/imports/zstdlib.go | 61 + .../internal/packagesinternal/packages.go | 22 + .../x/tools/internal/pkgbits/codes.go | 77 + .../x/tools/internal/pkgbits/decoder.go | 517 + .../x/tools/internal/pkgbits/doc.go | 32 + .../x/tools/internal/pkgbits/encoder.go | 383 + .../x/tools/internal/pkgbits/flags.go | 9 + .../x/tools/internal/pkgbits/frames_go1.go | 21 + .../x/tools/internal/pkgbits/frames_go17.go | 28 + .../x/tools/internal/pkgbits/reloc.go | 42 + .../x/tools/internal/pkgbits/support.go | 17 + .../x/tools/internal/pkgbits/sync.go | 113 + .../internal/pkgbits/syncmarker_string.go | 89 + .../internal/tokeninternal/tokeninternal.go | 151 + .../x/tools/internal/typeparams/common.go | 24 +- .../x/tools/internal/typeparams/coretype.go | 8 +- .../internal/typeparams/enabled_go118.go | 15 - .../x/tools/internal/typeparams/normalize.go | 20 +- .../internal/typeparams/typeparams_go117.go | 197 - .../internal/typeparams/typeparams_go118.go | 151 - .../tools/internal/typesinternal/errorcode.go | 1560 +++ .../typesinternal/errorcode_string.go | 179 + .../x/tools/internal/typesinternal/types.go | 52 + .../tools/internal/typesinternal/types_118.go | 19 + .../x/tools/internal/versions/gover.go | 172 + .../x/tools/internal/versions/types.go | 19 + .../x/tools/internal/versions/types_go121.go | 20 + .../x/tools/internal/versions/types_go122.go | 24 + .../x/tools/internal/versions/versions.go | 52 + vendor/google.golang.org/grpc/README.md | 60 +- .../grpc/attributes/attributes.go | 59 +- .../grpc/balancer/balancer.go | 69 +- .../grpc/balancer/base/balancer.go | 22 +- .../grpc/balancer_conn_wrappers.go | 459 - .../grpc/balancer_wrapper.go | 337 + .../grpc_binarylog_v1/binarylog.pb.go | 6 +- vendor/google.golang.org/grpc/call.go | 11 +- vendor/google.golang.org/grpc/clientconn.go | 907 +- vendor/google.golang.org/grpc/codec.go | 8 +- vendor/google.golang.org/grpc/codes/codes.go | 8 +- .../grpc/credentials/credentials.go | 4 +- .../google.golang.org/grpc/credentials/tls.go | 75 +- vendor/google.golang.org/grpc/dialoptions.go | 98 +- .../grpc/encoding/encoding.go | 17 +- .../grpc/encoding/proto/proto.go | 28 +- .../grpc/grpclog/component.go | 40 +- .../google.golang.org/grpc/grpclog/grpclog.go | 30 +- .../google.golang.org/grpc/grpclog/logger.go | 30 +- .../grpc/grpclog/loggerv2.go | 56 +- vendor/google.golang.org/grpc/idle.go | 287 - vendor/google.golang.org/grpc/interceptor.go | 12 +- .../grpc/internal/backoff/backoff.go | 36 + .../balancer/gracefulswitch/config.go | 83 + .../balancer/gracefulswitch/gracefulswitch.go | 104 +- .../grpc/internal/balancerload/load.go | 4 +- .../grpc/internal/binarylog/method_logger.go | 13 +- .../grpc/internal/binarylog/sink.go | 2 +- .../grpc/internal/buffer/unbounded.go | 57 +- .../grpc/internal/channelz/channel.go | 255 + .../grpc/internal/channelz/channelmap.go | 402 + .../grpc/internal/channelz/funcs.go | 758 +- .../grpc/internal/channelz/id.go | 75 - .../grpc/internal/channelz/logging.go | 28 +- .../grpc/internal/channelz/server.go | 119 + .../grpc/internal/channelz/socket.go | 130 + .../grpc/internal/channelz/subchannel.go | 151 + .../{types_linux.go => syscall_linux.go} | 14 + ...{types_nonlinux.go => syscall_nonlinux.go} | 6 +- .../grpc/internal/channelz/trace.go | 204 + .../grpc/internal/channelz/types.go | 722 -- .../grpc/internal/credentials/credentials.go | 8 +- .../grpc/internal/envconfig/envconfig.go | 11 +- .../grpc/internal/envconfig/xds.go | 39 - .../grpc/internal/experimental.go | 28 + .../grpc/internal/grpclog/grpclog.go | 40 +- .../grpc/internal/grpclog/prefixLogger.go | 8 +- .../grpc/internal/grpcrand/grpcrand.go | 12 + .../grpc/internal/grpcrand/grpcrand_go1.21.go | 73 + .../internal/grpcsync/callback_serializer.go | 75 +- .../grpc/internal/grpcsync/pubsub.go | 121 + .../grpc/internal/idle/idle.go | 278 + .../grpc/internal/internal.go | 78 +- .../grpc/internal/metadata/metadata.go | 2 +- .../grpc/internal/pretty/pretty.go | 37 +- .../grpc/internal/resolver/config_selector.go | 4 +- .../internal/resolver/dns/dns_resolver.go | 166 +- .../resolver/dns/internal/internal.go | 70 + .../grpc/internal/resolver/unix/unix.go | 4 + .../grpc/internal/status/status.go | 51 +- ...il_nonlinux.go => tcp_keepalive_others.go} | 18 +- .../grpc/internal/tcp_keepalive_unix.go | 54 + .../grpc/internal/tcp_keepalive_windows.go | 54 + .../grpc/internal/transport/controlbuf.go | 21 +- .../grpc/internal/transport/handler_server.go | 93 +- .../grpc/internal/transport/http2_client.go | 158 +- .../grpc/internal/transport/http2_server.go | 232 +- .../grpc/internal/transport/http_util.go | 76 +- .../grpc/internal/transport/proxy.go | 14 +- .../grpc/internal/transport/transport.go | 78 +- .../grpc/internal/xds_handshake_cluster.go | 40 - .../grpc/metadata/metadata.go | 31 +- vendor/google.golang.org/grpc/peer/peer.go | 2 + .../google.golang.org/grpc/picker_wrapper.go | 53 +- vendor/google.golang.org/grpc/pickfirst.go | 90 +- vendor/google.golang.org/grpc/preloader.go | 2 +- .../grpc/resolver/dns/dns_resolver.go | 54 + vendor/google.golang.org/grpc/resolver/map.go | 123 +- .../grpc/resolver/resolver.go | 110 +- .../grpc/resolver_conn_wrapper.go | 239 - .../grpc/resolver_wrapper.go | 198 + vendor/google.golang.org/grpc/rpc_util.go | 114 +- vendor/google.golang.org/grpc/server.go | 592 +- .../google.golang.org/grpc/service_config.go | 41 +- .../grpc/shared_buffer_pool.go | 154 + vendor/google.golang.org/grpc/stats/stats.go | 14 +- .../google.golang.org/grpc/status/status.go | 14 +- vendor/google.golang.org/grpc/stream.go | 143 +- vendor/google.golang.org/grpc/tap/tap.go | 6 + vendor/google.golang.org/grpc/trace.go | 32 +- .../google.golang.org/grpc/trace_notrace.go | 52 + .../util_linux.go => trace_withtrace.go} | 32 +- vendor/google.golang.org/grpc/version.go | 2 +- vendor/google.golang.org/grpc/vet.sh | 179 +- .../protobuf/protoadapt/convert.go | 31 + .../k8s.io/api/admission/v1/generated.pb.go | 127 +- .../api/admission/v1beta1/generated.pb.go | 129 +- .../admissionregistration/v1/generated.pb.go | 6011 ++++++++++-- .../admissionregistration/v1/generated.proto | 574 +- .../api/admissionregistration/v1/register.go | 4 + .../api/admissionregistration/v1/types.go | 604 +- .../v1/types_swagger_doc_generated.go | 178 +- .../v1/zz_generated.deepcopy.go | 432 + .../v1alpha1/generated.pb.go | 235 +- .../admissionregistration/v1alpha1/types.go | 2 +- .../v1beta1/generated.pb.go | 309 +- .../v1beta1/generated.proto | 15 +- .../admissionregistration/v1beta1/types.go | 17 +- .../v1beta1/types_swagger_doc_generated.go | 4 +- .../v1alpha1 => api/apidiscovery/v2}/doc.go | 9 +- .../api/apidiscovery/v2/generated.pb.go | 1742 ++++ .../api/apidiscovery/v2/generated.proto | 156 + vendor/k8s.io/api/apidiscovery/v2/register.go | 56 + vendor/k8s.io/api/apidiscovery/v2/types.go | 155 + .../apidiscovery/v2/zz_generated.deepcopy.go | 190 + .../api/apidiscovery/v2beta1/generated.pb.go | 113 +- .../v1alpha1/generated.pb.go | 119 +- .../v1alpha1/generated.proto | 1 - .../api/apiserverinternal/v1alpha1/types.go | 1 - vendor/k8s.io/api/apps/v1/generated.pb.go | 341 +- vendor/k8s.io/api/apps/v1/generated.proto | 9 + vendor/k8s.io/api/apps/v1/types.go | 9 + .../k8s.io/api/apps/v1beta1/generated.pb.go | 299 +- .../k8s.io/api/apps/v1beta1/generated.proto | 5 + vendor/k8s.io/api/apps/v1beta1/types.go | 5 + .../k8s.io/api/apps/v1beta2/generated.pb.go | 365 +- .../k8s.io/api/apps/v1beta2/generated.proto | 9 + vendor/k8s.io/api/apps/v1beta2/types.go | 9 + .../api/authentication/v1/generated.pb.go | 154 +- .../api/authentication/v1/generated.proto | 4 + vendor/k8s.io/api/authentication/v1/types.go | 4 + .../authentication/v1alpha1/generated.pb.go | 59 +- .../authentication/v1beta1/generated.pb.go | 117 +- .../authentication/v1beta1/generated.proto | 3 + .../api/authentication/v1beta1/types.go | 3 + .../api/authorization/v1/generated.pb.go | 177 +- .../api/authorization/v1/generated.proto | 9 + vendor/k8s.io/api/authorization/v1/types.go | 9 + .../api/authorization/v1beta1/generated.pb.go | 183 +- .../api/authorization/v1beta1/generated.proto | 9 + .../k8s.io/api/authorization/v1beta1/types.go | 9 + .../k8s.io/api/autoscaling/v1/generated.pb.go | 255 +- .../k8s.io/api/autoscaling/v2/generated.pb.go | 243 +- .../api/autoscaling/v2beta1/generated.pb.go | 243 +- .../api/autoscaling/v2beta1/generated.proto | 3 + .../k8s.io/api/autoscaling/v2beta1/types.go | 3 + .../api/autoscaling/v2beta2/generated.pb.go | 255 +- .../api/autoscaling/v2beta2/generated.proto | 4 + .../k8s.io/api/autoscaling/v2beta2/types.go | 4 + vendor/k8s.io/api/batch/v1/generated.pb.go | 747 +- vendor/k8s.io/api/batch/v1/generated.proto | 122 +- vendor/k8s.io/api/batch/v1/types.go | 152 +- .../batch/v1/types_swagger_doc_generated.go | 49 +- .../api/batch/v1/zz_generated.deepcopy.go | 59 + .../k8s.io/api/batch/v1beta1/generated.pb.go | 115 +- .../api/certificates/v1/generated.pb.go | 133 +- .../api/certificates/v1alpha1/generated.pb.go | 74 +- .../api/certificates/v1beta1/generated.pb.go | 135 +- .../api/coordination/v1/generated.pb.go | 85 +- .../api/coordination/v1beta1/generated.pb.go | 85 +- .../api/core/v1/annotation_key_constants.go | 21 +- vendor/k8s.io/api/core/v1/generated.pb.go | 6565 +++++++++---- vendor/k8s.io/api/core/v1/generated.proto | 447 +- vendor/k8s.io/api/core/v1/types.go | 521 +- .../core/v1/types_swagger_doc_generated.go | 169 +- .../api/core/v1/zz_generated.deepcopy.go | 258 +- .../k8s.io/api/discovery/v1/generated.pb.go | 137 +- .../k8s.io/api/discovery/v1/generated.proto | 4 +- vendor/k8s.io/api/discovery/v1/types.go | 4 +- .../v1/types_swagger_doc_generated.go | 4 +- .../api/discovery/v1beta1/generated.pb.go | 135 +- .../api/discovery/v1beta1/generated.proto | 2 +- vendor/k8s.io/api/discovery/v1beta1/types.go | 2 +- .../v1beta1/types_swagger_doc_generated.go | 2 +- vendor/k8s.io/api/events/v1/generated.pb.go | 111 +- .../k8s.io/api/events/v1beta1/generated.pb.go | 111 +- .../api/extensions/v1beta1/generated.pb.go | 447 +- .../api/extensions/v1beta1/generated.proto | 19 + vendor/k8s.io/api/extensions/v1beta1/types.go | 19 + .../api/flowcontrol/{v1alpha1 => v1}/doc.go | 7 +- .../{v1alpha1 => v1}/generated.pb.go | 328 +- .../{v1alpha1 => v1}/generated.proto | 41 +- .../flowcontrol/{v1alpha1 => v1}/register.go | 6 +- .../api/flowcontrol/{v1alpha1 => v1}/types.go | 107 +- .../types_swagger_doc_generated.go | 4 +- .../{v1alpha1 => v1}/zz_generated.deepcopy.go | 7 +- .../zz_generated.prerelease-lifecycle.go | 122 - .../api/flowcontrol/v1beta1/generated.pb.go | 249 +- .../api/flowcontrol/v1beta1/generated.proto | 2 +- .../k8s.io/api/flowcontrol/v1beta1/types.go | 2 +- .../v1beta1/types_swagger_doc_generated.go | 2 +- .../api/flowcontrol/v1beta2/generated.pb.go | 261 +- .../api/flowcontrol/v1beta2/generated.proto | 2 +- .../k8s.io/api/flowcontrol/v1beta2/types.go | 2 +- .../v1beta2/types_swagger_doc_generated.go | 2 +- .../api/flowcontrol/v1beta3/generated.pb.go | 259 +- .../k8s.io/api/flowcontrol/v1beta3/types.go | 18 + .../zz_generated.prerelease-lifecycle.go | 28 + .../api/imagepolicy/v1alpha1/generated.pb.go | 91 +- .../api/imagepolicy/v1alpha1/generated.proto | 1 + .../k8s.io/api/imagepolicy/v1alpha1/types.go | 1 + .../k8s.io/api/networking/v1/generated.pb.go | 275 +- .../k8s.io/api/networking/v1/generated.proto | 9 + vendor/k8s.io/api/networking/v1/types.go | 9 + .../api/networking/v1alpha1/generated.pb.go | 989 +- .../api/networking/v1alpha1/generated.proto | 116 +- .../api/networking/v1alpha1/register.go | 4 +- .../k8s.io/api/networking/v1alpha1/types.go | 148 +- .../v1alpha1/types_swagger_doc_generated.go | 72 +- .../v1alpha1/zz_generated.deepcopy.go | 110 +- .../zz_generated.prerelease-lifecycle.go | 36 +- .../api/networking/v1beta1/generated.pb.go | 202 +- .../api/networking/v1beta1/generated.proto | 5 + vendor/k8s.io/api/networking/v1beta1/types.go | 5 + vendor/k8s.io/api/node/v1/generated.pb.go | 99 +- .../k8s.io/api/node/v1alpha1/generated.pb.go | 103 +- .../k8s.io/api/node/v1beta1/generated.pb.go | 99 +- vendor/k8s.io/api/policy/v1/doc.go | 2 +- vendor/k8s.io/api/policy/v1/generated.pb.go | 125 +- vendor/k8s.io/api/policy/v1beta1/doc.go | 2 +- .../k8s.io/api/policy/v1beta1/generated.pb.go | 5003 ++-------- .../k8s.io/api/policy/v1beta1/generated.proto | 277 - vendor/k8s.io/api/policy/v1beta1/register.go | 2 - vendor/k8s.io/api/policy/v1beta1/types.go | 371 - .../v1beta1/types_swagger_doc_generated.go | 160 - .../policy/v1beta1/zz_generated.deepcopy.go | 367 - .../zz_generated.prerelease-lifecycle.go | 36 - vendor/k8s.io/api/rbac/v1/generated.pb.go | 137 +- vendor/k8s.io/api/rbac/v1/generated.proto | 10 + vendor/k8s.io/api/rbac/v1/types.go | 10 + .../k8s.io/api/rbac/v1alpha1/generated.pb.go | 141 +- .../k8s.io/api/rbac/v1alpha1/generated.proto | 10 + vendor/k8s.io/api/rbac/v1alpha1/types.go | 10 + .../k8s.io/api/rbac/v1beta1/generated.pb.go | 137 +- .../k8s.io/api/rbac/v1beta1/generated.proto | 10 + vendor/k8s.io/api/rbac/v1beta1/types.go | 10 + .../api/resource/v1alpha2/generated.pb.go | 8396 ++++++++++++++--- .../api/resource/v1alpha2/generated.proto | 353 +- .../api/resource/v1alpha2/namedresources.go | 127 + .../k8s.io/api/resource/v1alpha2/register.go | 6 + vendor/k8s.io/api/resource/v1alpha2/types.go | 281 +- .../v1alpha2/types_swagger_doc_generated.go | 179 +- .../v1alpha2/zz_generated.deepcopy.go | 630 +- .../k8s.io/api/scheduling/v1/generated.pb.go | 73 +- .../api/scheduling/v1alpha1/generated.pb.go | 71 +- .../api/scheduling/v1beta1/generated.pb.go | 73 +- vendor/k8s.io/api/storage/v1/generated.pb.go | 259 +- vendor/k8s.io/api/storage/v1/generated.proto | 12 +- vendor/k8s.io/api/storage/v1/types.go | 12 +- .../storage/v1/types_swagger_doc_generated.go | 4 +- .../api/storage/v1alpha1/generated.pb.go | 753 +- .../api/storage/v1alpha1/generated.proto | 42 +- .../k8s.io/api/storage/v1alpha1/register.go | 2 + vendor/k8s.io/api/storage/v1alpha1/types.go | 54 +- .../v1alpha1/types_swagger_doc_generated.go | 21 + .../storage/v1alpha1/zz_generated.deepcopy.go | 66 + .../zz_generated.prerelease-lifecycle.go | 36 + .../api/storage/v1beta1/generated.pb.go | 259 +- .../api/storage/v1beta1/generated.proto | 9 +- vendor/k8s.io/api/storage/v1beta1/types.go | 9 +- .../v1beta1/types_swagger_doc_generated.go | 2 +- .../api/storagemigration/v1alpha1/doc.go | 23 + .../storagemigration/v1alpha1/generated.pb.go | 1688 ++++ .../storagemigration/v1alpha1/generated.proto | 127 + .../api/storagemigration/v1alpha1/register.go | 58 + .../api/storagemigration/v1alpha1/types.go | 131 + .../v1alpha1/types_swagger_doc_generated.go | 95 + .../v1alpha1/zz_generated.deepcopy.go | 160 + .../zz_generated.prerelease-lifecycle.go | 58 + .../pkg/apis/apiextensions/types.go | 25 + .../apis/apiextensions/types_jsonschema.go | 31 + .../pkg/apis/apiextensions/v1/conversion.go | 26 +- .../pkg/apis/apiextensions/v1/generated.pb.go | 712 +- .../pkg/apis/apiextensions/v1/generated.proto | 68 + .../pkg/apis/apiextensions/v1/types.go | 30 + .../apis/apiextensions/v1/types_jsonschema.go | 83 +- .../v1/zz_generated.conversion.go | 35 + .../apiextensions/v1/zz_generated.deepcopy.go | 26 + .../apiextensions/v1beta1/generated.pb.go | 775 +- .../apiextensions/v1beta1/generated.proto | 76 + .../pkg/apis/apiextensions/v1beta1/types.go | 38 + .../apiextensions/v1beta1/types_jsonschema.go | 83 +- .../v1beta1/zz_generated.conversion.go | 36 + .../v1beta1/zz_generated.deepcopy.go | 31 + .../apiextensions/zz_generated.deepcopy.go | 31 + .../v1/customresourcedefinitionversion.go | 14 + .../apiextensions/v1/selectablefield.go | 39 + .../apiextensions/v1/validationrule.go | 9 + .../v1beta1/customresourcedefinitionspec.go | 14 + .../customresourcedefinitionversion.go | 14 + .../apiextensions/v1beta1/selectablefield.go} | 20 +- .../apiextensions/v1beta1/validationrule.go | 9 + .../informers/externalversions/factory.go | 10 + .../apimachinery/pkg/api/meta/conditions.go | 37 +- .../apimachinery/pkg/api/resource/amount.go | 38 + .../pkg/api/resource/generated.pb.go | 43 +- .../apimachinery/pkg/api/resource/quantity.go | 10 + .../pkg/api/validation}/OWNERS | 2 - .../pkg/apis/meta/v1/generated.pb.go | 441 +- .../pkg/apis/meta/v1/generated.proto | 22 + .../apimachinery/pkg/apis/meta/v1/types.go | 35 + .../pkg/apis/meta/v1/unstructured/helpers.go | 2 +- .../pkg/apis/meta/v1beta1/generated.pb.go | 45 +- .../apimachinery/pkg/runtime/generated.pb.go | 65 +- .../k8s.io/apimachinery/pkg/runtime/helper.go | 35 +- .../pkg/runtime/schema/generated.pb.go | 31 +- .../runtime/serializer/streaming/streaming.go | 20 - .../pkg/util/cache/lruexpirecache.go | 13 + .../pkg/util/httpstream/httpstream.go | 21 + .../pkg/util/httpstream/spdy/roundtripper.go | 55 +- .../pkg/util/httpstream/wsstream/conn.go | 452 + .../pkg/util/httpstream/wsstream/doc.go | 69 + .../pkg/util/httpstream/wsstream/stream.go | 177 + .../pkg/util/intstr/generated.pb.go | 47 +- .../apimachinery/pkg/util/intstr/intstr.go | 6 +- .../managedfields/internal/structuredmerge.go | 9 +- .../managedfields/internal/typeconverter.go | 14 +- .../pkg/util/managedfields/node.yaml | 2 +- .../pkg/util/portforward/constants.go | 24 + .../apimachinery/pkg/util/proxy/dial.go | 122 + .../k8s.io/apimachinery/pkg/util/proxy/doc.go | 18 + .../apimachinery/pkg/util/proxy/transport.go | 272 + .../pkg/util/proxy/upgradeaware.go | 558 ++ .../pkg/util/remotecommand/constants.go | 14 + .../k8s.io/apimachinery/pkg/util/sets/doc.go | 2 +- .../apimachinery/pkg/util/sets/ordered.go | 53 - .../k8s.io/apimachinery/pkg/util/sets/set.go | 9 +- .../pkg/util/strategicpatch/meta.go | 89 + .../apimachinery/pkg/util/validation/OWNERS | 11 + .../pkg/util/validation/field/errors.go | 4 +- .../pkg/util/validation/validation.go | 56 +- .../apimachinery/pkg/util/version/version.go | 42 + .../k8s.io/apimachinery/pkg/util/wait/loop.go | 38 +- .../pkg/genericclioptions/config_flags.go | 17 +- .../genericclioptions/config_flags_fake.go | 2 +- .../pkg/genericclioptions/io_options.go | 6 +- .../pkg/genericclioptions/jsonpath_flags.go | 4 +- .../pkg/genericclioptions/template_flags.go | 4 +- .../cli-runtime/pkg/printers/terminal.go | 36 + .../k8s.io/cli-runtime/pkg/resource/mapper.go | 2 +- .../v1/auditannotation.go | 48 + .../v1/expressionwarning.go | 48 + .../v1/matchresources.go | 90 + .../v1/namedrulewithoperations.go | 94 + .../admissionregistration/v1/paramkind.go | 48 + .../admissionregistration/v1/paramref.go | 71 + .../admissionregistration/v1/typechecking.go | 44 + .../v1/validatingadmissionpolicy.go | 256 + .../v1/validatingadmissionpolicybinding.go | 247 + .../validatingadmissionpolicybindingspec.go | 72 + .../v1/validatingadmissionpolicyspec.go | 117 + .../v1/validatingadmissionpolicystatus.go | 66 + .../admissionregistration/v1/validation.go | 70 + .../admissionregistration/v1/variable.go | 48 + .../applyconfigurations/batch/v1/jobspec.go | 18 + .../batch/v1/successpolicy.go | 44 + .../batch/v1/successpolicyrule.go | 48 + .../core/v1/apparmorprofile.go | 52 + .../core/v1/clustertrustbundleprojection.go | 79 + .../core/v1/containerstatus.go | 14 + .../core/v1/lifecyclehandler.go | 9 + .../core/v1/loadbalanceringress.go | 13 + .../core/v1/modifyvolumestatus.go | 52 + .../core/v1/noderuntimehandler.go | 48 + .../core/v1/noderuntimehandlerfeatures.go | 39 + .../applyconfigurations/core/v1/nodestatus.go | 14 + .../core/v1/persistentvolumeclaimspec.go | 27 +- .../core/v1/persistentvolumeclaimstatus.go | 30 +- .../core/v1/persistentvolumespec.go | 9 + .../core/v1/podaffinityterm.go | 22 + .../core/v1/podsecuritycontext.go | 9 + .../core/v1/securitycontext.go | 9 + .../core/v1/servicespec.go | 9 + .../core/v1/sleepaction.go | 39 + .../core/v1/volumemount.go | 21 +- .../core/v1/volumemountstatus.go | 70 + .../core/v1/volumeprojection.go | 9 + .../core/v1/volumeresourcerequirements.go | 52 + .../exemptprioritylevelconfiguration.go | 2 +- .../flowdistinguishermethod.go | 8 +- .../{v1alpha1 => v1}/flowschema.go | 16 +- .../{v1alpha1 => v1}/flowschemacondition.go | 22 +- .../{v1alpha1 => v1}/flowschemaspec.go | 2 +- .../{v1alpha1 => v1}/flowschemastatus.go | 2 +- .../{v1alpha1 => v1}/groupsubject.go | 2 +- .../limitedprioritylevelconfiguration.go | 12 +- .../{v1alpha1 => v1}/limitresponse.go | 8 +- .../{v1alpha1 => v1}/nonresourcepolicyrule.go | 2 +- .../policyruleswithsubjects.go | 2 +- .../prioritylevelconfiguration.go | 16 +- .../prioritylevelconfigurationcondition.go | 22 +- .../prioritylevelconfigurationreference.go | 2 +- .../prioritylevelconfigurationspec.go | 8 +- .../prioritylevelconfigurationstatus.go | 2 +- .../{v1alpha1 => v1}/queuingconfiguration.go | 2 +- .../{v1alpha1 => v1}/resourcepolicyrule.go | 2 +- .../{v1alpha1 => v1}/serviceaccountsubject.go | 2 +- .../flowcontrol/{v1alpha1 => v1}/subject.go | 8 +- .../{v1alpha1 => v1}/usersubject.go | 2 +- .../applyconfigurations/internal/internal.go | 1301 ++- .../meta/v1/unstructured.go | 2 +- .../networking/v1alpha1/clustercidrspec.go | 70 - .../networking/v1alpha1/parentreference.go | 21 +- .../{clustercidr.go => servicecidr.go} | 87 +- .../networking/v1alpha1/servicecidrspec.go | 41 + .../networking/v1alpha1/servicecidrstatus.go | 48 + .../policy/v1beta1/allowedhostpath.go | 48 - .../policy/v1beta1/fsgroupstrategyoptions.go | 57 - .../policy/v1beta1/hostportrange.go | 48 - .../policy/v1beta1/idrange.go | 48 - .../policy/v1beta1/podsecuritypolicyspec.go | 285 - .../v1beta1/runasgroupstrategyoptions.go | 57 - .../v1beta1/runasuserstrategyoptions.go | 57 - .../v1beta1/runtimeclassstrategyoptions.go | 50 - .../policy/v1beta1/selinuxstrategyoptions.go | 53 - .../supplementalgroupsstrategyoptions.go | 57 - .../v1alpha2/allocationresultmodel.go | 39 + .../v1alpha2/driverallocationresult.go | 52 + .../resource/v1alpha2/driverrequests.go | 66 + .../namedresourcesallocationresult.go} | 14 +- .../v1alpha2/namedresourcesattribute.go | 100 + .../v1alpha2/namedresourcesattributevalue.go | 97 + .../resource/v1alpha2/namedresourcesfilter.go | 39 + .../v1alpha2/namedresourcesinstance.go | 53 + .../v1alpha2/namedresourcesintslice.go | 41 + .../v1alpha2/namedresourcesrequest.go | 39 + .../v1alpha2/namedresourcesresources.go | 44 + .../v1alpha2/namedresourcesstringslice.go | 41 + .../v1alpha2/resourceclaimparameters.go | 272 + .../resource/v1alpha2/resourceclass.go | 9 + .../v1alpha2/resourceclassparameters.go | 277 + .../resource/v1alpha2/resourcefilter.go | 48 + .../resource/v1alpha2/resourcefiltermodel.go | 39 + .../resource/v1alpha2/resourcehandle.go | 13 +- .../resource/v1alpha2/resourcemodel.go | 39 + .../resource/v1alpha2/resourcerequest.go | 52 + .../resource/v1alpha2/resourcerequestmodel.go | 39 + .../v1alpha2/resourceslice.go} | 110 +- .../v1alpha2/structuredresourcehandle.go | 75 + .../resource/v1alpha2/vendorparameters.go | 52 + .../storage/v1alpha1/volumeattributesclass.go | 262 + .../v1alpha1/groupversionresource.go | 57 + .../v1alpha1/migrationcondition.go | 81 + .../v1alpha1/storageversionmigration.go | 256 + .../v1alpha1/storageversionmigrationspec.go | 48 + .../v1alpha1/storageversionmigrationstatus.go | 53 + .../discovery/aggregated_discovery.go | 124 +- .../client-go/discovery/discovery_client.go | 57 +- vendor/k8s.io/client-go/features/envvar.go | 138 + vendor/k8s.io/client-go/features/features.go | 143 + .../client-go/features/known_features.go | 54 + .../admissionregistration/v1/interface.go | 14 + .../v1/validatingadmissionpolicy.go | 89 + .../v1/validatingadmissionpolicybinding.go | 89 + vendor/k8s.io/client-go/informers/doc.go | 2 +- vendor/k8s.io/client-go/informers/factory.go | 16 + .../informers/flowcontrol/interface.go | 12 +- .../{v1alpha1 => v1}/flowschema.go | 26 +- .../flowcontrol/{v1alpha1 => v1}/interface.go | 2 +- .../prioritylevelconfiguration.go | 26 +- vendor/k8s.io/client-go/informers/generic.go | 35 +- .../networking/v1alpha1/interface.go | 14 +- .../{clustercidr.go => servicecidr.go} | 38 +- .../informers/policy/v1beta1/interface.go | 7 - .../informers/resource/v1alpha2/interface.go | 21 + .../v1alpha2/resourceclaimparameters.go | 90 + .../v1alpha2/resourceclassparameters.go | 90 + .../v1alpha2/resourceslice.go} | 44 +- .../informers/storage/v1alpha1/interface.go | 7 + .../storage/v1alpha1/volumeattributesclass.go | 89 + .../informers/storagemigration/interface.go | 46 + .../storagemigration/v1alpha1/interface.go | 45 + .../v1alpha1/storageversionmigration.go | 89 + .../k8s.io/client-go/kubernetes/clientset.go | 29 +- vendor/k8s.io/client-go/kubernetes/doc.go | 2 +- .../kubernetes/fake/clientset_generated.go | 17 +- .../client-go/kubernetes/fake/register.go | 6 +- .../client-go/kubernetes/scheme/register.go | 6 +- .../v1/admissionregistration_client.go | 10 + .../fake/fake_admissionregistration_client.go | 8 + .../v1/fake/fake_validatingadmissionpolicy.go | 178 + .../fake_validatingadmissionpolicybinding.go | 145 + .../v1/generated_expansion.go | 4 + .../v1/validatingadmissionpolicy.go | 243 + .../v1/validatingadmissionpolicybinding.go | 197 + .../kubernetes/typed/flowcontrol/v1}/doc.go | 9 +- .../flowcontrol/{v1alpha1 => v1}/fake/doc.go | 0 .../fake/fake_flowcontrol_client.go | 10 +- .../{v1alpha1 => v1}/fake/fake_flowschema.go | 72 +- .../fake/fake_prioritylevelconfiguration.go | 72 +- .../{v1alpha1 => v1}/flowcontrol_client.go | 38 +- .../{v1alpha1 => v1}/flowschema.go | 70 +- .../{v1alpha1 => v1}/generated_expansion.go | 2 +- .../prioritylevelconfiguration.go | 70 +- .../typed/networking/v1alpha1/clustercidr.go | 197 - .../v1alpha1/fake/fake_clustercidr.go | 145 - .../v1alpha1/fake/fake_networking_client.go | 8 +- .../v1alpha1/fake/fake_servicecidr.go | 178 + .../v1alpha1/generated_expansion.go | 4 +- .../networking/v1alpha1/networking_client.go | 10 +- .../typed/networking/v1alpha1/servicecidr.go | 243 + .../v1beta1/fake/fake_podsecuritypolicy.go | 145 - .../policy/v1beta1/fake/fake_policy_client.go | 4 - .../policy/v1beta1/generated_expansion.go | 2 - .../typed/policy/v1beta1/podsecuritypolicy.go | 197 - .../typed/policy/v1beta1/policy_client.go | 5 - .../v1alpha2/fake/fake_resource_client.go | 12 + .../fake/fake_resourceclaimparameters.go | 154 + .../fake/fake_resourceclassparameters.go | 154 + .../v1alpha2/fake/fake_resourceslice.go | 145 + .../resource/v1alpha2/generated_expansion.go | 6 + .../resource/v1alpha2/resource_client.go | 15 + .../v1alpha2/resourceclaimparameters.go | 208 + .../v1alpha2/resourceclassparameters.go | 208 + .../typed/resource/v1alpha2/resourceslice.go | 197 + .../v1alpha1/fake/fake_storage_client.go | 4 + .../fake/fake_volumeattributesclass.go | 145 + .../storage/v1alpha1/generated_expansion.go | 2 + .../typed/storage/v1alpha1/storage_client.go | 5 + .../storage/v1alpha1/volumeattributesclass.go | 197 + .../v1alpha1/doc.go | 0 .../storagemigration/v1alpha1/fake}/doc.go | 7 +- .../fake/fake_storagemigration_client.go | 40 + .../fake/fake_storageversionmigration.go | 178 + .../v1alpha1/generated_expansion.go} | 7 +- .../v1alpha1/storagemigration_client.go | 107 + .../v1alpha1/storageversionmigration.go | 243 + .../v1/expansion_generated.go | 8 + .../v1/validatingadmissionpolicy.go | 68 + .../v1/validatingadmissionpolicybinding.go | 68 + .../{v1alpha1 => v1}/expansion_generated.go | 2 +- .../{v1alpha1 => v1}/flowschema.go | 18 +- .../prioritylevelconfiguration.go | 18 +- .../v1alpha1/expansion_generated.go | 8 +- .../{clustercidr.go => servicecidr.go} | 38 +- .../policy/v1beta1/expansion_generated.go | 4 - .../policy/v1beta1/podsecuritypolicy.go | 68 - .../resource/v1alpha2/expansion_generated.go | 20 + .../v1alpha2/resourceclaimparameters.go | 99 + .../v1alpha2/resourceclassparameters.go | 99 + .../resource/v1alpha2/resourceslice.go | 68 + .../storage/v1alpha1/expansion_generated.go | 4 + .../storage/v1alpha1/volumeattributesclass.go | 68 + .../v1alpha1/expansion_generated.go} | 10 +- .../v1alpha1/storageversionmigration.go | 68 + vendor/k8s.io/client-go/metadata/metadata.go | 4 +- .../k8s.io/client-go/restmapper/shortcut.go | 36 +- .../client-go/scale/scheme/appsint/doc.go | 2 +- .../client-go/scale/scheme/appsv1beta1/doc.go | 2 +- .../client-go/scale/scheme/appsv1beta2/doc.go | 2 +- .../scale/scheme/autoscalingv1/doc.go | 2 +- vendor/k8s.io/client-go/scale/scheme/doc.go | 2 +- .../scale/scheme/extensionsint/doc.go | 2 +- .../scale/scheme/extensionsv1beta1/doc.go | 2 +- .../client-go/tools/cache/controller.go | 10 + vendor/k8s.io/client-go/tools/cache/index.go | 3 +- .../k8s.io/client-go/tools/cache/reflector.go | 40 +- .../reflector_data_consistency_detector.go | 119 + .../client-go/tools/cache/shared_informer.go | 12 +- .../tools/cache/thread_safe_store.go | 92 +- .../client-go/tools/clientcmd/api/doc.go | 2 +- .../client-go/tools/clientcmd/api/v1/doc.go | 2 +- .../tools/clientcmd/client_config.go | 49 +- .../tools/clientcmd/merged_client_builder.go | 4 +- .../tools/internal/events/interfaces.go | 59 + .../tools/leaderelection/leaderelection.go | 30 +- .../client-go/tools/leaderelection/metrics.go | 30 +- vendor/k8s.io/client-go/tools/record/event.go | 197 +- vendor/k8s.io/client-go/tools/record/fake.go | 7 + .../client-go/tools/remotecommand/OWNERS | 10 + .../client-go/tools/remotecommand/fallback.go | 57 + .../tools/remotecommand/remotecommand.go | 124 - .../client-go/tools/remotecommand/spdy.go | 171 + .../client-go/tools/remotecommand/v5.go | 35 + .../tools/remotecommand/websocket.go | 515 + .../k8s.io/client-go/transport/spdy/spdy.go | 12 +- .../k8s.io/client-go/transport/transport.go | 55 + .../transport/websocket/roundtripper.go | 182 + .../client-go/util/flowcontrol/backoff.go | 3 +- .../client-go/util/jsonpath/jsonpath.go | 3 + .../k8s.io/client-go/util/workqueue/queue.go | 55 +- vendor/k8s.io/code-generator/README.md | 4 + .../cmd/applyconfiguration-gen/args/args.go | 63 +- .../args/externaltypes.go | 2 +- .../generators/applyconfiguration.go | 30 +- .../generators/internal.go | 8 +- .../generators/jsontagutil.go | 2 +- .../generators/openapi.go | 2 +- .../generators/refgraph.go | 8 +- .../generators/{packages.go => targets.go} | 137 +- .../generators/types.go | 2 +- .../applyconfiguration-gen/generators/util.go | 8 +- .../cmd/applyconfiguration-gen/main.go | 26 +- .../cmd/client-gen/args/args.go | 95 +- .../cmd/client-gen/args/gvpackages.go | 4 +- .../client-gen/generators/client_generator.go | 235 +- .../generators/fake/fake_client_generator.go | 93 +- .../fake/generator_fake_for_clientset.go | 21 +- .../fake/generator_fake_for_group.go | 18 +- .../fake/generator_fake_for_type.go | 25 +- .../generators/generator_for_clientset.go | 17 +- .../generators/generator_for_expansion.go | 6 +- .../generators/generator_for_group.go | 22 +- .../generators/generator_for_type.go | 27 +- .../generators/scheme/generator_for_scheme.go | 24 +- .../cmd/client-gen/generators/util/tags.go | 4 +- .../code-generator/cmd/client-gen/main.go | 32 +- .../cmd/client-gen/types/helpers.go | 8 +- .../cmd/conversion-gen/args/args.go | 44 +- .../conversion-gen/generators/conversion.go | 257 +- .../code-generator/cmd/conversion-gen/main.go | 28 +- .../cmd/deepcopy-gen/args/args.go | 36 +- .../cmd}/deepcopy-gen/generators/deepcopy.go | 165 +- .../code-generator/cmd/deepcopy-gen/main.go | 71 +- .../cmd/defaulter-gen/args/args.go | 35 +- .../defaulter-gen/generators/defaulter.go | 241 +- .../code-generator/cmd/defaulter-gen/main.go | 24 +- .../cmd/go-to-protobuf/protobuf/cmd.go | 278 +- .../cmd/go-to-protobuf/protobuf/generator.go | 32 +- .../go-to-protobuf/protobuf/import_tracker.go | 4 +- .../cmd/go-to-protobuf/protobuf/namer.go | 33 +- .../cmd/go-to-protobuf/protobuf/package.go | 54 +- .../cmd/go-to-protobuf/protobuf/parser.go | 30 +- .../cmd/go-to-protobuf/protobuf/tags.go | 4 +- .../code-generator/cmd/import-boss/.gitignore | 1 - .../code-generator/cmd/import-boss/README.md | 97 - .../code-generator/cmd/import-boss/main.go | 45 - .../cmd/informer-gen/args/args.go | 79 +- .../cmd/informer-gen/generators/factory.go | 20 +- .../generators/factoryinterface.go | 8 +- .../cmd/informer-gen/generators/generic.go | 8 +- .../informer-gen/generators/groupinterface.go | 12 +- .../cmd/informer-gen/generators/informer.go | 8 +- .../generators/{packages.go => targets.go} | 206 +- .../cmd/informer-gen/generators/types.go | 3 +- .../generators/versioninterface.go | 8 +- .../code-generator/cmd/informer-gen/main.go | 31 +- .../cmd/lister-gen/args/args.go | 50 +- .../cmd/lister-gen/generators/expansion.go | 18 +- .../cmd/lister-gen/generators/lister.go | 91 +- .../code-generator/cmd/lister-gen/main.go | 28 +- .../code-generator/cmd/openapi-gen/main.go | 57 - .../cmd/register-gen/args/args.go | 27 +- .../generators/register_external.go | 10 +- .../generators/{packages.go => targets.go} | 52 +- .../code-generator/cmd/register-gen/main.go | 23 +- .../code-generator/cmd/set-gen/.gitignore | 1 - .../k8s.io/code-generator/cmd/set-gen/main.go | 53 - .../k8s.io/code-generator/generate-groups.sh | 52 +- .../generate-internal-groups.sh | 258 +- vendor/k8s.io/code-generator/kube_codegen.sh | 464 +- .../code-generator/pkg/namer/tag-override.go | 7 +- .../k8s.io/code-generator/pkg/util/build.go | 60 - vendor/k8s.io/code-generator/tools.go | 3 - vendor/k8s.io/component-base/config/types.go | 80 - .../config/v1alpha1/conversion.go | 53 - .../config/v1alpha1/defaults.go | 98 - .../config/v1alpha1/register.go | 31 - .../component-base/config/v1alpha1/types.go | 82 - .../v1alpha1/zz_generated.conversion.go | 133 - .../config/v1alpha1/zz_generated.deepcopy.go | 88 - .../config/zz_generated.deepcopy.go | 73 - .../k8s.io/component-base/metrics/buckets.go | 10 + .../k8s.io/component-base/metrics/metric.go | 2 +- .../k8s.io/component-base/metrics/options.go | 13 +- vendor/k8s.io/component-base/metrics/opts.go | 24 + .../k8s.io/component-base/metrics/registry.go | 13 +- vendor/k8s.io/gengo/args/args.go | 199 - .../import-boss/generators/import_restrict.go | 443 - .../gengo/examples/set-gen/generators/sets.go | 378 - .../gengo/examples/set-gen/sets/byte.go | 221 - .../k8s.io/gengo/examples/set-gen/sets/int.go | 221 - .../gengo/examples/set-gen/sets/int64.go | 221 - .../gengo/examples/set-gen/sets/string.go | 221 - .../gengo/generator/default_generator.go | 62 - .../k8s.io/gengo/generator/default_package.go | 75 - .../gengo/generator/transitive_closure.go | 65 - vendor/k8s.io/gengo/parser/parse.go | 925 -- vendor/k8s.io/gengo/types/flatten.go | 57 - vendor/k8s.io/gengo/{ => v2}/LICENSE | 0 vendor/k8s.io/gengo/v2/README.md | 53 + vendor/k8s.io/gengo/{types => v2}/comments.go | 21 +- vendor/k8s.io/gengo/v2/execute.go | 98 + vendor/k8s.io/gengo/{ => v2}/generator/doc.go | 2 +- .../gengo/{ => v2}/generator/error_tracker.go | 0 .../gengo/{ => v2}/generator/execute.go | 153 +- .../gengo/{ => v2}/generator/generator.go | 123 +- .../k8s.io/gengo/v2/generator/go_generator.go | 61 + .../{ => v2}/generator/import_tracker.go | 14 +- .../gengo/v2/generator/simple_target.go | 77 + .../{ => v2}/generator/snippet_writer.go | 18 +- vendor/k8s.io/gengo/{ => v2}/namer/doc.go | 2 +- .../gengo/{ => v2}/namer/import_tracker.go | 4 +- vendor/k8s.io/gengo/{ => v2}/namer/namer.go | 2 +- vendor/k8s.io/gengo/{ => v2}/namer/order.go | 2 +- .../gengo/{ => v2}/namer/plural_namer.go | 2 +- vendor/k8s.io/gengo/{ => v2}/parser/doc.go | 2 +- vendor/k8s.io/gengo/v2/parser/parse.go | 821 ++ vendor/k8s.io/gengo/{ => v2}/types/doc.go | 2 +- vendor/k8s.io/gengo/{ => v2}/types/types.go | 12 +- vendor/k8s.io/klog/v2/.golangci.yaml | 6 + vendor/k8s.io/klog/v2/OWNERS | 4 +- vendor/k8s.io/klog/v2/contextual_slog.go | 31 + .../k8s.io/klog/v2/internal/buffer/buffer.go | 12 +- vendor/k8s.io/klog/v2/internal/clock/clock.go | 21 +- .../klog/v2/internal/serialize/keyvalues.go | 71 +- .../internal/serialize/keyvalues_no_slog.go | 97 + .../v2/internal/serialize/keyvalues_slog.go | 155 + .../internal/sloghandler/sloghandler_slog.go | 96 + vendor/k8s.io/klog/v2/k8s_references_slog.go | 39 + vendor/k8s.io/klog/v2/klog.go | 89 +- vendor/k8s.io/klog/v2/klog_file.go | 4 +- vendor/k8s.io/klog/v2/klogr.go | 46 +- vendor/k8s.io/klog/v2/klogr_slog.go | 96 + vendor/k8s.io/klog/v2/safeptr.go | 34 + .../kube-openapi/cmd/openapi-gen/args/args.go | 76 - .../k8s.io/kube-openapi/pkg/common/common.go | 3 + .../kube-openapi/pkg/generators/README.md | 49 - .../kube-openapi/pkg/generators/api_linter.go | 219 - .../kube-openapi/pkg/generators/config.go | 91 - .../kube-openapi/pkg/generators/enum.go | 162 - .../kube-openapi/pkg/generators/extension.go | 202 - .../kube-openapi/pkg/generators/openapi.go | 871 -- .../kube-openapi/pkg/generators/rules/OWNERS | 4 - .../kube-openapi/pkg/generators/rules/doc.go | 23 - .../pkg/generators/rules/idl_tag.go | 53 - .../pkg/generators/rules/names_match.go | 178 - .../generators/rules/omitempty_match_case.go | 64 - .../kube-openapi/pkg/generators/union.go | 207 - .../k8s.io/kube-openapi/pkg/schemaconv/smd.go | 3 - .../kube-openapi/pkg/util/sets/empty.go | 27 - .../kube-openapi/pkg/util/sets/string.go | 207 - vendor/k8s.io/kubectl/pkg/cmd/util/factory.go | 6 +- .../pkg/cmd/util/factory_client_access.go | 9 +- vendor/k8s.io/kubectl/pkg/cmd/util/helpers.go | 25 +- vendor/k8s.io/kubectl/pkg/drain/drain.go | 27 +- vendor/k8s.io/kubectl/pkg/drain/filters.go | 2 +- vendor/k8s.io/kubectl/pkg/scheme/install.go | 3 +- .../kubectl/de_DE/LC_MESSAGES/k8s.po | 4 +- .../kubectl/default/LC_MESSAGES/k8s.po | 4 +- .../kubectl/en_US/LC_MESSAGES/k8s.po | 4 +- .../kubectl/it_IT/LC_MESSAGES/k8s.po | 4 +- .../kubectl/ja_JP/LC_MESSAGES/k8s.po | 4 +- .../kubectl/pt_BR/LC_MESSAGES/k8s.po | 4 +- .../kubectl/zh_CN/LC_MESSAGES/k8s.po | 4 +- vendor/k8s.io/kubectl/pkg/util/openapi/doc.go | 2 +- .../kubectl/pkg/util/openapi/openapi.go | 7 + vendor/k8s.io/kubectl/pkg/util/term/term.go | 40 +- .../kubectl/pkg/validation/validation.go | 14 +- .../pkg/apis/deviceplugin/v1beta1/api.pb.go | 405 +- .../pkg/apis/deviceplugin/v1beta1/api.proto | 11 + vendor/k8s.io/utils/integer/integer.go | 73 - vendor/modules.txt | 229 +- .../controller-runtime/.golangci.yml | 16 +- vendor/sigs.k8s.io/controller-runtime/FAQ.md | 4 +- .../sigs.k8s.io/controller-runtime/Makefile | 49 +- vendor/sigs.k8s.io/controller-runtime/OWNERS | 3 +- .../controller-runtime/OWNERS_ALIASES | 6 - .../sigs.k8s.io/controller-runtime/RELEASE.md | 14 +- .../sigs.k8s.io/controller-runtime/alias.go | 8 - .../pkg/builder/controller.go | 60 +- .../controller-runtime/pkg/builder/webhook.go | 6 +- .../controller-runtime/pkg/cache/cache.go | 98 +- .../pkg/cache/delegating_by_gvk_cache.go | 8 + .../pkg/cache/informer_cache.go | 11 + .../pkg/cache/internal/cache_reader.go | 57 +- .../pkg/cache/internal/informers.go | 70 +- .../pkg/cache/multi_namespace_cache.go | 45 +- .../pkg/client/apiutil/apimachinery.go | 21 - .../pkg/client/apiutil/restmapper.go | 87 +- .../controller-runtime/pkg/client/client.go | 22 +- .../pkg/client/fake/client.go | 118 +- .../pkg/client/fieldowner.go | 106 + .../controller-runtime/pkg/client/options.go | 5 +- .../controller-runtime/pkg/config/config.go | 112 - .../pkg/config/v1alpha1/doc.go | 22 - .../pkg/config/v1alpha1/register.go | 43 - .../pkg/config/v1alpha1/types.go | 179 - .../config/v1alpha1/zz_generated.deepcopy.go | 157 - .../pkg/controller/controller.go | 40 +- .../controllerutil/controllerutil.go | 114 +- .../controller-runtime/pkg/envtest/crd.go | 23 +- .../controller-runtime/pkg/envtest/server.go | 25 + .../controller-runtime/pkg/envtest/webhook.go | 10 +- .../controller-runtime/pkg/event/event.go | 51 +- .../controller-runtime/pkg/handler/enqueue.go | 43 +- .../pkg/handler/enqueue_mapped.go | 42 +- .../pkg/handler/enqueue_owner.go | 48 +- .../pkg/handler/eventhandler.go | 62 +- .../pkg/internal/controller/controller.go | 35 +- .../pkg/internal/field/selector/utils.go | 16 +- .../pkg/internal/source/event_handler.go | 32 +- .../pkg/internal/source/kind.go | 58 +- .../pkg/internal/syncs/syncs.go | 38 + .../internal/testing/controlplane/kubectl.go | 1 + .../testing/process/procattr_other.go} | 23 +- .../testing/process/procattr_unix.go} | 26 +- .../pkg/internal/testing/process/process.go | 4 + .../pkg/manager/internal.go | 55 +- .../controller-runtime/pkg/manager/manager.go | 138 +- .../pkg/manager/runnable_group.go | 20 +- .../controller-runtime/pkg/manager/server.go | 74 +- .../pkg/metrics/leaderelection.go | 23 +- .../pkg/metrics/server/server.go | 32 +- .../pkg/metrics/workqueue.go | 4 +- .../pkg/predicate/predicate.go | 179 +- .../pkg/reconcile/reconcile.go | 34 +- .../controller-runtime/pkg/source/source.go | 124 +- .../pkg/webhook/admission/decode.go | 25 +- .../pkg/webhook/admission/defaulter.go | 4 +- .../pkg/webhook/admission/defaulter_custom.go | 2 +- .../pkg/webhook/admission/http.go | 52 +- .../pkg/webhook/admission/validator.go | 4 +- .../pkg/webhook/admission/validator_custom.go | 3 +- .../controller-runtime/pkg/webhook/alias.go | 2 + .../v4/fieldpath/pathelementmap.go | 45 +- .../structured-merge-diff/v4/merge/update.go | 33 +- .../v4/schema/schemaschema.go | 1 + .../structured-merge-diff/v4/typed/compare.go | 460 + .../structured-merge-diff/v4/typed/helpers.go | 21 +- .../structured-merge-diff/v4/typed/merge.go | 50 +- .../structured-merge-diff/v4/typed/parser.go | 12 +- .../structured-merge-diff/v4/typed/remove.go | 4 +- .../v4/typed/tofieldset.go | 24 +- .../structured-merge-diff/v4/typed/typed.go | 184 +- .../structured-merge-diff/v4/typed/union.go | 276 - .../v4/typed/validate.go | 8 +- 1496 files changed, 101556 insertions(+), 70205 deletions(-) rename vendor/github.com/Mellanox/{sriovnet => rdmamap}/.golangci.yml (93%) create mode 100644 vendor/github.com/Mellanox/rdmamap/.travis.yml rename vendor/github.com/Mellanox/{sriovnet => rdmamap}/LICENSE (100%) rename vendor/github.com/Mellanox/{sriovnet => rdmamap}/Makefile (97%) create mode 100644 vendor/github.com/Mellanox/rdmamap/README.md create mode 100644 vendor/github.com/Mellanox/rdmamap/rdma_map.go create mode 100644 vendor/github.com/Mellanox/rdmamap/rdma_stats.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/.travis.yml delete mode 100644 vendor/github.com/Mellanox/sriovnet/README.md delete mode 100644 vendor/github.com/Mellanox/sriovnet/file_access.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/mofed_ib_helper.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/defaultfs.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/fakefs.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/filesystem.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/pkg/utils/netlinkops/netlinkops.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/sriovnet.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/sriovnet_helper.go delete mode 100644 vendor/github.com/Mellanox/sriovnet/sriovnet_switchdev.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/decode.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/encode.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/fold.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/fuzz.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/indent.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/scanner.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/stream.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/tables.go create mode 100644 vendor/github.com/evanphx/json-patch/v5/internal/json/tags.go create mode 100644 vendor/github.com/go-logr/logr/SECURITY.md create mode 100644 vendor/github.com/go-logr/logr/context.go create mode 100644 vendor/github.com/go-logr/logr/context_noslog.go create mode 100644 vendor/github.com/go-logr/logr/context_slog.go create mode 100644 vendor/github.com/go-logr/logr/funcr/slogsink.go create mode 100644 vendor/github.com/go-logr/logr/sloghandler.go create mode 100644 vendor/github.com/go-logr/logr/slogr.go create mode 100644 vendor/github.com/go-logr/logr/slogr/slogr.go create mode 100644 vendor/github.com/go-logr/logr/slogsink.go create mode 100644 vendor/github.com/go-logr/zapr/.golangci.yaml create mode 100644 vendor/github.com/go-logr/zapr/slogzapr.go create mode 100644 vendor/github.com/go-logr/zapr/zapr_noslog.go create mode 100644 vendor/github.com/go-logr/zapr/zapr_slog.go create mode 100644 vendor/github.com/golang/glog/glog_file_linux.go create mode 100644 vendor/github.com/golang/glog/glog_file_other.go create mode 100644 vendor/github.com/golang/glog/glog_file_posix.go delete mode 100644 vendor/github.com/golang/protobuf/jsonpb/decode.go delete mode 100644 vendor/github.com/golang/protobuf/jsonpb/encode.go delete mode 100644 vendor/github.com/golang/protobuf/jsonpb/json.go create mode 100644 vendor/github.com/google/uuid/version6.go create mode 100644 vendor/github.com/google/uuid/version7.go create mode 100644 vendor/github.com/gorilla/websocket/.gitignore create mode 100644 vendor/github.com/gorilla/websocket/AUTHORS create mode 100644 vendor/github.com/gorilla/websocket/LICENSE create mode 100644 vendor/github.com/gorilla/websocket/README.md create mode 100644 vendor/github.com/gorilla/websocket/client.go create mode 100644 vendor/github.com/gorilla/websocket/compression.go create mode 100644 vendor/github.com/gorilla/websocket/conn.go create mode 100644 vendor/github.com/gorilla/websocket/doc.go create mode 100644 vendor/github.com/gorilla/websocket/join.go create mode 100644 vendor/github.com/gorilla/websocket/json.go create mode 100644 vendor/github.com/gorilla/websocket/mask.go create mode 100644 vendor/github.com/gorilla/websocket/mask_safe.go create mode 100644 vendor/github.com/gorilla/websocket/prepared.go create mode 100644 vendor/github.com/gorilla/websocket/proxy.go create mode 100644 vendor/github.com/gorilla/websocket/server.go create mode 100644 vendor/github.com/gorilla/websocket/tls_handshake.go create mode 100644 vendor/github.com/gorilla/websocket/tls_handshake_116.go create mode 100644 vendor/github.com/gorilla/websocket/util.go create mode 100644 vendor/github.com/gorilla/websocket/x_net_proxy.go create mode 100644 vendor/github.com/k8snetworkplumbingwg/network-attachment-definition-client/NOTICE create mode 100644 vendor/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/pkg/utils/mocks/RdmaProvider.go create mode 100644 vendor/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/pkg/utils/rdma_provider.go create mode 100644 vendor/github.com/k8snetworkplumbingwg/sriovnet/.gitignore create mode 100644 vendor/github.com/k8snetworkplumbingwg/sriovnet/errors.go create mode 100644 vendor/github.com/mxk/go-flowrate/LICENSE create mode 100644 vendor/github.com/mxk/go-flowrate/flowrate/flowrate.go create mode 100644 vendor/github.com/mxk/go-flowrate/flowrate/io.go create mode 100644 vendor/github.com/mxk/go-flowrate/flowrate/util.go create mode 100644 vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go create mode 100644 vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_wasm.go create mode 100644 vendor/github.com/onsi/ginkgo/v2/internal/progress_report_wasm.go create mode 100644 vendor/github.com/openshift/api/Dockerfile.rhel8 delete mode 100644 vendor/github.com/openshift/api/apiserver/v1/apiserver.openshift.io_apirequestcount.yaml delete mode 100644 vendor/github.com/openshift/api/apiserver/v1/stable.apirequestcount.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/apiserver/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/authorization/v1/0000_03_authorization-openshift_01_rolebindingrestriction.crd.yaml delete mode 100644 vendor/github.com/openshift/api/authorization/v1/stable.rolebindingrestriction.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/authorization/v1/zz_generated.featuregated-crd-manifests.yaml create mode 100644 vendor/github.com/openshift/api/cloudnetwork/.codegen.yaml delete mode 100644 vendor/github.com/openshift/api/cloudnetwork/v1/001-cloudprivateipconfig.crd.yaml delete mode 100644 vendor/github.com/openshift/api/cloudnetwork/v1/001-cloudprivateipconfig.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/cloudnetwork/v1/stable.cloudprivateipconfig.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/cloudnetwork/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_00_cluster-version-operator_01_clusteroperator.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_00_cluster-version-operator_01_clusterversion.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_03_config-operator_01_proxy.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_03_marketplace-operator_01_operatorhub.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_apiserver-CustomNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_apiserver-Default.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_apiserver-TechPreviewNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_authentication.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_build.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_console.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_dns-CustomNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_dns-Default.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_dns-TechPreviewNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_featuregate.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_image.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_imagecontentpolicy.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_imagedigestmirrorset.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_imagetagmirrorset.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_infrastructure-CustomNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_infrastructure-CustomNoUpgrade.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_infrastructure-Default.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_infrastructure-Default.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_infrastructure-TechPreviewNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_infrastructure-TechPreviewNoUpgrade.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_ingress.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_network.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_node.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_oauth.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_project.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/0000_10_config-operator_01_scheduler.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/custom.apiserver.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/custom.dns.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/custom.infrastructure.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/feature_gates.go delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.apiserver.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.authentication.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.build.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.clusteroperator.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.clusterversion.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.console.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.dns.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.featuregate.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.image.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.imagecontentpolicy.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.imagedigestmirrorset.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.imagetagmirrorset.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.infrastructure.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.ingress.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.network.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.node.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.oauth.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.operatorhub.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.project.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.proxy.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/stable.scheduler.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/techpreview.apiserver.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/techpreview.dns.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1/techpreview.infrastructure.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/config/v1/types_testreporting.go create mode 100644 vendor/github.com/openshift/api/config/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1alpha1/0000_10_config-operator_01_backup-TechPreviewNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1alpha1/0000_10_config-operator_01_insightsdatagather.crd.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1alpha1/techpreview.backup.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/config/v1alpha1/techpreview.insightsdatagather.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/config/v1alpha1/types_cluster_image_policy.go create mode 100644 vendor/github.com/openshift/api/config/v1alpha1/types_image_policy.go create mode 100644 vendor/github.com/openshift/api/config/v1alpha1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/00_consoleclidownload.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/00_consoleexternalloglink.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/00_consolelink.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/00_consolenotification.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/00_consolequickstart.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/00_consolesample.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/00_consoleyamlsample.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/90_consoleplugin.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consoleclidownload.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consoleexternalloglink.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consolelink.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consolenotification.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consoleplugin.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consolequickstart.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consolesample.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1/stable.consoleyamlsample.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/console/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1alpha1/90_consoleplugin.crd.yaml delete mode 100644 vendor/github.com/openshift/api/console/v1alpha1/stable.consoleplugin.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/console/v1alpha1/zz_generated.featuregated-crd-manifests.yaml create mode 100644 vendor/github.com/openshift/api/features.md delete mode 100644 vendor/github.com/openshift/api/helm/v1beta1/0000_10-helm-chart-repository.crd.yaml delete mode 100644 vendor/github.com/openshift/api/helm/v1beta1/0000_10-project-helm-chart-repository.crd.yaml delete mode 100644 vendor/github.com/openshift/api/helm/v1beta1/stable.helmchartrepository.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/helm/v1beta1/stable.projecthelmchartrepository.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/helm/v1beta1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/imageregistry/v1/00_imageregistry.crd.yaml delete mode 100644 vendor/github.com/openshift/api/imageregistry/v1/00_imageregistry.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/imageregistry/v1/01_imagepruner.crd.yaml delete mode 100644 vendor/github.com/openshift/api/imageregistry/v1/stable.config.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/imageregistry/v1/stable.imagepruner.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/imageregistry/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1/0000_10_controlplanemachineset.crd.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1/stable.controlplanemachineset.aws.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1/stable.controlplanemachineset.azure.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1/stable.controlplanemachineset.gcp.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1/stable.controlplanemachineset.openstack.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1/stable.controlplanemachineset.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/machine/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1beta1/0000_10_machine.crd.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1beta1/0000_10_machinehealthcheck.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1beta1/0000_10_machineset.crd.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1beta1/stable.machine.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1beta1/stable.machinehealthcheck.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/machine/v1beta1/stable.machineset.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/machine/v1beta1/zz_generated.featuregated-crd-manifests.yaml rename vendor/github.com/openshift/api/monitoring/{v1alpha1 => v1}/Makefile (78%) rename vendor/github.com/openshift/api/monitoring/{v1alpha1 => v1}/doc.go (88%) rename vendor/github.com/openshift/api/monitoring/{v1alpha1 => v1}/register.go (97%) rename vendor/github.com/openshift/api/monitoring/{v1alpha1 => v1}/types.go (65%) rename vendor/github.com/openshift/api/monitoring/{v1alpha1 => v1}/zz_generated.deepcopy.go (98%) create mode 100644 vendor/github.com/openshift/api/monitoring/v1/zz_generated.featuregated-crd-manifests.yaml rename vendor/github.com/openshift/api/monitoring/{v1alpha1 => v1}/zz_generated.swagger_doc_generated.go (76%) delete mode 100644 vendor/github.com/openshift/api/monitoring/v1alpha1/0000_50_monitoring_01_alertingrules.crd.yaml delete mode 100644 vendor/github.com/openshift/api/monitoring/v1alpha1/0000_50_monitoring_02_alertrelabelconfigs.crd.yaml delete mode 100644 vendor/github.com/openshift/api/monitoring/v1alpha1/techpreview.alertingrule.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/monitoring/v1alpha1/techpreview.alertrelabelconfig.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/network/.codegen.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/001-clusternetwork-crd.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/002-hostsubnet-crd.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/003-netnamespace-crd.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/004-egressnetworkpolicy-crd.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/stable.clusternetwork.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/stable.egressnetworkpolicy.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/stable.hostsubnet.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/network/v1/stable.netnamespace.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/network/v1/zz_generated.featuregated-crd-manifests.yaml create mode 100644 vendor/github.com/openshift/api/network/v1alpha1/Makefile create mode 100644 vendor/github.com/openshift/api/network/v1alpha1/doc.go create mode 100644 vendor/github.com/openshift/api/network/v1alpha1/register.go create mode 100644 vendor/github.com/openshift/api/network/v1alpha1/types_dnsnameresolver.go create mode 100644 vendor/github.com/openshift/api/network/v1alpha1/zz_generated.deepcopy.go create mode 100644 vendor/github.com/openshift/api/network/v1alpha1/zz_generated.featuregated-crd-manifests.yaml create mode 100644 vendor/github.com/openshift/api/network/v1alpha1/zz_generated.swagger_doc_generated.go delete mode 100644 vendor/github.com/openshift/api/networkoperator/v1/001-egressrouter.crd.yaml delete mode 100644 vendor/github.com/openshift/api/networkoperator/v1/001-egressrouter.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/networkoperator/v1/stable.egressrouter.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/networkoperator/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_10_config-operator_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_12_etcd-operator_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_20_kube-apiserver-operator_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_20_kube-apiserver-operator_01_config.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_25_kube-controller-manager-operator_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_25_kube-controller-manager-operator_01_config.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_25_kube-scheduler-operator_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_25_kube-scheduler-operator_01_config.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_30_openshift-apiserver-operator_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_40_cloud-credential-operator_00_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_40_kube-storage-version-migrator-operator_00_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_50_cluster-authentication-operator_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_50_cluster-openshift-controller-manager-operator_02_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_50_cluster_storage_operator_01_crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_50_ingress-operator_00-ingresscontroller.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_50_ingress-operator_00-ingresscontroller.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_50_insights-operator_00-insightsoperator.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_50_service-ca-operator_02_crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_70_cluster-network-operator_01.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_70_dns-operator_00.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_70_dns-operator_00.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_80_csi_snapshot_controller_operator_01_crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_90_cluster_csi_driver_01_config.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/0000_90_cluster_csi_driver_01_config.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/operator/v1/00_console-operator.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.authentication.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.cloudcredential.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.clustercsidriver.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.config.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.console.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.csisnapshotcontroller.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.dns.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.etcd.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.ingresscontroller.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.insightsoperator.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.kubeapiserver.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.kubecontrollermanager.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.kubescheduler.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.kubestorageversionmigrator.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.network.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.openshiftapiserver.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.openshiftcontrollermanager.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.serviceca.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1/stable.storage.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/operator/v1/types_machineconfiguration.go create mode 100644 vendor/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/0000_10_01_etcdbackup-TechPreviewNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/0000_10_config-operator_01_imagecontentsourcepolicy.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/0000_10_config-operator_01_olm-CustomNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/0000_10_config-operator_01_olm-TechPreviewNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/custom.olm.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/stable.imagecontentsourcepolicy.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/techpreview.etcdbackup.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/techpreview.olm.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/operator/v1alpha1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/operatorcontrolplane/v1alpha1/0000_10-pod-network-connectivity-check.crd.yaml delete mode 100644 vendor/github.com/openshift/api/operatorcontrolplane/v1alpha1/stable.podnetworkconnectivitycheck.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/operatorcontrolplane/v1alpha1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/quota/v1/0000_03_quota-openshift_01_clusterresourcequota.crd.yaml delete mode 100644 vendor/github.com/openshift/api/quota/v1/stable.clusterresourcequota.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/quota/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/route/v1/custom.route.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/route/v1/route-CustomNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/route/v1/route-TechPreviewNoUpgrade.crd.yaml delete mode 100644 vendor/github.com/openshift/api/route/v1/route.crd.yaml delete mode 100644 vendor/github.com/openshift/api/route/v1/route.crd.yaml-patch delete mode 100644 vendor/github.com/openshift/api/route/v1/stable.route.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/route/v1/techpreview.route.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/route/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/samples/v1/00_samplesconfig.crd.yaml delete mode 100644 vendor/github.com/openshift/api/samples/v1/stable.config.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/samples/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/security/v1/0000_03_security-openshift_01_scc.crd.yaml delete mode 100644 vendor/github.com/openshift/api/security/v1/stable.securitycontextconstraints.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/security/v1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/openshift/api/sharedresource/v1alpha1/0000_10_sharedconfigmap.crd.yaml delete mode 100644 vendor/github.com/openshift/api/sharedresource/v1alpha1/0000_10_sharedsecret.crd.yaml delete mode 100644 vendor/github.com/openshift/api/sharedresource/v1alpha1/stable.sharedconfigmap.testsuite.yaml delete mode 100644 vendor/github.com/openshift/api/sharedresource/v1alpha1/stable.sharedsecret.testsuite.yaml create mode 100644 vendor/github.com/openshift/api/sharedresource/v1alpha1/zz_generated.featuregated-crd-manifests.yaml delete mode 100644 vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go delete mode 100644 vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go create mode 100644 vendor/go.uber.org/zap/.golangci.yml delete mode 100644 vendor/go.uber.org/zap/array_go118.go rename vendor/go.uber.org/zap/{stacktrace.go => internal/stacktrace/stack.go} (75%) create mode 100644 vendor/go.uber.org/zap/zapcore/lazy_with.go create mode 100644 vendor/golang.org/x/net/websocket/client.go create mode 100644 vendor/golang.org/x/net/websocket/dial.go create mode 100644 vendor/golang.org/x/net/websocket/hybi.go create mode 100644 vendor/golang.org/x/net/websocket/server.go create mode 100644 vendor/golang.org/x/net/websocket/websocket.go delete mode 100644 vendor/golang.org/x/sys/execabs/execabs.go delete mode 100644 vendor/golang.org/x/sys/execabs/execabs_go118.go delete mode 100644 vendor/golang.org/x/sys/execabs/execabs_go119.go create mode 100644 vendor/golang.org/x/tools/cover/profile.go create mode 100644 vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go create mode 100644 vendor/golang.org/x/tools/go/gcexportdata/importer.go create mode 100644 vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go create mode 100644 vendor/golang.org/x/tools/go/packages/doc.go create mode 100644 vendor/golang.org/x/tools/go/packages/external.go create mode 100644 vendor/golang.org/x/tools/go/packages/golist.go create mode 100644 vendor/golang.org/x/tools/go/packages/golist_overlay.go create mode 100644 vendor/golang.org/x/tools/go/packages/loadmode_string.go create mode 100644 vendor/golang.org/x/tools/go/packages/packages.go create mode 100644 vendor/golang.org/x/tools/go/packages/visit.go create mode 100644 vendor/golang.org/x/tools/go/types/objectpath/objectpath.go create mode 100644 vendor/golang.org/x/tools/internal/event/keys/util.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_darwin.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_fileno.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_ino.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_bsd.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_linux.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_portable.go delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_unix.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/bimport.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/exportdata.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/iexport.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/iimport.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/newInterface10.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/newInterface11.go rename vendor/golang.org/x/tools/internal/{typeparams/enabled_go117.go => gcimporter/support_go117.go} (58%) create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/support_go118.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/unified_no.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/unified_yes.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/ureader_no.go create mode 100644 vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go create mode 100644 vendor/golang.org/x/tools/internal/packagesinternal/packages.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/codes.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/decoder.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/doc.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/encoder.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/flags.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/frames_go1.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/frames_go17.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/reloc.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/support.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/sync.go create mode 100644 vendor/golang.org/x/tools/internal/pkgbits/syncmarker_string.go create mode 100644 vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go create mode 100644 vendor/golang.org/x/tools/internal/typesinternal/errorcode.go create mode 100644 vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go create mode 100644 vendor/golang.org/x/tools/internal/typesinternal/types.go create mode 100644 vendor/golang.org/x/tools/internal/typesinternal/types_118.go create mode 100644 vendor/golang.org/x/tools/internal/versions/gover.go create mode 100644 vendor/golang.org/x/tools/internal/versions/types.go create mode 100644 vendor/golang.org/x/tools/internal/versions/types_go121.go create mode 100644 vendor/golang.org/x/tools/internal/versions/types_go122.go create mode 100644 vendor/golang.org/x/tools/internal/versions/versions.go delete mode 100644 vendor/google.golang.org/grpc/balancer_conn_wrappers.go create mode 100644 vendor/google.golang.org/grpc/balancer_wrapper.go delete mode 100644 vendor/google.golang.org/grpc/idle.go create mode 100644 vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/channel.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/channelmap.go delete mode 100644 vendor/google.golang.org/grpc/internal/channelz/id.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/server.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/socket.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/subchannel.go rename vendor/google.golang.org/grpc/internal/channelz/{types_linux.go => syscall_linux.go} (83%) rename vendor/google.golang.org/grpc/internal/channelz/{types_nonlinux.go => syscall_nonlinux.go} (90%) create mode 100644 vendor/google.golang.org/grpc/internal/channelz/trace.go delete mode 100644 vendor/google.golang.org/grpc/internal/channelz/types.go create mode 100644 vendor/google.golang.org/grpc/internal/experimental.go create mode 100644 vendor/google.golang.org/grpc/internal/grpcrand/grpcrand_go1.21.go create mode 100644 vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go create mode 100644 vendor/google.golang.org/grpc/internal/idle/idle.go create mode 100644 vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go rename vendor/google.golang.org/grpc/internal/{channelz/util_nonlinux.go => tcp_keepalive_others.go} (69%) create mode 100644 vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go create mode 100644 vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go delete mode 100644 vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go create mode 100644 vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go delete mode 100644 vendor/google.golang.org/grpc/resolver_conn_wrapper.go create mode 100644 vendor/google.golang.org/grpc/resolver_wrapper.go create mode 100644 vendor/google.golang.org/grpc/shared_buffer_pool.go create mode 100644 vendor/google.golang.org/grpc/trace_notrace.go rename vendor/google.golang.org/grpc/{internal/channelz/util_linux.go => trace_withtrace.go} (59%) create mode 100644 vendor/google.golang.org/protobuf/protoadapt/convert.go rename vendor/k8s.io/{component-base/config/v1alpha1 => api/apidiscovery/v2}/doc.go (75%) create mode 100644 vendor/k8s.io/api/apidiscovery/v2/generated.pb.go create mode 100644 vendor/k8s.io/api/apidiscovery/v2/generated.proto create mode 100644 vendor/k8s.io/api/apidiscovery/v2/register.go create mode 100644 vendor/k8s.io/api/apidiscovery/v2/types.go create mode 100644 vendor/k8s.io/api/apidiscovery/v2/zz_generated.deepcopy.go rename vendor/k8s.io/api/flowcontrol/{v1alpha1 => v1}/doc.go (73%) rename vendor/k8s.io/api/flowcontrol/{v1alpha1 => v1}/generated.pb.go (91%) rename vendor/k8s.io/api/flowcontrol/{v1alpha1 => v1}/generated.proto (94%) rename vendor/k8s.io/api/flowcontrol/{v1alpha1 => v1}/register.go (95%) rename vendor/k8s.io/api/flowcontrol/{v1alpha1 => v1}/types.go (88%) rename vendor/k8s.io/api/flowcontrol/{v1alpha1 => v1}/types_swagger_doc_generated.go (95%) rename vendor/k8s.io/api/flowcontrol/{v1alpha1 => v1}/zz_generated.deepcopy.go (99%) delete mode 100644 vendor/k8s.io/api/flowcontrol/v1alpha1/zz_generated.prerelease-lifecycle.go create mode 100644 vendor/k8s.io/api/resource/v1alpha2/namedresources.go create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/doc.go create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/generated.pb.go create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/generated.proto create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/register.go create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/types.go create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.prerelease-lifecycle.go create mode 100644 vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/selectablefield.go rename vendor/k8s.io/{client-go/applyconfigurations/policy/v1beta1/allowedflexvolume.go => apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/selectablefield.go} (51%) rename vendor/k8s.io/{component-base/config => apimachinery/pkg/api/validation}/OWNERS (84%) create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/wsstream/conn.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/wsstream/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/wsstream/stream.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/portforward/constants.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/proxy/dial.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/proxy/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/proxy/upgradeaware.go delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/ordered.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/OWNERS create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/auditannotation.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/expressionwarning.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchresources.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/namedrulewithoperations.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramkind.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramref.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/typechecking.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybinding.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybindingspec.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicyspec.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicystatus.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validation.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/variable.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicy.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicyrule.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/apparmorprofile.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/clustertrustbundleprojection.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/modifyvolumestatus.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandler.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandlerfeatures.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/sleepaction.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemountstatus.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeresourcerequirements.go rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/exemptprioritylevelconfiguration.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/flowdistinguishermethod.go (87%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/flowschema.go (94%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/flowschemacondition.go (81%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/flowschemaspec.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/flowschemastatus.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/groupsubject.go (98%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/limitedprioritylevelconfiguration.go (90%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/limitresponse.go (88%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/nonresourcepolicyrule.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/policyruleswithsubjects.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/prioritylevelconfiguration.go (94%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/prioritylevelconfigurationcondition.go (81%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/prioritylevelconfigurationreference.go (98%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/prioritylevelconfigurationspec.go (92%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/prioritylevelconfigurationstatus.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/queuingconfiguration.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/resourcepolicyrule.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/serviceaccountsubject.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/subject.go (92%) rename vendor/k8s.io/client-go/applyconfigurations/flowcontrol/{v1alpha1 => v1}/usersubject.go (98%) delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/clustercidrspec.go rename vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/{clustercidr.go => servicecidr.go} (68%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrspec.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrstatus.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/allowedhostpath.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/fsgroupstrategyoptions.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/hostportrange.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/idrange.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/podsecuritypolicyspec.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/runasgroupstrategyoptions.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/runasuserstrategyoptions.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/runtimeclassstrategyoptions.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/selinuxstrategyoptions.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/supplementalgroupsstrategyoptions.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/allocationresultmodel.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/driverallocationresult.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/driverrequests.go rename vendor/k8s.io/client-go/applyconfigurations/{policy/v1beta1/allowedcsidriver.go => resource/v1alpha2/namedresourcesallocationresult.go} (60%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesattribute.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesattributevalue.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesfilter.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesinstance.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesintslice.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesrequest.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesresources.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/namedresourcesstringslice.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimparameters.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclassparameters.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcefilter.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcefiltermodel.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcemodel.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcerequest.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcerequestmodel.go rename vendor/k8s.io/client-go/applyconfigurations/{policy/v1beta1/podsecuritypolicy.go => resource/v1alpha2/resourceslice.go} (61%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/structuredresourcehandle.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/vendorparameters.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattributesclass.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/groupversionresource.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/migrationcondition.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigration.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationspec.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationstatus.go create mode 100644 vendor/k8s.io/client-go/features/envvar.go create mode 100644 vendor/k8s.io/client-go/features/features.go create mode 100644 vendor/k8s.io/client-go/features/known_features.go create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicybinding.go rename vendor/k8s.io/client-go/informers/flowcontrol/{v1alpha1 => v1}/flowschema.go (78%) rename vendor/k8s.io/client-go/informers/flowcontrol/{v1alpha1 => v1}/interface.go (99%) rename vendor/k8s.io/client-go/informers/flowcontrol/{v1alpha1 => v1}/prioritylevelconfiguration.go (76%) rename vendor/k8s.io/client-go/informers/networking/v1alpha1/{clustercidr.go => servicecidr.go} (69%) create mode 100644 vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclaimparameters.go create mode 100644 vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclassparameters.go rename vendor/k8s.io/client-go/informers/{policy/v1beta1/podsecuritypolicy.go => resource/v1alpha2/resourceslice.go} (51%) create mode 100644 vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattributesclass.go create mode 100644 vendor/k8s.io/client-go/informers/storagemigration/interface.go create mode 100644 vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/storageversionmigration.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicybinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicybinding.go rename vendor/{sigs.k8s.io/controller-runtime/pkg/config => k8s.io/client-go/kubernetes/typed/flowcontrol/v1}/doc.go (76%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/fake/doc.go (100%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/fake/fake_flowcontrol_client.go (72%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/fake/fake_flowschema.go (67%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/fake/fake_prioritylevelconfiguration.go (64%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/flowcontrol_client.go (64%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/flowschema.go (69%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/generated_expansion.go (97%) rename vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/{v1alpha1 => v1}/prioritylevelconfiguration.go (69%) delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/clustercidr.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_clustercidr.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_servicecidr.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/servicecidr.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_podsecuritypolicy.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/podsecuritypolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclaimparameters.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclassparameters.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceslice.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclaimparameters.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclassparameters.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceslice.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattributesclass.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattributesclass.go rename vendor/k8s.io/client-go/kubernetes/typed/{flowcontrol => storagemigration}/v1alpha1/doc.go (100%) rename vendor/k8s.io/{component-base/config => client-go/kubernetes/typed/storagemigration/v1alpha1/fake}/doc.go (78%) create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storagemigration_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storageversionmigration.go rename vendor/k8s.io/{gengo/examples/set-gen/sets/doc.go => client-go/kubernetes/typed/storagemigration/v1alpha1/generated_expansion.go} (83%) create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storagemigration_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storageversionmigration.go create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicybinding.go rename vendor/k8s.io/client-go/listers/flowcontrol/{v1alpha1 => v1}/expansion_generated.go (98%) rename vendor/k8s.io/client-go/listers/flowcontrol/{v1alpha1 => v1}/flowschema.go (79%) rename vendor/k8s.io/client-go/listers/flowcontrol/{v1alpha1 => v1}/prioritylevelconfiguration.go (79%) rename vendor/k8s.io/client-go/listers/networking/v1alpha1/{clustercidr.go => servicecidr.go} (54%) delete mode 100644 vendor/k8s.io/client-go/listers/policy/v1beta1/podsecuritypolicy.go create mode 100644 vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclaimparameters.go create mode 100644 vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclassparameters.go create mode 100644 vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceslice.go create mode 100644 vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattributesclass.go rename vendor/k8s.io/{gengo/examples/set-gen/sets/empty.go => client-go/listers/storagemigration/v1alpha1/expansion_generated.go} (68%) create mode 100644 vendor/k8s.io/client-go/listers/storagemigration/v1alpha1/storageversionmigration.go create mode 100644 vendor/k8s.io/client-go/tools/cache/reflector_data_consistency_detector.go create mode 100644 vendor/k8s.io/client-go/tools/internal/events/interfaces.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/OWNERS create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/fallback.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/spdy.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/v5.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/websocket.go create mode 100644 vendor/k8s.io/client-go/transport/websocket/roundtripper.go rename vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/{packages.go => targets.go} (64%) rename vendor/k8s.io/{gengo/examples => code-generator/cmd}/deepcopy-gen/generators/deepcopy.go (86%) rename vendor/k8s.io/{gengo/examples => code-generator/cmd}/defaulter-gen/generators/defaulter.go (87%) delete mode 100644 vendor/k8s.io/code-generator/cmd/import-boss/.gitignore delete mode 100644 vendor/k8s.io/code-generator/cmd/import-boss/README.md delete mode 100644 vendor/k8s.io/code-generator/cmd/import-boss/main.go rename vendor/k8s.io/code-generator/cmd/informer-gen/generators/{packages.go => targets.go} (56%) delete mode 100644 vendor/k8s.io/code-generator/cmd/openapi-gen/main.go rename vendor/k8s.io/code-generator/cmd/register-gen/generators/{packages.go => targets.go} (73%) delete mode 100644 vendor/k8s.io/code-generator/cmd/set-gen/.gitignore delete mode 100644 vendor/k8s.io/code-generator/cmd/set-gen/main.go delete mode 100644 vendor/k8s.io/code-generator/pkg/util/build.go delete mode 100644 vendor/k8s.io/component-base/config/types.go delete mode 100644 vendor/k8s.io/component-base/config/v1alpha1/conversion.go delete mode 100644 vendor/k8s.io/component-base/config/v1alpha1/defaults.go delete mode 100644 vendor/k8s.io/component-base/config/v1alpha1/register.go delete mode 100644 vendor/k8s.io/component-base/config/v1alpha1/types.go delete mode 100644 vendor/k8s.io/component-base/config/v1alpha1/zz_generated.conversion.go delete mode 100644 vendor/k8s.io/component-base/config/v1alpha1/zz_generated.deepcopy.go delete mode 100644 vendor/k8s.io/component-base/config/zz_generated.deepcopy.go delete mode 100644 vendor/k8s.io/gengo/args/args.go delete mode 100644 vendor/k8s.io/gengo/examples/import-boss/generators/import_restrict.go delete mode 100644 vendor/k8s.io/gengo/examples/set-gen/generators/sets.go delete mode 100644 vendor/k8s.io/gengo/examples/set-gen/sets/byte.go delete mode 100644 vendor/k8s.io/gengo/examples/set-gen/sets/int.go delete mode 100644 vendor/k8s.io/gengo/examples/set-gen/sets/int64.go delete mode 100644 vendor/k8s.io/gengo/examples/set-gen/sets/string.go delete mode 100644 vendor/k8s.io/gengo/generator/default_generator.go delete mode 100644 vendor/k8s.io/gengo/generator/default_package.go delete mode 100644 vendor/k8s.io/gengo/generator/transitive_closure.go delete mode 100644 vendor/k8s.io/gengo/parser/parse.go delete mode 100644 vendor/k8s.io/gengo/types/flatten.go rename vendor/k8s.io/gengo/{ => v2}/LICENSE (100%) create mode 100644 vendor/k8s.io/gengo/v2/README.md rename vendor/k8s.io/gengo/{types => v2}/comments.go (86%) create mode 100644 vendor/k8s.io/gengo/v2/execute.go rename vendor/k8s.io/gengo/{ => v2}/generator/doc.go (96%) rename vendor/k8s.io/gengo/{ => v2}/generator/error_tracker.go (100%) rename vendor/k8s.io/gengo/{ => v2}/generator/execute.go (54%) rename vendor/k8s.io/gengo/{ => v2}/generator/generator.go (63%) create mode 100644 vendor/k8s.io/gengo/v2/generator/go_generator.go rename vendor/k8s.io/gengo/{ => v2}/generator/import_tracker.go (88%) create mode 100644 vendor/k8s.io/gengo/v2/generator/simple_target.go rename vendor/k8s.io/gengo/{ => v2}/generator/snippet_writer.go (88%) rename vendor/k8s.io/gengo/{ => v2}/namer/doc.go (96%) rename vendor/k8s.io/gengo/{ => v2}/namer/import_tracker.go (98%) rename vendor/k8s.io/gengo/{ => v2}/namer/namer.go (99%) rename vendor/k8s.io/gengo/{ => v2}/namer/order.go (98%) rename vendor/k8s.io/gengo/{ => v2}/namer/plural_namer.go (99%) rename vendor/k8s.io/gengo/{ => v2}/parser/doc.go (92%) create mode 100644 vendor/k8s.io/gengo/v2/parser/parse.go rename vendor/k8s.io/gengo/{ => v2}/types/doc.go (93%) rename vendor/k8s.io/gengo/{ => v2}/types/types.go (98%) create mode 100644 vendor/k8s.io/klog/v2/.golangci.yaml create mode 100644 vendor/k8s.io/klog/v2/contextual_slog.go create mode 100644 vendor/k8s.io/klog/v2/internal/serialize/keyvalues_no_slog.go create mode 100644 vendor/k8s.io/klog/v2/internal/serialize/keyvalues_slog.go create mode 100644 vendor/k8s.io/klog/v2/internal/sloghandler/sloghandler_slog.go create mode 100644 vendor/k8s.io/klog/v2/k8s_references_slog.go create mode 100644 vendor/k8s.io/klog/v2/klogr_slog.go create mode 100644 vendor/k8s.io/klog/v2/safeptr.go delete mode 100644 vendor/k8s.io/kube-openapi/cmd/openapi-gen/args/args.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/README.md delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/api_linter.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/config.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/enum.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/extension.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/openapi.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/rules/OWNERS delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/rules/doc.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/rules/idl_tag.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/rules/names_match.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/rules/omitempty_match_case.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/generators/union.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/util/sets/empty.go delete mode 100644 vendor/k8s.io/kube-openapi/pkg/util/sets/string.go delete mode 100644 vendor/k8s.io/utils/integer/integer.go create mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/client/fieldowner.go delete mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/config/config.go delete mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1/doc.go delete mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1/register.go delete mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1/types.go delete mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1/zz_generated.deepcopy.go create mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/internal/syncs/syncs.go rename vendor/{k8s.io/gengo/examples/set-gen/generators/tags.go => sigs.k8s.io/controller-runtime/pkg/internal/testing/process/procattr_other.go} (57%) rename vendor/{k8s.io/code-generator/cmd/client-gen/path/path.go => sigs.k8s.io/controller-runtime/pkg/internal/testing/process/procattr_unix.go} (50%) create mode 100644 vendor/sigs.k8s.io/structured-merge-diff/v4/typed/compare.go delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/v4/typed/union.go diff --git a/api/v1/zz_generated.deepcopy.go b/api/v1/zz_generated.deepcopy.go index 9ffb982b89..fc94775939 100644 --- a/api/v1/zz_generated.deepcopy.go +++ b/api/v1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2021. diff --git a/config/crd/bases/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml b/config/crd/bases/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml index 2cb2ece319..da3465127b 100644 --- a/config/crd/bases/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml +++ b/config/crd/bases/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml @@ -83,11 +83,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string diff --git a/controllers/sriovnetworknodepolicy_controller.go b/controllers/sriovnetworknodepolicy_controller.go index a275beb5d7..1115b1bd3c 100644 --- a/controllers/sriovnetworknodepolicy_controller.go +++ b/controllers/sriovnetworknodepolicy_controller.go @@ -196,7 +196,7 @@ func (r *SriovNetworkNodePolicyReconciler) SetupWithManager(mgr ctrl.Manager) er For(&sriovnetworkv1.SriovNetworkNodePolicy{}). Watches(&corev1.Node{}, nodeEvenHandler). Watches(&sriovnetworkv1.SriovNetworkNodePolicy{}, delayedEventHandler). - WatchesRawSource(&source.Channel{Source: eventChan}, delayedEventHandler). + WatchesRawSource(source.Channel(eventChan, &handler.EnqueueRequestForObject{})). Complete(r) } diff --git a/controllers/suite_test.go b/controllers/suite_test.go index b830e2fc29..57a3616a44 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -20,6 +20,7 @@ import ( "context" "os" "path/filepath" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" "testing" "time" @@ -62,7 +63,8 @@ const testNamespace = "openshift-sriov-network-operator" func setupK8sManagerForTest() (manager.Manager, error) { k8sManager, err := ctrl.NewManager(cfg, ctrl.Options{ - Scheme: scheme.Scheme, + Scheme: scheme.Scheme, + Metrics: server.Options{BindAddress: "0"}, // we don't need metrics server for tests }) if err != nil { diff --git a/deployment/sriov-network-operator-chart/crds/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml b/deployment/sriov-network-operator-chart/crds/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml index 2cb2ece319..da3465127b 100644 --- a/deployment/sriov-network-operator-chart/crds/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml +++ b/deployment/sriov-network-operator-chart/crds/sriovnetwork.openshift.io_sriovnetworkpoolconfigs.yaml @@ -83,11 +83,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string diff --git a/go.mod b/go.mod index 2dc49afe98..0c1e6b6153 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/k8snetworkplumbingwg/sriov-network-operator -go 1.22 +go 1.22.0 + +toolchain go1.22.4 require ( github.com/Masterminds/sprig/v3 v3.2.2 @@ -8,39 +10,39 @@ require ( github.com/cenkalti/backoff v2.2.1+incompatible github.com/coreos/go-systemd/v22 v22.5.0 github.com/fsnotify/fsnotify v1.7.0 - github.com/go-logr/logr v1.2.4 + github.com/go-logr/logr v1.4.1 github.com/golang/mock v1.4.4 github.com/google/go-cmp v0.6.0 github.com/hashicorp/go-retryablehttp v0.7.7 - github.com/jaypipes/ghw v0.9.0 + github.com/jaypipes/ghw v0.12.0 github.com/jaypipes/pcidb v1.0.0 - github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.4.0 + github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.6.0 github.com/k8snetworkplumbingwg/sriov-network-device-plugin v0.0.0-20221127172732-a5a7395122e3 - github.com/k8snetworkplumbingwg/sriovnet v1.2.0 - github.com/onsi/ginkgo/v2 v2.11.0 - github.com/onsi/gomega v1.27.10 + github.com/k8snetworkplumbingwg/sriovnet v1.2.1-0.20240128120937-3ca5e43034e6 + github.com/onsi/ginkgo/v2 v2.17.1 + github.com/onsi/gomega v1.32.0 github.com/openshift-kni/k8sreporter v1.0.4 - github.com/openshift/api v0.0.0-20230807132801-600991d550ac + github.com/openshift/api v0.0.0-20240508125607-95e22923d553 github.com/openshift/client-go v0.0.0-20230607134213-3cd0021bbee3 github.com/openshift/machine-config-operator v0.0.1-0.20231024085435-7e1fb719c1ba github.com/pkg/errors v0.9.1 github.com/safchain/ethtool v0.3.0 github.com/spf13/cobra v1.7.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/vishvananda/netlink v1.2.1-beta.2.0.20240221172127-ec7bcb248e94 github.com/vishvananda/netns v0.0.4 - go.uber.org/zap v1.25.0 + go.uber.org/zap v1.26.0 golang.org/x/time v0.3.0 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.28.3 - k8s.io/apiextensions-apiserver v0.28.3 - k8s.io/apimachinery v0.28.3 - k8s.io/client-go v0.28.3 - k8s.io/code-generator v0.28.3 - k8s.io/klog/v2 v2.100.1 - k8s.io/kubectl v0.28.3 + k8s.io/api v0.30.2 + k8s.io/apiextensions-apiserver v0.30.2 + k8s.io/apimachinery v0.30.2 + k8s.io/client-go v0.30.2 + k8s.io/code-generator v0.30.2 + k8s.io/klog/v2 v2.120.1 + k8s.io/kubectl v0.30.2 k8s.io/utils v0.0.0-20230726121419-3b25d923346b - sigs.k8s.io/controller-runtime v0.16.3 + sigs.k8s.io/controller-runtime v0.18.4 ) require ( @@ -48,7 +50,7 @@ require ( github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.1.1 // indirect - github.com/Mellanox/sriovnet v1.0.3 // indirect + github.com/Mellanox/rdmamap v1.1.0 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/ajeddeloh/go-json v0.0.0-20200220154158-5ae607161559 // indirect github.com/aws/aws-sdk-go v1.44.204 // indirect @@ -68,27 +70,28 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.7.0 // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect github.com/frankban/quicktest v1.14.4 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect github.com/go-errors/errors v1.4.2 // indirect - github.com/go-logr/zapr v1.2.4 // indirect + github.com/go-logr/zapr v1.3.0 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/jsonpointer v0.20.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.4 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.0 // indirect + github.com/golang/glog v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.0 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/huandu/xstrings v1.3.2 // indirect @@ -110,6 +113,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/openshift/library-go v0.0.0-20231020125025-211b32f1a1f2 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -120,10 +124,10 @@ require ( github.com/robfig/cron v1.2.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect - github.com/spf13/afero v1.9.4 // indirect + github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/vincent-petithory/dataurl v1.0.0 // indirect github.com/xlab/treeprint v1.2.0 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect @@ -131,35 +135,37 @@ require ( go4.org v0.0.0-20200104003542-c7e774b10ea0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/mod v0.13.0 // indirect + golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.23.0 // indirect - golang.org/x/oauth2 v0.13.0 // indirect - golang.org/x/sync v0.4.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect + golang.org/x/sync v0.6.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.14.0 // indirect + golang.org/x/tools v0.18.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect - google.golang.org/grpc v1.56.3 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/grpc v1.63.0 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect howett.net/plist v1.0.0 // indirect - k8s.io/apiserver v0.28.3 // indirect - k8s.io/cli-runtime v0.28.3 // indirect - k8s.io/component-base v0.28.3 // indirect - k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect + k8s.io/apiserver v0.30.2 // indirect + k8s.io/cli-runtime v0.30.2 // indirect + k8s.io/component-base v0.30.2 // indirect + k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 // indirect k8s.io/kube-aggregator v0.27.4 // indirect - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect - k8s.io/kubelet v0.27.7 // indirect + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect + k8s.io/kubelet v0.29.3 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 // indirect sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) replace github.com/emicklei/go-restful => github.com/emicklei/go-restful v2.16.0+incompatible + +replace github.com/k8snetworkplumbingwg/sriov-network-device-plugin => github.com/SchSeba/sriov-network-device-plugin v0.0.0-20240626111634-92cb855fbc29 diff --git a/go.sum b/go.sum index 32cba669d8..22fe658928 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,10 @@ github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030I github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= -github.com/Mellanox/sriovnet v1.0.3 h1:Nlmxr2mkp16aIP4CJcsnqCczxQQgOuzNDm/nu9qTBZ8= -github.com/Mellanox/sriovnet v1.0.3/go.mod h1:8TlYc3iOTEvUM+WAbC7MU6U6JXqIfhl2DcWIGVUsjIE= +github.com/Mellanox/rdmamap v1.1.0 h1:A/W1wAXw+6vm58f3VklrIylgV+eDJlPVIMaIKuxgUT4= +github.com/Mellanox/rdmamap v1.1.0/go.mod h1:fN+/V9lf10ABnDCwTaXRjeeWijLt2iVLETnK+sx/LY8= +github.com/SchSeba/sriov-network-device-plugin v0.0.0-20240626111634-92cb855fbc29 h1:2CPV3pCDxkPZQokS3HXEuQpY3gVutSZrJWszjm/31BY= +github.com/SchSeba/sriov-network-device-plugin v0.0.0-20240626111634-92cb855fbc29/go.mod h1:mvTdwqCgsw/xGQ49ojmu61tIBLqrvOT/R0+GOCXAvys= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/ajeddeloh/go-json v0.0.0-20170920214419-6a2fe990e083/go.mod h1:otnto4/Icqn88WCcM4bhIJNSgsh9VLBuspyyCfvof9c= @@ -62,9 +64,6 @@ github.com/ashcrow/osrelease v0.0.0-20180626175927-9b292693c55c/go.mod h1:BRljTy github.com/aws/aws-sdk-go v1.19.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.44.204 h1:7/tPUXfNOHB390A63t6fJIwmlwVQAkAwcbzKsU2/6OQ= github.com/aws/aws-sdk-go v1.44.204/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= @@ -129,8 +128,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= -github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= +github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= @@ -139,7 +138,6 @@ github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0X github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew= github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -147,12 +145,10 @@ github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3Bop github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-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.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.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= -github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -171,8 +167,8 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x 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/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= 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= @@ -202,8 +198,8 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= @@ -224,7 +220,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -247,13 +242,15 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaU github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= @@ -272,11 +269,10 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1: github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jaypipes/ghw v0.9.0 h1:TWF4wNIGtZcgDJaiNcFgby5BR8s2ixcUe0ydxNO2McY= -github.com/jaypipes/ghw v0.9.0/go.mod h1:dXMo19735vXOjpIBDyDYSp31sB2u4hrtRCMxInqQ64k= +github.com/jaypipes/ghw v0.12.0 h1:xU2/MDJfWmBhJnujHY9qwXQLs3DBsf0/Xa9vECY0Tho= +github.com/jaypipes/ghw v0.12.0/go.mod h1:jeJGbkRB2lL3/gxYzNYzEDETV1ZJ56OKr+CSeSEym+g= github.com/jaypipes/pcidb v1.0.0 h1:vtZIfkiCUE42oYbJS0TAq9XSfSmcsgo9IdxSm9qzYU8= github.com/jaypipes/pcidb v1.0.0/go.mod h1:TnYUvqhPBzCKnH34KrIX22kAeEbDCSRJ9cqLRCuNDfk= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -292,17 +288,14 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/k8snetworkplumbingwg/govdpa v0.1.4 h1:e6mM7JFZkLVJeMQw3px96EigHAhnb4VUlqhNub/2Psk= github.com/k8snetworkplumbingwg/govdpa v0.1.4/go.mod h1:UQR1xu7A+nnRK1dkLEi12OnNL0OiBPpIKOYDuaQQkck= -github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.4.0 h1:VzM3TYHDgqPkettiP6I6q2jOeQFL4nrJM+UcAc4f6Fs= -github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.4.0/go.mod h1:nqCI7aelBJU61wiBeeZWJ6oi4bJy5nrjkM6lWIMA4j0= -github.com/k8snetworkplumbingwg/sriov-network-device-plugin v0.0.0-20221127172732-a5a7395122e3 h1:hIHzF4vNTCFb9UMngrcJAMvdNslCekaSvNbfQt21CUw= -github.com/k8snetworkplumbingwg/sriov-network-device-plugin v0.0.0-20221127172732-a5a7395122e3/go.mod h1:b0YSmUuNOy6CkEmV27XfmZ3a7njs2pjxHoFAvfLbUII= -github.com/k8snetworkplumbingwg/sriovnet v1.2.0 h1:6ELfAxCB1dvosGUy3DVRmfH+HWTzmPD3W67HKQvMR1M= -github.com/k8snetworkplumbingwg/sriovnet v1.2.0/go.mod h1:jyWzGe6ZtYiPq6ih6aXCOy6mZ49Y9mNyBOLBBXnli+k= +github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.6.0 h1:BT3ghAY0q7lWib9rz+tVXDFkm27dJV6SLCn7TunZwo4= +github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.6.0/go.mod h1:wxt2YWRVItDtaQmVSmaN5ubE2L1c9CiNoHQwSJnM8Ko= +github.com/k8snetworkplumbingwg/sriovnet v1.2.1-0.20240128120937-3ca5e43034e6 h1:Ho6fhRwqgow7ytMgQ1/55j1gG5AbkxIYRbAhJnXr/MM= +github.com/k8snetworkplumbingwg/sriovnet v1.2.1-0.20240128120937-3ca5e43034e6/go.mod h1:LuzcqxxXdSgopWe1yo2kQFSgFTz9Ec5qLu6bb0s5Ut4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -323,7 +316,6 @@ github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQth github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -344,18 +336,20 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= 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 v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8= +github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= +github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= github.com/openshift-kni/k8sreporter v1.0.4 h1:jEwX6Pqei60kO1U0JLo+ePjQaP7DNn/M6d63KCS2tS0= github.com/openshift-kni/k8sreporter v1.0.4/go.mod h1:fg8HI9yxiKAi6UzR6NTtrmQmA2WKzUqmkRUHwQ1+Bj8= -github.com/openshift/api v0.0.0-20230807132801-600991d550ac h1:HqT8MmYGXiUGUW0BjygTGOOvqO2wIsTaG3q8nboJyPY= -github.com/openshift/api v0.0.0-20230807132801-600991d550ac/go.mod h1:yimSGmjsI+XF1mr+AKBs2//fSXIOhhetHGbMlBEfXbs= +github.com/openshift/api v0.0.0-20240508125607-95e22923d553 h1:xMTwK9/Co/HyzXkNQLDcHRBgrTdL52/bgNHyDS+YY94= +github.com/openshift/api v0.0.0-20240508125607-95e22923d553/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4= github.com/openshift/client-go v0.0.0-20230607134213-3cd0021bbee3 h1:uVCq/Sx2y4UZh+qCsCL1BBUJpc3DULHkN4j7XHHgHtw= github.com/openshift/client-go v0.0.0-20230607134213-3cd0021bbee3/go.mod h1:M+VUIcqx5IvgzejcbgmQnxETPrXRYlcufHpw2bAgz9Y= github.com/openshift/library-go v0.0.0-20231020125025-211b32f1a1f2 h1:TWG/YVRhSvjYq8iIwJ2Wpoopgg0zuh+ZAl1RSm4J8Z0= @@ -366,10 +360,8 @@ github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+v github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pin/tftp v2.1.0+incompatible/go.mod h1:xVpZOMCXTy+A5QMjEVN0Glwa1sUvaJhFXbr/aAxuxGY= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -398,23 +390,21 @@ github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXY github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= -github.com/spf13/afero v1.4.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.4 h1:Sd43wM1IWz/s1aVXdOBkjJvuP8UdyqioeE4AmM0QsBs= -github.com/spf13/afero v1.9.4/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace h1:9PNP1jnUjRhfmGMlkXHjYPishpcw4jpSt/V/xYY3FMA= github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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= @@ -424,14 +414,15 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/vincent-petithory/dataurl v0.0.0-20160330182126-9a301d65acbb/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8AbShPRpg2CI= github.com/vincent-petithory/dataurl v1.0.0/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= -github.com/vishvananda/netlink v1.1.1-0.20210518155637-4cb3795f2ccb/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netlink v1.2.1-beta.2.0.20240221172127-ec7bcb248e94 h1:EO+D8nUD4bAhHHcJUSvH+8puZrDrcjc50tePSevGQrw= github.com/vishvananda/netlink v1.2.1-beta.2.0.20240221172127-ec7bcb248e94/go.mod h1:whJevzBpTrid75eZy99s3DqCmy05NfibNaF2Ol5Ox5A= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= @@ -443,7 +434,6 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -453,28 +443,23 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= -go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= go4.org v0.0.0-20200104003542-c7e774b10ea0 h1:M6XsnQeLwG+rHQ+/rrGh3puBI3WZEy9TBWmf2H+enQA= go4.org v0.0.0-20200104003542-c7e774b10ea0/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= 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.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -512,10 +497,9 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -548,7 +532,7 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= @@ -562,8 +546,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= -golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -574,10 +558,9 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -585,6 +568,7 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-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-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -605,7 +589,6 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -614,12 +597,10 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -640,6 +621,7 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -684,7 +666,6 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -700,10 +681,9 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= 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= @@ -774,8 +754,8 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= 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= @@ -792,8 +772,8 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= -google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= +google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= 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= @@ -838,42 +818,41 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= -k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM= -k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc= -k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08= -k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc= -k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= -k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= -k8s.io/apiserver v0.28.3 h1:8Ov47O1cMyeDzTXz0rwcfIIGAP/dP7L8rWbEljRcg5w= -k8s.io/apiserver v0.28.3/go.mod h1:YIpM+9wngNAv8Ctt0rHG4vQuX/I5rvkEMtZtsxW2rNM= -k8s.io/cli-runtime v0.28.3 h1:lvuJYVkwCqHEvpS6KuTZsUVwPePFjBfSGvuaLl2SxzA= -k8s.io/cli-runtime v0.28.3/go.mod h1:jeX37ZPjIcENVuXDDTskG3+FnVuZms5D9omDXS/2Jjc= -k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= -k8s.io/client-go v0.28.3/go.mod h1:LTykbBp9gsA7SwqirlCXBWtK0guzfhpoW4qSm7i9dxo= -k8s.io/code-generator v0.28.3 h1:I847QvdpYx7xKiG2KVQeCSyNF/xU9TowaDAg601mvlw= -k8s.io/code-generator v0.28.3/go.mod h1:A2EAHTRYvCvBrb/MM2zZBNipeCk3f8NtpdNIKawC43M= -k8s.io/component-base v0.28.3 h1:rDy68eHKxq/80RiMb2Ld/tbH8uAE75JdCqJyi6lXMzI= -k8s.io/component-base v0.28.3/go.mod h1:fDJ6vpVNSk6cRo5wmDa6eKIG7UlIQkaFmZN2fYgIUD8= -k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= -k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI= +k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI= +k8s.io/apiextensions-apiserver v0.30.2 h1:l7Eue2t6QiLHErfn2vwK4KgF4NeDgjQkCXtEbOocKIE= +k8s.io/apiextensions-apiserver v0.30.2/go.mod h1:lsJFLYyK40iguuinsb3nt+Sj6CmodSI4ACDLep1rgjw= +k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg= +k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/apiserver v0.30.2 h1:ACouHiYl1yFI2VFI3YGM+lvxgy6ir4yK2oLOsLI1/tw= +k8s.io/apiserver v0.30.2/go.mod h1:BOTdFBIch9Sv0ypSEcUR6ew/NUFGocRFNl72Ra7wTm8= +k8s.io/cli-runtime v0.30.2 h1:ooM40eEJusbgHNEqnHziN9ZpLN5U4WcQGsdLKVxpkKE= +k8s.io/cli-runtime v0.30.2/go.mod h1:Y4g/2XezFyTATQUbvV5WaChoUGhojv/jZAtdp5Zkm0A= +k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50= +k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs= +k8s.io/code-generator v0.30.2 h1:ZY1+aGkqZVwKIyGsOzquaeZ5rSfE6wZHur8z3jQAaiw= +k8s.io/code-generator v0.30.2/go.mod h1:RQP5L67QxqgkVquk704CyvWFIq0e6RCMmLTXxjE8dVA= +k8s.io/component-base v0.30.2 h1:pqGBczYoW1sno8q9ObExUqrYSKhtE5rW3y6gX88GZII= +k8s.io/component-base v0.30.2/go.mod h1:yQLkQDrkK8J6NtP+MGJOws+/PPeEXNpwFixsUI7h/OE= +k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 h1:NGrVE502P0s0/1hudf8zjgwki1X/TByhmAoILTarmzo= +k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-aggregator v0.27.4 h1:WdK9iiBr32G8bWfpUEFVQl70RZO2dU19ZAktUXL5JFc= k8s.io/kube-aggregator v0.27.4/go.mod h1:+eG83gkAyh0uilQEAOgheeQW4hr+PkyV+5O1nLGsjlM= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/kubectl v0.28.3 h1:H1Peu1O3EbN9zHkJCcvhiJ4NUj6lb88sGPO5wrWIM6k= -k8s.io/kubectl v0.28.3/go.mod h1:RDAudrth/2wQ3Sg46fbKKl4/g+XImzvbsSRZdP2RiyE= -k8s.io/kubelet v0.27.7 h1:DiptBLFbl6nyadTP9DUfhiReasBDV1qyE1r8h2o5mXc= -k8s.io/kubelet v0.27.7/go.mod h1:WKoEgiCa6/hzmgN4UgVioEwcpLC8wg+9Xzzc8fqOCYs= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= +k8s.io/kubectl v0.30.2 h1:cgKNIvsOiufgcs4yjvgkK0+aPCfa8pUwzXdJtkbhsH8= +k8s.io/kubectl v0.30.2/go.mod h1:rz7GHXaxwnigrqob0lJsiA07Df8RE3n1TSaC2CTeuB4= +k8s.io/kubelet v0.29.3 h1:X9h0ZHzc+eUeNTaksbN0ItHyvGhQ7Z0HPjnQD2oHdwU= +k8s.io/kubelet v0.29.3/go.mod h1:jDiGuTkFOUynyBKzOoC1xRSWlgAZ9UPcTYeFyjr6vas= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 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.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= -sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= +sigs.k8s.io/controller-runtime v0.18.4 h1:87+guW1zhvuPLh1PHybKdYFLU0YJp4FhJRmiHvm5BZw= +sigs.k8s.io/controller-runtime v0.18.4/go.mod h1:TVoGrfdpbA9VRFaRnKgk9P5/atA0pMwq+f+msb9M8Sg= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 h1:PFWFSkpArPNJxFX4ZKWAk9NSeRoZaXschn+ULa4xVek= @@ -882,8 +861,7 @@ sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKU sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3/go.mod h1:JWP1Fj0VWGHyw3YUPjXSQnRnrwezrZSrApfX5S0nIag= -sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= -sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pkg/drain/drainer.go b/pkg/drain/drainer.go index a3500dc47f..d05d253f0a 100644 --- a/pkg/drain/drainer.go +++ b/pkg/drain/drainer.go @@ -77,7 +77,7 @@ func (d *Drainer) DrainNode(ctx context.Context, node *corev1.Node, fullNodeDrai var lastErr error reqLogger.Info("drainNode(): Start draining") - if err = wait.ExponentialBackoff(backoff, func() (bool, error) { + if err = wait.ExponentialBackoffWithContext(ctx, backoff, func(ctx context.Context) (bool, error) { err := drain.RunCordonOrUncordon(drainHelper, node, true) if err != nil { lastErr = err @@ -143,7 +143,7 @@ func createDrainHelper(kubeClient kubernetes.Interface, ctx context.Context, ful DeleteEmptyDirData: true, GracePeriodSeconds: -1, Timeout: 90 * time.Second, - OnPodDeletedOrEvicted: func(pod *corev1.Pod, usingEviction bool) { + OnPodDeletionOrEvictionFinished: func(pod *corev1.Pod, usingEviction bool, err error) { verbStr := constants.DrainDeleted if usingEviction { verbStr = constants.DrainEvicted diff --git a/pkg/helper/mock/mock_helper.go b/pkg/helper/mock/mock_helper.go index 2b2ff4e338..34eebe8b8a 100644 --- a/pkg/helper/mock/mock_helper.go +++ b/pkg/helper/mock/mock_helper.go @@ -1127,6 +1127,20 @@ func (mr *MockHostHelpersInterfaceMockRecorder) TryEnableVhostNet() *gomock.Call return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TryEnableVhostNet", reflect.TypeOf((*MockHostHelpersInterface)(nil).TryEnableVhostNet)) } +// TryGetInterfaceIndex mocks base method. +func (m *MockHostHelpersInterface) TryGetInterfaceIndex(pciAddr string) int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TryGetInterfaceIndex", pciAddr) + ret0, _ := ret[0].(int) + return ret0 +} + +// TryGetInterfaceIndex indicates an expected call of TryGetInterfaceIndex. +func (mr *MockHostHelpersInterfaceMockRecorder) TryGetInterfaceIndex(pciAddr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TryGetInterfaceIndex", reflect.TypeOf((*MockHostHelpersInterface)(nil).TryGetInterfaceIndex), pciAddr) +} + // TryGetInterfaceName mocks base method. func (m *MockHostHelpersInterface) TryGetInterfaceName(pciAddr string) string { m.ctrl.T.Helper() diff --git a/pkg/host/internal/lib/dputils/dputils.go b/pkg/host/internal/lib/dputils/dputils.go index ef503a8517..c8e6071ff4 100644 --- a/pkg/host/internal/lib/dputils/dputils.go +++ b/pkg/host/internal/lib/dputils/dputils.go @@ -12,6 +12,8 @@ func New() DPUtilsLib { type DPUtilsLib interface { // GetNetNames returns host net interface names as string for a PCI device from its pci address GetNetNames(pciAddr string) ([]string, error) + // GetNetIndex returns host net interface index as int for a PCI device from its pci address + GetNetIndex(pciAddr string) (int, error) // GetDriverName returns current driver attached to a pci device from its pci address GetDriverName(pciAddr string) (string, error) // GetVFID returns VF ID index (within specific PF) based on PCI address @@ -37,6 +39,10 @@ func (w *libWrapper) GetNetNames(pciAddr string) ([]string, error) { return dputils.GetNetNames(pciAddr) } +func (w *libWrapper) GetNetIndex(pciAddr string) (int, error) { + return dputils.GetNetIndex(pciAddr) +} + // GetDriverName returns current driver attached to a pci device from its pci address func (w *libWrapper) GetDriverName(pciAddr string) (string, error) { return dputils.GetDriverName(pciAddr) diff --git a/pkg/host/internal/lib/dputils/mock/mock_dputils.go b/pkg/host/internal/lib/dputils/mock/mock_dputils.go index de32180f2a..de9cce9070 100644 --- a/pkg/host/internal/lib/dputils/mock/mock_dputils.go +++ b/pkg/host/internal/lib/dputils/mock/mock_dputils.go @@ -48,6 +48,21 @@ func (mr *MockDPUtilsLibMockRecorder) GetDriverName(pciAddr interface{}) *gomock return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDriverName", reflect.TypeOf((*MockDPUtilsLib)(nil).GetDriverName), pciAddr) } +// GetNetIndex mocks base method. +func (m *MockDPUtilsLib) GetNetIndex(pciAddr string) (int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetNetIndex", pciAddr) + ret0, _ := ret[0].(int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNetIndex indicates an expected call of GetNetIndex. +func (mr *MockDPUtilsLibMockRecorder) GetNetIndex(pciAddr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetIndex", reflect.TypeOf((*MockDPUtilsLib)(nil).GetNetIndex), pciAddr) +} + // GetNetNames mocks base method. func (m *MockDPUtilsLib) GetNetNames(pciAddr string) ([]string, error) { m.ctrl.T.Helper() diff --git a/pkg/host/internal/lib/netlink/mock/mock_netlink.go b/pkg/host/internal/lib/netlink/mock/mock_netlink.go index e3e7d649f0..367f57018a 100644 --- a/pkg/host/internal/lib/netlink/mock/mock_netlink.go +++ b/pkg/host/internal/lib/netlink/mock/mock_netlink.go @@ -159,6 +159,21 @@ func (mr *MockNetlinkLibMockRecorder) IsLinkAdminStateUp(link interface{}) *gomo return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsLinkAdminStateUp", reflect.TypeOf((*MockNetlinkLib)(nil).IsLinkAdminStateUp), link) } +// LinkByIndex mocks base method. +func (m *MockNetlinkLib) LinkByIndex(index int) (netlink.Link, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "LinkByIndex", index) + ret0, _ := ret[0].(netlink.Link) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// LinkByIndex indicates an expected call of LinkByIndex. +func (mr *MockNetlinkLibMockRecorder) LinkByIndex(index interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LinkByIndex", reflect.TypeOf((*MockNetlinkLib)(nil).LinkByIndex), index) +} + // LinkByName mocks base method. func (m *MockNetlinkLib) LinkByName(name string) (netlink.Link, error) { m.ctrl.T.Helper() diff --git a/pkg/host/internal/lib/netlink/netlink.go b/pkg/host/internal/lib/netlink/netlink.go index 95b620bba0..e53ee85bf9 100644 --- a/pkg/host/internal/lib/netlink/netlink.go +++ b/pkg/host/internal/lib/netlink/netlink.go @@ -24,6 +24,8 @@ type NetlinkLib interface { LinkSetVfPortGUID(link Link, vf int, portguid net.HardwareAddr) error // LinkByName finds a link by name and returns a pointer to the object. LinkByName(name string) (Link, error) + // LinkByName finds a link by index and returns a pointer to the object. + LinkByIndex(index int) (Link, error) // LinkSetVfHardwareAddr sets the hardware address of a vf for the link. // Equivalent to: `ip link set $link vf $vf mac $hwaddr` LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error @@ -79,11 +81,16 @@ func (w *libWrapper) LinkSetVfPortGUID(link Link, vf int, portguid net.HardwareA return netlink.LinkSetVfPortGUID(link, vf, portguid) } -// LinkByName finds a link by name and returns a pointer to the object.// LinkByName finds a link by name and returns a pointer to the object. +// LinkByName finds a link by name and returns a pointer to the object. func (w *libWrapper) LinkByName(name string) (Link, error) { return netlink.LinkByName(name) } +// LinkByIndex finds a link by index and returns a pointer to the object. +func (w *libWrapper) LinkByIndex(index int) (Link, error) { + return netlink.LinkByIndex(index) +} + // LinkSetVfHardwareAddr sets the hardware address of a vf for the link. // Equivalent to: `ip link set $link vf $vf mac $hwaddr` func (w *libWrapper) LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error { diff --git a/pkg/host/internal/network/network.go b/pkg/host/internal/network/network.go index 5c026f217a..681fef3d83 100644 --- a/pkg/host/internal/network/network.go +++ b/pkg/host/internal/network/network.go @@ -75,6 +75,7 @@ func (n *network) TryToGetVirtualInterfaceName(pciAddr string) string { func (n *network) TryGetInterfaceName(pciAddr string) string { names, err := n.dputilsLib.GetNetNames(pciAddr) if err != nil || len(names) < 1 { + log.Log.Error(err, "TryGetInterfaceName(): failed to get interface name") return "" } netDevName := names[0] @@ -95,10 +96,20 @@ func (n *network) TryGetInterfaceName(pciAddr string) string { return name } - log.Log.V(2).Info("tryGetInterfaceName()", "name", netDevName) + log.Log.V(2).Info("TryGetInterfaceName()", "name", netDevName) return netDevName } +// TryGetInterfaceName tries to find the SR-IOV virtual interface index base on pci address +func (n *network) TryGetInterfaceIndex(pciAddr string) int { + ifIndex, err := n.dputilsLib.GetNetIndex(pciAddr) + if err != nil { + log.Log.Error(err, "TryGetInterfaceIndex(): failed to get interface index") + return -1 + } + return ifIndex +} + func (n *network) GetPhysSwitchID(name string) (string, error) { swIDFile := filepath.Join(vars.FilesystemRoot, consts.SysClassNet, name, "phys_switch_id") physSwitchID, err := os.ReadFile(swIDFile) diff --git a/pkg/host/internal/sriov/sriov.go b/pkg/host/internal/sriov/sriov.go index d7f80fc277..1a825077fc 100644 --- a/pkg/host/internal/sriov/sriov.go +++ b/pkg/host/internal/sriov/sriov.go @@ -189,20 +189,13 @@ func (s *sriov) VFIsReady(pciAddr string) (netlink.Link, error) { var err error var vfLink netlink.Link err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) { - vfName := s.networkHelper.TryGetInterfaceName(pciAddr) - vfLink, err = s.netlinkLib.LinkByName(vfName) + vfIndex := s.networkHelper.TryGetInterfaceIndex(pciAddr) + vfLink, err = s.netlinkLib.LinkByIndex(vfIndex) if err != nil { log.Log.Error(err, "VFIsReady(): unable to get VF link", "device", pciAddr) return false, nil } - - // try to get the interface name again and check if the name changed - vfName = s.networkHelper.TryGetInterfaceName(pciAddr) - if vfName != vfLink.Attrs().Name { - log.Log.Error(err, "VFIsReady(): VF changed name for device", "device", pciAddr, "previewsName", vfLink.Attrs().Name, "currentName", vfName) - } - - return vfName == vfLink.Attrs().Name, nil + return true, nil }) if err != nil { return vfLink, err diff --git a/pkg/host/internal/sriov/sriov_test.go b/pkg/host/internal/sriov/sriov_test.go index 2521c016ef..e1da764d57 100644 --- a/pkg/host/internal/sriov/sriov_test.go +++ b/pkg/host/internal/sriov/sriov_test.go @@ -235,11 +235,11 @@ var _ = Describe("SRIOV", func() { hostMock.EXPECT().UnbindDriverIfNeeded("0000:d8:00.2", true).Return(nil) hostMock.EXPECT().BindDefaultDriver("0000:d8:00.2").Return(nil) hostMock.EXPECT().SetNetdevMTU("0000:d8:00.2", 2000).Return(nil) - hostMock.EXPECT().TryGetInterfaceName("0000:d8:00.2").Return("enp216s0f0_0").Times(2) + hostMock.EXPECT().TryGetInterfaceIndex("0000:d8:00.2").Return(42).Times(1) vf0LinkMock := netlinkMockPkg.NewMockLink(testCtrl) vf0Mac, _ := net.ParseMAC("02:42:19:51:2f:af") - vf0LinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{Name: "enp216s0f0_0", HardwareAddr: vf0Mac}).AnyTimes() - netlinkLibMock.EXPECT().LinkByName("enp216s0f0_0").Return(vf0LinkMock, nil) + vf0LinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{Name: "enp216s0f0_0", HardwareAddr: vf0Mac}) + netlinkLibMock.EXPECT().LinkByIndex(42).Return(vf0LinkMock, nil) netlinkLibMock.EXPECT().LinkSetVfHardwareAddr(vf0LinkMock, 0, vf0Mac).Return(nil) dputilsLibMock.EXPECT().GetVFID("0000:d8:00.3").Return(1, nil) @@ -359,11 +359,11 @@ var _ = Describe("SRIOV", func() { hostMock.EXPECT().UnbindDriverIfNeeded("0000:d8:00.2", true).Return(nil) hostMock.EXPECT().BindDefaultDriver("0000:d8:00.2").Return(nil) hostMock.EXPECT().SetNetdevMTU("0000:d8:00.2", 2000).Return(nil) - hostMock.EXPECT().TryGetInterfaceName("0000:d8:00.2").Return("enp216s0f0_0").AnyTimes() + hostMock.EXPECT().TryGetInterfaceIndex("0000:d8:00.2").Return(42) vf0LinkMock := netlinkMockPkg.NewMockLink(testCtrl) vf0Mac, _ := net.ParseMAC("02:42:19:51:2f:af") - vf0LinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{Name: "enp216s0f0_0", HardwareAddr: vf0Mac}).Times(3) - netlinkLibMock.EXPECT().LinkByName("enp216s0f0_0").Return(vf0LinkMock, nil).AnyTimes() + vf0LinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{Name: "enp216s0f0_0", HardwareAddr: vf0Mac}) + netlinkLibMock.EXPECT().LinkByIndex(42).Return(vf0LinkMock, nil).AnyTimes() netlinkLibMock.EXPECT().LinkSetVfHardwareAddr(vf0LinkMock, 0, vf0Mac).Return(nil) hostMock.EXPECT().GetPhysPortName("enp216s0f0np0").Return("p0", nil) hostMock.EXPECT().GetPhysSwitchID("enp216s0f0np0").Return("7cfe90ff2cc0", nil) @@ -539,17 +539,14 @@ var _ = Describe("SRIOV", func() { }) Context("VfIsReady", func() { - It("Should retry if the interface name change", func() { - hostMock.EXPECT().TryGetInterfaceName("0000:d8:00.2").Return("eth0").Times(1) - hostMock.EXPECT().TryGetInterfaceName("0000:d8:00.2").Return("enp216s0f0_0").Times(3) + It("Should retry if interface index is -1", func() { + hostMock.EXPECT().TryGetInterfaceIndex("0000:d8:00.2").Return(-1).Times(1) + hostMock.EXPECT().TryGetInterfaceIndex("0000:d8:00.2").Return(42).Times(1) vf0LinkMock := netlinkMockPkg.NewMockLink(testCtrl) vf0Mac, _ := net.ParseMAC("02:42:19:51:2f:af") - vf0LinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{Name: "enp216s0f0_0", HardwareAddr: vf0Mac}).Times(3) - netlinkLibMock.EXPECT().LinkByName("enp216s0f0_0").Return(vf0LinkMock, nil) - eth0LinkMock := netlinkMockPkg.NewMockLink(testCtrl) - eth0Mac, _ := net.ParseMAC("00:00:00:00:00:00") - eth0LinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{Name: "eth0", HardwareAddr: eth0Mac}).Times(3) - netlinkLibMock.EXPECT().LinkByName("eth0").Return(eth0LinkMock, nil).Times(1) + vf0LinkMock.EXPECT().Attrs().Return(&netlink.LinkAttrs{Name: "enp216s0f0_0", HardwareAddr: vf0Mac}) + netlinkLibMock.EXPECT().LinkByIndex(-1).Return(vf0LinkMock, fmt.Errorf("interface not found")) + netlinkLibMock.EXPECT().LinkByIndex(42).Return(vf0LinkMock, nil).Times(1) vfLink, err := s.VFIsReady("0000:d8:00.2") Expect(err).ToNot(HaveOccurred()) Expect(vfLink.Attrs().HardwareAddr).To(Equal(vf0Mac)) diff --git a/pkg/host/mock/mock_host.go b/pkg/host/mock/mock_host.go index e9ccdb9cd2..5a09c1440c 100644 --- a/pkg/host/mock/mock_host.go +++ b/pkg/host/mock/mock_host.go @@ -970,6 +970,20 @@ func (mr *MockHostManagerInterfaceMockRecorder) TryEnableVhostNet() *gomock.Call return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TryEnableVhostNet", reflect.TypeOf((*MockHostManagerInterface)(nil).TryEnableVhostNet)) } +// TryGetInterfaceIndex mocks base method. +func (m *MockHostManagerInterface) TryGetInterfaceIndex(pciAddr string) int { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TryGetInterfaceIndex", pciAddr) + ret0, _ := ret[0].(int) + return ret0 +} + +// TryGetInterfaceIndex indicates an expected call of TryGetInterfaceIndex. +func (mr *MockHostManagerInterfaceMockRecorder) TryGetInterfaceIndex(pciAddr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TryGetInterfaceIndex", reflect.TypeOf((*MockHostManagerInterface)(nil).TryGetInterfaceIndex), pciAddr) +} + // TryGetInterfaceName mocks base method. func (m *MockHostManagerInterface) TryGetInterfaceName(pciAddr string) string { m.ctrl.T.Helper() diff --git a/pkg/host/types/interfaces.go b/pkg/host/types/interfaces.go index 8867760324..fd622afe62 100644 --- a/pkg/host/types/interfaces.go +++ b/pkg/host/types/interfaces.go @@ -81,6 +81,8 @@ type NetworkInterface interface { TryToGetVirtualInterfaceName(pciAddr string) string // TryGetInterfaceName tries to find the SR-IOV virtual interface name base on pci address TryGetInterfaceName(pciAddr string) string + // TryGetInterfaceName tries to find the SR-IOV virtual interface index base on pci address + TryGetInterfaceIndex(pciAddr string) int // GetPhysSwitchID returns the physical switch ID for a specific pci address GetPhysSwitchID(name string) (string, error) // GetPhysPortName returns the physical port name for a specific pci address diff --git a/vendor/github.com/Mellanox/sriovnet/.golangci.yml b/vendor/github.com/Mellanox/rdmamap/.golangci.yml similarity index 93% rename from vendor/github.com/Mellanox/sriovnet/.golangci.yml rename to vendor/github.com/Mellanox/rdmamap/.golangci.yml index 13903829ce..09248db5f9 100644 --- a/vendor/github.com/Mellanox/sriovnet/.golangci.yml +++ b/vendor/github.com/Mellanox/rdmamap/.golangci.yml @@ -24,7 +24,7 @@ linters-settings: gocognit: min-complexity: 30 goimports: - local-prefixes: github.com/Mellanox/sriovnet + local-prefixes: github.com/Mellanox/rdmamap golint: min-confidence: 0 gomnd: @@ -32,7 +32,6 @@ linters-settings: mnd: # don't include the "operation" and "assign" checks: argument,case,condition,return - ignored-numbers: 2 govet: check-shadowing: true settings: @@ -43,9 +42,6 @@ linters-settings: line-length: 120 misspell: locale: US - ignore-words: - - flavour - - flavours prealloc: # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. # True by default. @@ -83,7 +79,7 @@ linters: - nakedret - prealloc - rowserrcheck - - exportloopref + - scopelint - staticcheck - structcheck - stylecheck diff --git a/vendor/github.com/Mellanox/rdmamap/.travis.yml b/vendor/github.com/Mellanox/rdmamap/.travis.yml new file mode 100644 index 0000000000..97f41cea81 --- /dev/null +++ b/vendor/github.com/Mellanox/rdmamap/.travis.yml @@ -0,0 +1,12 @@ +language: go + +go: + - "1.13" + +before_script: + - go get -u github.com/mattn/goveralls + +script: + - make lint + - make test-coverage + - goveralls -coverprofile=rdmamap.cover -service=travis-ci diff --git a/vendor/github.com/Mellanox/sriovnet/LICENSE b/vendor/github.com/Mellanox/rdmamap/LICENSE similarity index 100% rename from vendor/github.com/Mellanox/sriovnet/LICENSE rename to vendor/github.com/Mellanox/rdmamap/LICENSE diff --git a/vendor/github.com/Mellanox/sriovnet/Makefile b/vendor/github.com/Mellanox/rdmamap/Makefile similarity index 97% rename from vendor/github.com/Mellanox/sriovnet/Makefile rename to vendor/github.com/Mellanox/rdmamap/Makefile index d4cb6fa42a..dd7d7ad3cd 100644 --- a/vendor/github.com/Mellanox/sriovnet/Makefile +++ b/vendor/github.com/Mellanox/rdmamap/Makefile @@ -1,5 +1,5 @@ # Package related -PACKAGE=sriovnet +PACKAGE=rdmamap ORG_PATH=github.com/Mellanox REPO_PATH=$(ORG_PATH)/$(PACKAGE) GOPATH=$(CURDIR)/.gopath @@ -17,7 +17,7 @@ GOLANGCI_LINT = $(GOBIN)/golangci-lint # golangci-lint version should be updated periodically # we keep it fixed to avoid it from unexpectedly failing on the project # in case of a version bump -GOLANGCI_LINT_VER = v1.39.0 +GOLANGCI_LINT_VER = v1.23.8 TIMEOUT = 15 Q = $(if $(filter 1,$V),,@) @@ -65,7 +65,7 @@ COVERAGE_MODE = count test-coverage-tools: $(GOVERALLS) test-coverage: COVERAGE_DIR := $(CURDIR)/test test-coverage: test-coverage-tools $(BASE) ; $(info running coverage tests...) @ ## Run coverage tests - $Q cd $(BASE); $(GO) test -covermode=$(COVERAGE_MODE) -coverprofile=sriovnet.cover ./... + $Q cd $(BASE); $(GO) test -covermode=$(COVERAGE_MODE) -coverprofile=rdmamap.cover ./... # Misc diff --git a/vendor/github.com/Mellanox/rdmamap/README.md b/vendor/github.com/Mellanox/rdmamap/README.md new file mode 100644 index 0000000000..22aaa5c1ea --- /dev/null +++ b/vendor/github.com/Mellanox/rdmamap/README.md @@ -0,0 +1,40 @@ +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0) +[![Go Report Card](https://goreportcard.com/badge/github.com/Mellanox/rdmamap)](https://goreportcard.com/report/github.com/Mellanox/rdmamap) +[![Build Status](https://travis-ci.com/Mellanox/rdmamap.svg?branch=master)](https://travis-ci.com/Mellanox/rdmamap) +[![Coverage Status](https://coveralls.io/repos/github/Mellanox/rdmamap/badge.svg)](https://coveralls.io/github/Mellanox/rdmamap) + +# rdmamap + +This is golang package that provides map of rdma device with its character and network devices. + +It uses sysfs and netlink interfaces provided by kernel to perform this mapping. + +Local build and test + +You can use go get command: +``` +go get github.com/Mellanox/rdmamap +``` + +Example: + +``` +package main + +import ( + "fmt" + "github.com/Mellanox/rdmamap" +) + +func main() { + rdmaDevices := rdmamap.GetRdmaDeviceList() + fmt.Println("Devices: ", rdmaDevices) + + for _, dev := range rdmaDevices { + charDevices := rdmamap.GetRdmaCharDevices(dev) + fmt.Printf("Rdma device: = %s", dev) + fmt.Println(" Char devices: = ", charDevices) + } +} + +``` diff --git a/vendor/github.com/Mellanox/rdmamap/rdma_map.go b/vendor/github.com/Mellanox/rdmamap/rdma_map.go new file mode 100644 index 0000000000..44e17e63bd --- /dev/null +++ b/vendor/github.com/Mellanox/rdmamap/rdma_map.go @@ -0,0 +1,396 @@ +package rdmamap + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strconv" + "strings" + + "github.com/vishvananda/netlink" +) + +const ( + RdmaClassName = "infiniband" + RdmaClassDir = "/sys/class/infiniband" + RdmaIbUcmDir = "/sys/class/infiniband_cm" + RdmaUcmFilePrefix = "ucm" + + RdmaUmadDir = "/sys/class/infiniband_mad" + RdmaIssmFilePrefix = "issm" + RdmaUmadFilxPrefix = "umad" + + RdmaUverbsDir = "/sys/class/infiniband_verbs" + RdmaUverbsFilxPrefix = "uverbs" + + RdmaGidAttrDir = "gid_attrs" //nolint:stylecheck,golint + RdmaGidAttrNdevDir = "ndevs" //nolint:stylecheck,golint + RdmaPortsdir = "ports" + + RdmaNodeGuidFile = "node_guid" //nolint:stylecheck,golint + RdmaUcmDevice = "/dev/infiniband/rdma_cm" + RdmaDeviceDir = "/dev/infiniband" + + RdmaCountersDir = "counters" + RdmaHwCountersDir = "hw_counters" + + PciDevDir = "/sys/bus/pci/devices" + AuxDevDir = "/sys/bus/auxiliary/devices" + + // For local usage + prevDir = ".." + nibbleBitSize = 4 + loopBackIfName = "lo" +) + +// Returns a list of rdma device names +//nolint:prealloc +func GetRdmaDeviceList() []string { + var rdmaDevices []string + fd, err := os.Open(RdmaClassDir) + if err != nil { + return nil + } + defer fd.Close() + + fileInfos, err := fd.Readdir(-1) + if err != nil { + return nil + } + + for i := range fileInfos { + if fileInfos[i].IsDir() { + continue + } + rdmaDevices = append(rdmaDevices, fileInfos[i].Name()) + } + return rdmaDevices +} + +func isDirForRdmaDevice(rdmaDeviceName, dirName string) bool { + fileName := filepath.Join(dirName, "ibdev") + + fd, err := os.OpenFile(fileName, os.O_RDONLY, 0444) + if err != nil { + return false + } + defer fd.Close() + + if _, err = fd.Seek(0, io.SeekStart); err != nil { + return false + } + + data, err := ioutil.ReadAll(fd) + if err != nil { + return false + } + return (strings.Compare(strings.Trim(string(data), "\n"), rdmaDeviceName) == 0) +} + +func getCharDevice(rdmaDeviceName, classDir, charDevPrefix string) (string, error) { + fd, err := os.Open(classDir) + if err != nil { + return "", err + } + defer fd.Close() + fileInfos, err := fd.Readdir(-1) + if err != nil { + return "", nil + } + + for i := range fileInfos { + if fileInfos[i].Name() == "." || fileInfos[i].Name() == prevDir { + continue + } + if !strings.Contains(fileInfos[i].Name(), charDevPrefix) { + continue + } + dirName := filepath.Join(classDir, fileInfos[i].Name()) + if !isDirForRdmaDevice(rdmaDeviceName, dirName) { + continue + } + deviceFile := filepath.Join("/dev/infiniband", fileInfos[i].Name()) + return deviceFile, nil + } + return "", fmt.Errorf("no ucm device found") +} + +func getUcmDevice(rdmaDeviceName string) (string, error) { + return getCharDevice(rdmaDeviceName, + RdmaIbUcmDir, + RdmaUcmFilePrefix) +} + +func getIssmDevice(rdmaDeviceName string) (string, error) { + return getCharDevice(rdmaDeviceName, + RdmaUmadDir, + RdmaIssmFilePrefix) +} + +func getUmadDevice(rdmaDeviceName string) (string, error) { + return getCharDevice(rdmaDeviceName, + RdmaUmadDir, + RdmaUmadFilxPrefix) +} + +func getUverbDevice(rdmaDeviceName string) (string, error) { + return getCharDevice(rdmaDeviceName, + RdmaUverbsDir, + RdmaUverbsFilxPrefix) +} + +func getRdmaUcmDevice() (string, error) { + info, err := os.Stat(RdmaUcmDevice) + if err != nil { + return "", err + } + if info.Name() == "rdma_cm" { + return RdmaUcmDevice, nil + } + + return "", fmt.Errorf("invalid file name rdma_cm") +} + +// Returns a list of character device absolute path for a requested +// rdmaDeviceName. +// Returns nil if no character devices are found. +func GetRdmaCharDevices(rdmaDeviceName string) []string { + var rdmaCharDevices []string + + ucm, err := getUcmDevice(rdmaDeviceName) + if err == nil { + rdmaCharDevices = append(rdmaCharDevices, ucm) + } + issm, err := getIssmDevice(rdmaDeviceName) + if err == nil { + rdmaCharDevices = append(rdmaCharDevices, issm) + } + umad, err := getUmadDevice(rdmaDeviceName) + if err == nil { + rdmaCharDevices = append(rdmaCharDevices, umad) + } + uverb, err := getUverbDevice(rdmaDeviceName) + if err == nil { + rdmaCharDevices = append(rdmaCharDevices, uverb) + } + rdmaCm, err := getRdmaUcmDevice() + if err == nil { + rdmaCharDevices = append(rdmaCharDevices, rdmaCm) + } + + return rdmaCharDevices +} + +// Gets a list of ports for a specified device +//nolint:prealloc +func GetPorts(rdmaDeviceName string) []string { + var ports []string + + portsDir := filepath.Join(RdmaClassDir, rdmaDeviceName, RdmaPortsdir) + fd, err := os.Open(portsDir) + if err != nil { + return nil + } + defer fd.Close() + + fileInfos, err := fd.Readdir(-1) + if err != nil { + return nil + } + + for i := range fileInfos { + if fileInfos[i].Name() == "." || fileInfos[i].Name() == prevDir { + continue + } + ports = append(ports, fileInfos[i].Name()) + } + return ports +} + +//nolint:prealloc +func getNetdeviceIds(rdmaDeviceName, port string) []string { + var indices []string + + dir := filepath.Join(RdmaClassDir, rdmaDeviceName, RdmaPortsdir, port, + RdmaGidAttrDir, RdmaGidAttrNdevDir) + + fd, err := os.Open(dir) + if err != nil { + return nil + } + defer fd.Close() + + fileInfos, err := fd.Readdir(-1) + if err != nil { + return nil + } + + for i := range fileInfos { + if fileInfos[i].Name() == "." || fileInfos[i].Name() == prevDir { + continue + } + indices = append(indices, fileInfos[i].Name()) + } + return indices +} + +func isNetdevForRdma(rdmaDeviceName, port, index, netdevName string) bool { + fileName := filepath.Join(RdmaClassDir, rdmaDeviceName, RdmaPortsdir, port, + RdmaGidAttrDir, RdmaGidAttrNdevDir, index) + + fd, err := os.OpenFile(fileName, os.O_RDONLY, 0444) + if err != nil { + return false + } + defer fd.Close() + + if _, err = fd.Seek(0, io.SeekStart); err != nil { + return false + } + + data, err := ioutil.ReadAll(fd) + if err != nil { + return false + } + return (strings.TrimSuffix(string(data), "\n") == netdevName) +} + +func getRdmaDeviceForEth(netdevName string) (string, error) { + // Iterate over the list of rdma devices, + // read the gid table attribute netdev + // if the netdev matches, found the matching rdma device + + devices := GetRdmaDeviceList() + for _, dev := range devices { + ports := GetPorts(dev) + for _, port := range ports { + indices := getNetdeviceIds(dev, port) + for _, index := range indices { + found := isNetdevForRdma(dev, port, index, netdevName) + if found { + return dev, nil + } + } + } + } + return "", fmt.Errorf("rdma device not found for netdev %v", netdevName) +} + +func getNodeGUID(rdmaDeviceName string) ([]byte, error) { + var nodeGUID []byte + + fileName := filepath.Join(RdmaClassDir, rdmaDeviceName, RdmaNodeGuidFile) + + fd, err := os.OpenFile(fileName, os.O_RDONLY, 0444) + if err != nil { + return nil, err + } + defer fd.Close() + + if _, err = fd.Seek(0, io.SeekStart); err != nil { + return nil, err + } + data, err := ioutil.ReadAll(fd) + if err != nil { + return nil, err + } + data = data[:len(data)-1] + var j int + for _, b := range data { + if b == ':' { + continue + } + c, err := strconv.ParseUint(string(b), 16, 8) + if err != nil { + return nil, err + } + if (j % 2) == 0 { + nodeGUID = append(nodeGUID, byte(c)<//hw_counters */ + Stats []RdmaStatEntry /* /sys/class/infiniband///counters */ + Port int +} + +type RdmaStats struct { + PortStats []RdmaPortStats +} + +func readCounter(name string) uint64 { + fd, err := os.OpenFile(name, os.O_RDONLY, 0444) + if err != nil { + return 0 + } + defer fd.Close() + + if _, err = fd.Seek(0, io.SeekStart); err != nil { + return 0 + } + + data, err := ioutil.ReadAll(fd) + if err != nil { + return 0 + } + dataStr := string(data) + dataStr = strings.Trim(dataStr, "\n") + value, _ := strconv.ParseUint(dataStr, 10, 64) + return value +} + +//nolint:prealloc +func getCountersFromDir(path string) ([]RdmaStatEntry, error) { + var stats []RdmaStatEntry + + fd, err := os.Open(path) + if err != nil { + return stats, err + } + defer fd.Close() + + fileInfos, err := fd.Readdir(-1) + if err != nil { + return stats, err + } + + for _, file := range fileInfos { + if file.IsDir() { + continue + } + value := readCounter(filepath.Join(path, file.Name())) + entry := RdmaStatEntry{file.Name(), value} + stats = append(stats, entry) + } + return stats, nil +} + +// Get RDMA Sysfs stats from counters directory of a port of a rdma device +// Port number starts from 1. +func GetRdmaSysfsStats(rdmaDevice string, port int) ([]RdmaStatEntry, error) { + path := filepath.Join(RdmaClassDir, rdmaDevice, + RdmaPortsdir, strconv.Itoa(port), RdmaCountersDir) + + rdmastats, err := getCountersFromDir(path) + return rdmastats, err +} + +// Get RDMA Sysfs stats from hw_counters directory of a port of a rdma device +// Port number starts from 1. +func GetRdmaSysfsHwStats(rdmaDevice string, port int) ([]RdmaStatEntry, error) { + path := filepath.Join(RdmaClassDir, rdmaDevice, + RdmaPortsdir, strconv.Itoa(port), RdmaHwCountersDir) + + rdmastats, err := getCountersFromDir(path) + return rdmastats, err +} + +// Get RDMA sysfs starts from counter and hw_counters directory for a requested +// port of a device. +func GetRdmaSysfsAllStats(rdmaDevice string, port int) (RdmaPortStats, error) { + var portstats RdmaPortStats + + hwstats, err := GetRdmaSysfsHwStats(rdmaDevice, port) + if err != nil { + return portstats, nil + } + portstats.HwStats = hwstats + + stats, err := GetRdmaSysfsStats(rdmaDevice, port) + if err != nil { + return portstats, nil + } + portstats.Stats = stats + portstats.Port = port + return portstats, nil +} + +// Get RDMA sysfs starts from counter and hw_counters directory for a +// rdma device. +func GetRdmaSysfsAllPortsStats(rdmaDevice string) (RdmaStats, error) { + var allstats RdmaStats + + path := filepath.Join(RdmaClassDir, rdmaDevice, RdmaPortsdir) + fd, err := os.Open(path) + if err != nil { + return allstats, err + } + defer fd.Close() + + fileInfos, err := fd.Readdir(-1) + if err != nil { + return allstats, err + } + + for i, file := range fileInfos { + if fileInfos[i].Name() == "." || fileInfos[i].Name() == ".." { + continue + } + if !file.IsDir() { + continue + } + port, _ := strconv.Atoi(file.Name()) + portstats, err := GetRdmaSysfsAllStats(rdmaDevice, port) + if err != nil { + return allstats, err + } + allstats.PortStats = append(allstats.PortStats, portstats) + } + return allstats, nil +} + +func printRdmaStats(device string, stats *RdmaStats) { + for _, portstats := range stats.PortStats { + fmt.Printf("device: %s, port: %d\n", device, portstats.Port) + fmt.Println("Hw stats:") + for _, entry := range portstats.HwStats { + fmt.Printf("%s: %d\n", entry.Name, entry.Value) + } + fmt.Println("Stats:") + for _, entry := range portstats.Stats { + fmt.Printf("%s: %d\n", entry.Name, entry.Value) + } + } +} + +// Get RDMA statistics of a docker container. +// containerID is prefixed matched against the running docker containers, +// so a non ambiguous short identifier can be supplied as well. +func GetDockerContainerRdmaStats(containerID string) { + // Lock the OS Thread so we don't accidentally switch namespaces + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + originalHandle, err := netns.Get() + if err != nil { + log.Println("Fail to get handle of current net ns", err) + return + } + + nsHandle, err := netns.GetFromDocker(containerID) + if err != nil { + log.Println("Invalid docker id: ", containerID) + return + } + if netns.Set(nsHandle) != nil { + return + } + + ifaces, err := net.Interfaces() + if err != nil { + _ = netns.Set(originalHandle) + return + } + log.Printf("Net Interfaces: %v\n", ifaces) + for _, iface := range ifaces { + if iface.Name == loopBackIfName { + continue + } + rdmadev, err := GetRdmaDeviceForNetdevice(iface.Name) + if err != nil { + continue + } + rdmastats, err := GetRdmaSysfsAllPortsStats(rdmadev) + if err != nil { + log.Println("Fail to query device stats: ", err) + continue + } + printRdmaStats(rdmadev, &rdmastats) + } + _ = netns.Set(originalHandle) +} diff --git a/vendor/github.com/Mellanox/sriovnet/.travis.yml b/vendor/github.com/Mellanox/sriovnet/.travis.yml deleted file mode 100644 index 64e2722015..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -# see https://docs.travis-ci.com/user/reference/overview/#Virtualization-environments -language: go - -# use the latest ubuntu environment (18.04) available on travis -dist: xenial - -go: - - 1.13.x - -before_script: - - go get -u github.com/mattn/goveralls - -script: - - make lint - - make test-coverage - - goveralls -coverprofile=sriovnet.cover -service=travis-ci diff --git a/vendor/github.com/Mellanox/sriovnet/README.md b/vendor/github.com/Mellanox/sriovnet/README.md deleted file mode 100644 index 138dfae169..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/README.md +++ /dev/null @@ -1,59 +0,0 @@ -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0) -[![Go Report Card](https://goreportcard.com/badge/github.com/Mellanox/sriovnet)](https://goreportcard.com/report/github.com/Mellanox/sriovnet) -[![Build Status](https://travis-ci.com/Mellanox/sriovnet.svg?branch=master)](https://travis-ci.com/Mellanox/sriovnet) -[![Coverage Status](https://coveralls.io/repos/github/Mellanox/sriovnet/badge.svg)](https://coveralls.io/github/Mellanox/sriovnet) - -# sriovnet -Go library to configure SRIOV networking devices - -Local build and test - -You can use go get command: -``` -go get github.com/Mellanox/sriovnet -``` - -Example: - -```go -package main - -import ( - "fmt" - - "github.com/Mellanox/sriovnet" -) - -func main() { - var vfList[10] *sriovnet.VfObj - - err1 := sriovnet.EnableSriov("ib0") - if err1 != nil { - return - } - - handle, err2 := sriovnet.GetPfNetdevHandle("ib0") - if err2 != nil { - return - } - err3 := sriovnet.ConfigVfs(handle, false) - if err3 != nil { - return - } - for i := 0; i < 10; i++ { - vfList[i], _ = sriovnet.AllocateVf(handle) - } - for _, vf := range handle.List { - fmt.Printf("after allocation vf = %v\n", vf) - } - for i := 0; i < 10; i++ { - if vfList[i] == nil { - continue - } - sriovnet.FreeVf(handle, vfList[i]) - } - for _, vf := range handle.List { - fmt.Printf("after free vf = %v\n", vf) - } -} -``` diff --git a/vendor/github.com/Mellanox/sriovnet/file_access.go b/vendor/github.com/Mellanox/sriovnet/file_access.go deleted file mode 100644 index a22b4911ef..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/file_access.go +++ /dev/null @@ -1,139 +0,0 @@ -package sriovnet - -import ( - "io" - "io/ioutil" - "os" - "strconv" - "strings" - "syscall" -) - -type fileObject struct { - Path string - File *os.File -} - -func (attrib *fileObject) Exists() bool { - return fileExists(attrib.Path) -} - -func (attrib *fileObject) Open() (err error) { - attrib.File, err = os.OpenFile(attrib.Path, os.O_RDWR|syscall.O_NONBLOCK, 0660) - return err -} - -func (attrib *fileObject) OpenRO() (err error) { - attrib.File, err = os.OpenFile(attrib.Path, os.O_RDONLY, 0444) - return err -} - -func (attrib *fileObject) OpenWO() (err error) { - attrib.File, err = os.OpenFile(attrib.Path, os.O_WRONLY, 0444) - return err -} - -func (attrib *fileObject) Close() (err error) { - err = attrib.File.Close() - attrib.File = nil - return err -} - -func (attrib *fileObject) Read() (str string, err error) { - if attrib.File == nil { - err = attrib.OpenRO() - if err != nil { - return - } - defer func() { - e := attrib.Close() - if err == nil { - err = e - } - }() - } - _, err = attrib.File.Seek(0, io.SeekStart) - if err != nil { - return "", err - } - data, err := ioutil.ReadAll(attrib.File) - if err != nil { - return "", err - } - return string(data), nil -} - -func (attrib *fileObject) Write(value string) (err error) { - if attrib.File == nil { - err = attrib.OpenWO() - if err != nil { - return - } - defer func() { - e := attrib.Close() - if err == nil { - err = e - } - }() - } - _, err = attrib.File.Seek(0, io.SeekStart) - if err != nil { - return err - } - _, err = attrib.File.WriteString(value) - return err -} - -func (attrib *fileObject) ReadInt() (value int, err error) { - s, err := attrib.Read() - if err != nil { - return 0, err - } - s = strings.Trim(s, "\n") - value, err = strconv.Atoi(s) - if err != nil { - return 0, err - } - - return value, err -} - -func (attrib *fileObject) WriteInt(value int) (err error) { - return attrib.Write(strconv.Itoa(value)) -} - -func lsFilesWithPrefix(dir, filePrefix string, ignoreDir bool) ([]string, error) { - var desiredFiles []string - - f, err := os.Open(dir) - if err != nil { - return nil, err - } - defer f.Close() - fileInfos, err := f.Readdir(-1) - if err != nil { - return nil, err - } - - for i := range fileInfos { - if ignoreDir && fileInfos[i].IsDir() { - continue - } - - if filePrefix == "" || - strings.Contains(fileInfos[i].Name(), filePrefix) { - desiredFiles = append(desiredFiles, fileInfos[i].Name()) - } - } - return desiredFiles, nil -} - -func dirExists(dirname string) bool { - info, err := os.Stat(dirname) - return err == nil && info.IsDir() -} - -func fileExists(dirname string) bool { - info, err := os.Stat(dirname) - return err == nil && !info.IsDir() -} diff --git a/vendor/github.com/Mellanox/sriovnet/mofed_ib_helper.go b/vendor/github.com/Mellanox/sriovnet/mofed_ib_helper.go deleted file mode 100644 index 0e99e41913..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/mofed_ib_helper.go +++ /dev/null @@ -1,57 +0,0 @@ -package sriovnet - -import ( - "net" - "path/filepath" - "strconv" -) - -const ( - ibSriovCfgDir = "sriov" - ibSriovNodeFile = "node" - ibSriovPortFile = "port" - ibSriovPortAdminFile = "policy" - ibSriovPortAdminStateFollow = "Follow" -) - -func ibGetPortAdminState(pfNetdevName string, vfIndex int) (string, error) { - path := filepath.Join( - NetSysDir, pfNetdevName, pcidevPrefix, ibSriovCfgDir, strconv.Itoa(vfIndex), ibSriovPortAdminFile) - adminStateFile := fileObject{ - Path: path, - } - - state, err := adminStateFile.Read() - if err != nil { - return "", err - } - return state, nil -} - -func ibSetPortAdminState(pfNetdevName string, vfIndex int, newState string) error { - path := filepath.Join( - NetSysDir, pfNetdevName, pcidevPrefix, ibSriovCfgDir, strconv.Itoa(vfIndex), ibSriovPortAdminFile) - adminStateFile := fileObject{ - Path: path, - } - - return adminStateFile.Write(newState) -} - -func ibSetNodeGUID(pfNetdevName string, vfIndex int, guid net.HardwareAddr) error { - path := filepath.Join(NetSysDir, pfNetdevName, pcidevPrefix, ibSriovCfgDir, strconv.Itoa(vfIndex), ibSriovNodeFile) - nodeGUIDFile := fileObject{ - Path: path, - } - kernelGUIDFormat := guid.String() - return nodeGUIDFile.Write(kernelGUIDFormat) -} - -func ibSetPortGUID(pfNetdevName string, vfIndex int, guid net.HardwareAddr) error { - path := filepath.Join(NetSysDir, pfNetdevName, pcidevPrefix, ibSriovCfgDir, strconv.Itoa(vfIndex), ibSriovPortFile) - portGUIDFile := fileObject{ - Path: path, - } - kernelGUIDFormat := guid.String() - return portGUIDFile.Write(kernelGUIDFormat) -} diff --git a/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/defaultfs.go b/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/defaultfs.go deleted file mode 100644 index c795caf51b..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/defaultfs.go +++ /dev/null @@ -1,119 +0,0 @@ -package filesystem - -import ( - "io/ioutil" - "os" - "path/filepath" - "time" -) - -// DefaultFs implements Filesystem using same-named functions from "os" and "io/ioutil" -type DefaultFs struct{} - -// Stat via os.Stat -func (DefaultFs) Stat(name string) (os.FileInfo, error) { - return os.Stat(name) -} - -// Create via os.Create -func (DefaultFs) Create(name string) (File, error) { - file, err := os.Create(name) - if err != nil { - return nil, err - } - return &defaultFile{file}, nil -} - -// Rename via os.Rename -func (DefaultFs) Rename(oldpath, newpath string) error { - return os.Rename(oldpath, newpath) -} - -// MkdirAll via os.MkdirAll -func (DefaultFs) MkdirAll(path string, perm os.FileMode) error { - return os.MkdirAll(path, perm) -} - -// Chtimes via os.Chtimes -func (DefaultFs) Chtimes(name string, atime, mtime time.Time) error { - return os.Chtimes(name, atime, mtime) -} - -// RemoveAll via os.RemoveAll -func (DefaultFs) RemoveAll(path string) error { - return os.RemoveAll(path) -} - -// Remove via os.RemoveAll -func (DefaultFs) Remove(name string) error { - return os.Remove(name) -} - -// Readlink via os.Readlink -func (DefaultFs) Readlink(name string) (string, error) { - return os.Readlink(name) -} - -// Symlink via os.Symlink -func (DefaultFs) Symlink(oldname, newname string) error { - return os.Symlink(oldname, newname) -} - -// ReadFile via ioutil.ReadFile -func (DefaultFs) ReadFile(filename string) ([]byte, error) { - return ioutil.ReadFile(filename) -} - -// TempDir via ioutil.TempDir -func (DefaultFs) TempDir(dir, prefix string) (string, error) { - return ioutil.TempDir(dir, prefix) -} - -// TempFile via ioutil.TempFile -func (DefaultFs) TempFile(dir, prefix string) (File, error) { - file, err := ioutil.TempFile(dir, prefix) - if err != nil { - return nil, err - } - return &defaultFile{file}, nil -} - -// ReadDir via ioutil.ReadDir -func (DefaultFs) ReadDir(dirname string) ([]os.FileInfo, error) { - return ioutil.ReadDir(dirname) -} - -// Walk via filepath.Walk -func (DefaultFs) Walk(root string, walkFn filepath.WalkFunc) error { - return filepath.Walk(root, walkFn) -} - -// WriteFile via ioutil.Writefile -func (DefaultFs) WriteFile(filename string, data []byte, perm os.FileMode) error { - return ioutil.WriteFile(filename, data, perm) -} - -// defaultFile implements File using same-named functions from "os" -type defaultFile struct { - file *os.File -} - -// Name via os.File.Name -func (file *defaultFile) Name() string { - return file.file.Name() -} - -// Write via os.File.Write -func (file *defaultFile) Write(b []byte) (n int, err error) { - return file.file.Write(b) -} - -// Sync via os.File.Sync -func (file *defaultFile) Sync() error { - return file.file.Sync() -} - -// Close via os.File.Close -func (file *defaultFile) Close() error { - return file.file.Close() -} diff --git a/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/fakefs.go b/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/fakefs.go deleted file mode 100644 index 05e6a4ca91..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/fakefs.go +++ /dev/null @@ -1,151 +0,0 @@ -//nolint:gomnd -package filesystem - -import ( - "fmt" - "os" - "path/filepath" - "time" - - "github.com/spf13/afero" -) - -// FakeFs is implemented in terms of afero -type FakeFs struct { - a afero.Afero -} - -// NewFakeFs returns a fake Filesystem that exists at fakeFsRoot as its base path, useful for unit tests. -// Returns: Filesystem interface, teardown method (cleanup of provided root path) and error. -// teardown method should be called at the end of each test to ensure environment is left clean. -func NewFakeFs(fakeFsRoot string) (Filesystem, func(), error) { - _, err := os.Stat(fakeFsRoot) - // if fakeFsRoot dir exists remove it. - if err == nil { - err = os.RemoveAll(fakeFsRoot) - if err != nil { - return nil, nil, fmt.Errorf("failed to cleanup fake root dir %s. %s", fakeFsRoot, err) - } - } else if !os.IsNotExist(err) { - return nil, nil, fmt.Errorf("failed to lstat fake root dir %s. %s", fakeFsRoot, err) - } - - // create fakeFsRoot dir - if err = os.MkdirAll(fakeFsRoot, os.FileMode(0755)); err != nil { - return nil, nil, fmt.Errorf("failed to create fake root dir: %s. %s", fakeFsRoot, err) - } - - return &FakeFs{a: afero.Afero{Fs: afero.NewBasePathFs(afero.NewOsFs(), fakeFsRoot)}}, - func() { - os.RemoveAll(fakeFsRoot) - }, - nil -} - -// Stat via afero.Fs.Stat -func (fs *FakeFs) Stat(name string) (os.FileInfo, error) { - return fs.a.Fs.Stat(name) -} - -// Create via afero.Fs.Create -func (fs *FakeFs) Create(name string) (File, error) { - file, err := fs.a.Fs.Create(name) - if err != nil { - return nil, err - } - return &fakeFile{file}, nil -} - -// Rename via afero.Fs.Rename -func (fs *FakeFs) Rename(oldpath, newpath string) error { - return fs.a.Fs.Rename(oldpath, newpath) -} - -// MkdirAll via afero.Fs.MkdirAll -func (fs *FakeFs) MkdirAll(path string, perm os.FileMode) error { - return fs.a.Fs.MkdirAll(path, perm) -} - -// Chtimes via afero.Fs.Chtimes -func (fs *FakeFs) Chtimes(name string, atime, mtime time.Time) error { - return fs.a.Fs.Chtimes(name, atime, mtime) -} - -// ReadFile via afero.ReadFile -func (fs *FakeFs) ReadFile(filename string) ([]byte, error) { - return fs.a.ReadFile(filename) -} - -// WriteFile via afero.WriteFile -func (fs *FakeFs) WriteFile(filename string, data []byte, perm os.FileMode) error { - return fs.a.WriteFile(filename, data, perm) -} - -// TempDir via afero.TempDir -func (fs *FakeFs) TempDir(dir, prefix string) (string, error) { - return fs.a.TempDir(dir, prefix) -} - -// TempFile via afero.TempFile -func (fs *FakeFs) TempFile(dir, prefix string) (File, error) { - file, err := fs.a.TempFile(dir, prefix) - if err != nil { - return nil, err - } - return &fakeFile{file}, nil -} - -// ReadDir via afero.ReadDir -func (fs *FakeFs) ReadDir(dirname string) ([]os.FileInfo, error) { - return fs.a.ReadDir(dirname) -} - -// Walk via afero.Walk -func (fs *FakeFs) Walk(root string, walkFn filepath.WalkFunc) error { - return fs.a.Walk(root, walkFn) -} - -// RemoveAll via afero.RemoveAll -func (fs *FakeFs) RemoveAll(path string) error { - return fs.a.RemoveAll(path) -} - -// Remove via afero.Remove -func (fs *FakeFs) Remove(name string) error { - return fs.a.Remove(name) -} - -// Readlink via afero.ReadlinkIfPossible -func (fs *FakeFs) Readlink(name string) (string, error) { - return fs.a.Fs.(afero.Symlinker).ReadlinkIfPossible(name) -} - -// Symlink via afero.FS.(Symlinker).SymlinkIfPossible -func (fs *FakeFs) Symlink(oldname, newname string) error { - return fs.a.Fs.(afero.Symlinker).SymlinkIfPossible(oldname, newname) -} - -// fakeFile implements File; for use with FakeFs -type fakeFile struct { - file afero.File -} - -// Name via afero.File.Name -func (file *fakeFile) Name() string { - return file.file.Name() -} - -// Write via afero.File.Write -func (file *fakeFile) Write(b []byte) (n int, err error) { - return file.file.Write(b) -} - -// Sync via afero.File.Sync -func (file *fakeFile) Sync() error { - return file.file.Sync() -} - -// Close via afero.File.Close -func (file *fakeFile) Close() error { - return file.file.Close() -} diff --git a/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/filesystem.go b/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/filesystem.go deleted file mode 100644 index 99073b3cce..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/pkg/utils/filesystem/filesystem.go +++ /dev/null @@ -1,41 +0,0 @@ -package filesystem - -import ( - "os" - "path/filepath" - "time" -) - -var Fs Filesystem = DefaultFs{} - -// Filesystem is an interface that we can use to mock various filesystem operations -type Filesystem interface { - // from "os" - Stat(name string) (os.FileInfo, error) - Create(name string) (File, error) - Rename(oldpath, newpath string) error - MkdirAll(path string, perm os.FileMode) error - Chtimes(name string, atime time.Time, mtime time.Time) error - RemoveAll(path string) error - Remove(name string) error - Readlink(name string) (string, error) - Symlink(oldname, newname string) error - - // from "io/ioutil" - ReadFile(filename string) ([]byte, error) - WriteFile(filename string, data []byte, perm os.FileMode) error - TempDir(dir, prefix string) (string, error) - TempFile(dir, prefix string) (File, error) - ReadDir(dirname string) ([]os.FileInfo, error) - Walk(root string, walkFn filepath.WalkFunc) error -} - -// File is an interface that we can use to mock various filesystem operations typically -// accessed through the File object from the "os" package -type File interface { - // for now, the only os.File methods used are those below, add more as necessary - Name() string - Write(b []byte) (n int, err error) - Sync() error - Close() error -} diff --git a/vendor/github.com/Mellanox/sriovnet/pkg/utils/netlinkops/netlinkops.go b/vendor/github.com/Mellanox/sriovnet/pkg/utils/netlinkops/netlinkops.go deleted file mode 100644 index ce458a3155..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/pkg/utils/netlinkops/netlinkops.go +++ /dev/null @@ -1,114 +0,0 @@ -package netlinkops - -import ( - "fmt" - "net" - - "github.com/vishvananda/netlink" -) - -var nlOpsImpl NetlinkOps - -// NetlinkOps is an interface wrapping netlink to be used by sriovnet -type NetlinkOps interface { - // LinkByName gets link by netdev name - LinkByName(name string) (netlink.Link, error) - // LinkSetUp sets Link state to up - LinkSetUp(link netlink.Link) error - // LinkSetVfHardwareAddr sets VF hardware address - LinkSetVfHardwareAddr(link netlink.Link, vf int, hwaddr net.HardwareAddr) error - // LinkSetVfVlan sets VF vlan - LinkSetVfVlan(link netlink.Link, vf, vlan int) error - // LinkSetVfNodeGUID sets VF Node GUID - LinkSetVfNodeGUID(link netlink.Link, vf int, nodeguid net.HardwareAddr) error - // LinkSetVfPortGUID sets VF Port GUID - LinkSetVfPortGUID(link netlink.Link, vf int, portguid net.HardwareAddr) error - // LinkSetVfTrust sets VF trust for the given VF - LinkSetVfTrust(link netlink.Link, vf int, state bool) error - // LinkSetVfSpoofchk sets VF spoofchk for the given VF - LinkSetVfSpoofchk(link netlink.Link, vf int, check bool) error - // DevLinkGetAllPortList gets all devlink ports - DevLinkGetAllPortList() ([]*netlink.DevlinkPort, error) - // DevLinkGetPortByNetdevName gets devlink port by netdev name - DevLinkGetPortByNetdevName(netdev string) (*netlink.DevlinkPort, error) -} - -// GetNetlinkOps returns NetlinkOps interface -func GetNetlinkOps() NetlinkOps { - if nlOpsImpl == nil { - nlOpsImpl = &netlinkOps{} - } - return nlOpsImpl -} - -// SetNetlinkOps sets NetlinkOps interface (to be used by unit tests) -func SetNetlinkOps(nlops NetlinkOps) { - nlOpsImpl = nlops -} - -// ResetNetlinkOps resets nlOpsImpl to nil -func ResetNetlinkOps() { - nlOpsImpl = nil -} - -type netlinkOps struct{} - -// LinkByName gets link by netdev name -func (nlo *netlinkOps) LinkByName(name string) (netlink.Link, error) { - return netlink.LinkByName(name) -} - -// LinkSetUp sets Link state to up -func (nlo *netlinkOps) LinkSetUp(link netlink.Link) error { - return netlink.LinkSetUp(link) -} - -// LinkSetVfHardwareAddr sets VF hardware address -func (nlo *netlinkOps) LinkSetVfHardwareAddr(link netlink.Link, vf int, hwaddr net.HardwareAddr) error { - return netlink.LinkSetVfHardwareAddr(link, vf, hwaddr) -} - -// LinkSetVfVlan sets VF vlan -func (nlo *netlinkOps) LinkSetVfVlan(link netlink.Link, vf, vlan int) error { - return netlink.LinkSetVfVlan(link, vf, vlan) -} - -// LinkSetVfNodeGUID sets VF Node GUID -func (nlo *netlinkOps) LinkSetVfNodeGUID(link netlink.Link, vf int, nodeguid net.HardwareAddr) error { - return netlink.LinkSetVfNodeGUID(link, vf, nodeguid) -} - -// LinkSetVfPortGUID sets VF Port GUID -func (nlo *netlinkOps) LinkSetVfPortGUID(link netlink.Link, vf int, portguid net.HardwareAddr) error { - return netlink.LinkSetVfPortGUID(link, vf, portguid) -} - -// LinkSetVfTrust sets VF trust for the given VF -func (nlo *netlinkOps) LinkSetVfTrust(link netlink.Link, vf int, state bool) error { - return netlink.LinkSetVfTrust(link, vf, state) -} - -// LinkSetVfSpoofchk sets VF spoofchk for the given VF -func (nlo *netlinkOps) LinkSetVfSpoofchk(link netlink.Link, vf int, check bool) error { - return netlink.LinkSetVfSpoofchk(link, vf, check) -} - -// DevLinkGetAllPortList gets all devlink ports -func (nlo *netlinkOps) DevLinkGetAllPortList() ([]*netlink.DevlinkPort, error) { - return netlink.DevLinkGetAllPortList() -} - -// DevLinkGetPortByNetdevName gets devlink port by netdev name -func (nlo *netlinkOps) DevLinkGetPortByNetdevName(netdev string) (*netlink.DevlinkPort, error) { - ports, err := netlink.DevLinkGetAllPortList() - if err != nil { - return nil, err - } - - for _, port := range ports { - if netdev == port.NetdeviceName { - return port, nil - } - } - return nil, fmt.Errorf("failed to get devlink port for netdev %s", netdev) -} diff --git a/vendor/github.com/Mellanox/sriovnet/sriovnet.go b/vendor/github.com/Mellanox/sriovnet/sriovnet.go deleted file mode 100644 index 5797833215..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/sriovnet.go +++ /dev/null @@ -1,466 +0,0 @@ -package sriovnet - -import ( - "fmt" - "log" - "net" - "os" - "path" - "path/filepath" - "regexp" - "strconv" - "strings" - - "github.com/google/uuid" - "github.com/vishvananda/netlink" - - utilfs "github.com/Mellanox/sriovnet/pkg/utils/filesystem" - "github.com/Mellanox/sriovnet/pkg/utils/netlinkops" -) - -const ( - // Used locally - etherEncapType = "ether" - ibEncapType = "infiniband" -) - -var virtFnRe = regexp.MustCompile(`virtfn(\d+)`) - -type VfObj struct { - Index int - PciAddress string - Bound bool - Allocated bool -} - -type PfNetdevHandle struct { - PfNetdevName string - pfLinkHandle netlink.Link - - List []*VfObj -} - -func SetPFLinkUp(pfNetdevName string) error { - handle, err := netlinkops.GetNetlinkOps().LinkByName(pfNetdevName) - if err != nil { - return err - } - - return netlinkops.GetNetlinkOps().LinkSetUp(handle) -} - -func IsVfPciVfioBound(pciAddr string) bool { - driverLink := filepath.Join(PciSysDir, pciAddr, "driver") - driverPath, err := utilfs.Fs.Readlink(driverLink) - if err != nil { - return false - } - driverName := filepath.Base(driverPath) - return driverName == "vfio-pci" -} - -func IsSriovSupported(netdevName string) bool { - maxvfs, err := getMaxVfCount(netdevName) - if maxvfs == 0 || err != nil { - return false - } - return true -} - -func IsSriovEnabled(netdevName string) bool { - curvfs, err := getCurrentVfCount(netdevName) - if curvfs == 0 || err != nil { - return false - } - return true -} - -func EnableSriov(pfNetdevName string) error { - var maxVfCount int - var err error - - devDirName := netDevDeviceDir(pfNetdevName) - - devExist := dirExists(devDirName) - if !devExist { - return fmt.Errorf("device %s not found", pfNetdevName) - } - - maxVfCount, err = getMaxVfCount(pfNetdevName) - if err != nil { - log.Println("Fail to read max vf count of PF", pfNetdevName) - return err - } - - if maxVfCount == 0 { - return fmt.Errorf("sriov unsupported for device: %s", pfNetdevName) - } - - curVfCount, err2 := getCurrentVfCount(pfNetdevName) - if err2 != nil { - log.Println("Fail to read current vf count of PF", pfNetdevName) - return err - } - if curVfCount == 0 { - return setMaxVfCount(pfNetdevName, maxVfCount) - } - return nil -} - -func DisableSriov(pfNetdevName string) error { - devDirName := netDevDeviceDir(pfNetdevName) - - devExist := dirExists(devDirName) - if !devExist { - return fmt.Errorf("device %s not found", pfNetdevName) - } - - return setMaxVfCount(pfNetdevName, 0) -} - -func GetPfNetdevHandle(pfNetdevName string) (*PfNetdevHandle, error) { - pfLinkHandle, err := netlinkops.GetNetlinkOps().LinkByName(pfNetdevName) - if err != nil { - return nil, err - } - - handle := PfNetdevHandle{ - PfNetdevName: pfNetdevName, - pfLinkHandle: pfLinkHandle, - } - - list, err := GetVfPciDevList(pfNetdevName) - if err != nil { - return nil, err - } - - for _, vfDir := range list { - vfIndexStr := strings.TrimPrefix(vfDir, netDevVfDevicePrefix) - vfIndex, _ := strconv.Atoi(vfIndexStr) - vfNetdevName := vfNetdevNameFromParent(pfNetdevName, vfIndex) - pciAddress, err := vfPCIDevNameFromVfIndex(pfNetdevName, vfIndex) - if err != nil { - log.Printf("Failed to read PCI Address for VF %v from PF %v: %v\n", - vfNetdevName, pfNetdevName, err) - continue - } - vfObj := VfObj{ - Index: vfIndex, - PciAddress: pciAddress, - } - if vfNetdevName != "" { - vfObj.Bound = true - } else { - vfObj.Bound = false - } - vfObj.Allocated = false - handle.List = append(handle.List, &vfObj) - } - return &handle, nil -} - -func UnbindVf(handle *PfNetdevHandle, vf *VfObj) error { - cmdFile := filepath.Join(NetSysDir, handle.PfNetdevName, netdevDriverDir, netdevUnbindFile) - cmdFileObj := fileObject{ - Path: cmdFile, - } - err := cmdFileObj.Write(vf.PciAddress) - if err != nil { - vf.Bound = false - } - return err -} - -func BindVf(handle *PfNetdevHandle, vf *VfObj) error { - cmdFile := filepath.Join(NetSysDir, handle.PfNetdevName, netdevDriverDir, netdevBindFile) - cmdFileObj := fileObject{ - Path: cmdFile, - } - err := cmdFileObj.Write(vf.PciAddress) - if err != nil { - vf.Bound = true - } - return err -} - -func GetVfDefaultMacAddr(vfNetdevName string) (string, error) { - ethHandle, err1 := netlinkops.GetNetlinkOps().LinkByName(vfNetdevName) - if err1 != nil { - return "", err1 - } - - ethAttr := ethHandle.Attrs() - return ethAttr.HardwareAddr.String(), nil -} - -func SetVfDefaultMacAddress(handle *PfNetdevHandle, vf *VfObj) error { - netdevName := vfNetdevNameFromParent(handle.PfNetdevName, vf.Index) - ethHandle, err1 := netlinkops.GetNetlinkOps().LinkByName(netdevName) - if err1 != nil { - return err1 - } - ethAttr := ethHandle.Attrs() - return netlinkops.GetNetlinkOps().LinkSetVfHardwareAddr(handle.pfLinkHandle, vf.Index, ethAttr.HardwareAddr) -} - -func SetVfVlan(handle *PfNetdevHandle, vf *VfObj, vlan int) error { - return netlinkops.GetNetlinkOps().LinkSetVfVlan(handle.pfLinkHandle, vf.Index, vlan) -} - -func setVfNodeGUID(handle *PfNetdevHandle, vf *VfObj, guid []byte) error { - var err error - - nodeGUIDHwAddr := net.HardwareAddr(guid) - - err = ibSetNodeGUID(handle.PfNetdevName, vf.Index, nodeGUIDHwAddr) - if err == nil { - return nil - } - err = netlinkops.GetNetlinkOps().LinkSetVfNodeGUID(handle.pfLinkHandle, vf.Index, guid) - return err -} - -func setVfPortGUID(handle *PfNetdevHandle, vf *VfObj, guid []byte) error { - var err error - - portGUIDHwAddr := net.HardwareAddr(guid) - - err = ibSetPortGUID(handle.PfNetdevName, vf.Index, portGUIDHwAddr) - if err == nil { - return nil - } - err = netlinkops.GetNetlinkOps().LinkSetVfPortGUID(handle.pfLinkHandle, vf.Index, guid) - return err -} - -func SetVfDefaultGUID(handle *PfNetdevHandle, vf *VfObj) error { - randUUID, err := uuid.NewRandom() - if err != nil { - return err - } - guid := randUUID[0:8] - guid[7] = byte(vf.Index) - - err = setVfNodeGUID(handle, vf, guid) - if err != nil { - return err - } - - err = setVfPortGUID(handle, vf, guid) - return err -} - -func SetVfPrivileged(handle *PfNetdevHandle, vf *VfObj, privileged bool) error { - var spoofChk bool - var trusted bool - - ethAttr := handle.pfLinkHandle.Attrs() - if ethAttr.EncapType != etherEncapType { - return nil - } - // Only ether type is supported - if privileged { - spoofChk = false - trusted = true - } else { - spoofChk = true - trusted = false - } - - /* do not check for error status as older kernels doesn't - * have support for it. - * golangci-lint complains on missing error check. ignore it - * with nolint comment until we update the code to ignore ENOTSUP error - */ - netlinkops.GetNetlinkOps().LinkSetVfTrust(handle.pfLinkHandle, vf.Index, trusted) //nolint - netlinkops.GetNetlinkOps().LinkSetVfSpoofchk(handle.pfLinkHandle, vf.Index, spoofChk) //nolint - return nil -} - -func setDefaultHwAddr(handle *PfNetdevHandle, vf *VfObj) error { - var err error - - ethAttr := handle.pfLinkHandle.Attrs() - if ethAttr.EncapType == etherEncapType { - err = SetVfDefaultMacAddress(handle, vf) - } else if ethAttr.EncapType == ibEncapType { - err = SetVfDefaultGUID(handle, vf) - } - return err -} - -func setPortAdminState(handle *PfNetdevHandle, vf *VfObj) error { - ethAttr := handle.pfLinkHandle.Attrs() - if ethAttr.EncapType == ibEncapType { - state, err2 := ibGetPortAdminState(handle.PfNetdevName, vf.Index) - // Ignore the error where this file is not available - if err2 != nil { - return nil - } - log.Printf("Admin state = %v", state) - err2 = ibSetPortAdminState(handle.PfNetdevName, vf.Index, ibSriovPortAdminStateFollow) - if err2 != nil { - // If file exist, we must be able to write - log.Printf("Admin state setting error = %v", err2) - return err2 - } - } - return nil -} - -func ConfigVfs(handle *PfNetdevHandle, privileged bool) error { - var err error - - for _, vf := range handle.List { - log.Printf("vf = %v\n", vf) - err = setPortAdminState(handle, vf) - if err != nil { - break - } - // skip VFs in another namespace - netdevName := vfNetdevNameFromParent(handle.PfNetdevName, vf.Index) - if _, err = netlinkops.GetNetlinkOps().LinkByName(netdevName); err != nil { - continue - } - err = setDefaultHwAddr(handle, vf) - if err != nil { - break - } - _ = SetVfPrivileged(handle, vf, privileged) - } - if err != nil { - return err - } - for _, vf := range handle.List { - if !vf.Bound { - continue - } - - err = UnbindVf(handle, vf) - if err != nil { - log.Printf("Fail to unbind err=%v\n", err) - break - } - - err = BindVf(handle, vf) - if err != nil { - log.Printf("Fail to bind err=%v\n", err) - break - } - log.Printf("vf = %v unbind/bind completed", vf) - } - return nil -} - -func AllocateVf(handle *PfNetdevHandle) (*VfObj, error) { - for _, vf := range handle.List { - if vf.Allocated { - continue - } - vf.Allocated = true - log.Printf("Allocated vf = %v\n", *vf) - return vf, nil - } - return nil, fmt.Errorf("all Vfs for %v are allocated", handle.PfNetdevName) -} - -func AllocateVfByMacAddress(handle *PfNetdevHandle, vfMacAddress string) (*VfObj, error) { - for _, vf := range handle.List { - if vf.Allocated { - continue - } - - netdevName := vfNetdevNameFromParent(handle.PfNetdevName, vf.Index) - macAddr, _ := GetVfDefaultMacAddr(netdevName) - if macAddr != vfMacAddress { - continue - } - vf.Allocated = true - log.Printf("Allocated vf by mac = %v\n", *vf) - return vf, nil - } - return nil, fmt.Errorf("all Vfs for %v are allocated for mac address %v", - handle.PfNetdevName, vfMacAddress) -} - -func FreeVf(handle *PfNetdevHandle, vf *VfObj) { - vf.Allocated = false - log.Printf("Free vf = %v\n", *vf) -} - -func FreeVfByNetdevName(handle *PfNetdevHandle, vfIndex int) error { - vfNetdevName := fmt.Sprintf("%s%v", netDevVfDevicePrefix, vfIndex) - for _, vf := range handle.List { - netdevName := vfNetdevNameFromParent(handle.PfNetdevName, vf.Index) - if vf.Allocated && netdevName == vfNetdevName { - vf.Allocated = true - return nil - } - } - return fmt.Errorf("vf netdev %v not found", vfNetdevName) -} - -func GetVfNetdevName(handle *PfNetdevHandle, vf *VfObj) string { - return vfNetdevNameFromParent(handle.PfNetdevName, vf.Index) -} - -// GetVfIndexByPciAddress gets a VF PCI address (e.g '0000:03:00.4') and -// returns the correlate VF index. -func GetVfIndexByPciAddress(vfPciAddress string) (int, error) { - vfPath := filepath.Join(PciSysDir, vfPciAddress, "physfn", "virtfn*") - matches, err := filepath.Glob(vfPath) - if err != nil { - return -1, err - } - for _, match := range matches { - tmp, err := os.Readlink(match) - if err != nil { - continue - } - if strings.Contains(tmp, vfPciAddress) { - result := virtFnRe.FindStringSubmatch(match) - vfIndex, err := strconv.Atoi(result[1]) - if err != nil { - continue - } - return vfIndex, nil - } - } - return -1, fmt.Errorf("vf index for %s not found", vfPciAddress) -} - -// GetNetDevicesFromPci gets a PCI address (e.g '0000:03:00.1') and -// returns the correlate list of netdevices -func GetNetDevicesFromPci(pciAddress string) ([]string, error) { - pciDir := filepath.Join(PciSysDir, pciAddress, "net") - _, err := utilfs.Fs.Stat(pciDir) - if err != nil { - return nil, fmt.Errorf("cannot get a network device with pci address %v %v", pciAddress, err) - } - - netDevicesFiles, err := utilfs.Fs.ReadDir(pciDir) - if err != nil { - return nil, fmt.Errorf("failed to get network device name in %v %v", pciDir, err) - } - - netDevices := make([]string, 0, len(netDevicesFiles)) - for _, netDeviceFile := range netDevicesFiles { - netDevices = append(netDevices, strings.TrimSpace(netDeviceFile.Name())) - } - return netDevices, nil -} - -// GetPfPciFromVfPci retrieves the parent PF PCI address of the provided VF PCI address in D:B:D.f format -func GetPfPciFromVfPci(vfPciAddress string) (string, error) { - pfPath := filepath.Join(PciSysDir, vfPciAddress, "physfn") - pciDevDir, err := utilfs.Fs.Readlink(pfPath) - if err != nil { - return "", fmt.Errorf("failed to read physfn link, provided address may not be a VF. %v", err) - } - - pf := path.Base(pciDevDir) - if pf == "" { - return pf, fmt.Errorf("could not find PF PCI Address") - } - return pf, err -} diff --git a/vendor/github.com/Mellanox/sriovnet/sriovnet_helper.go b/vendor/github.com/Mellanox/sriovnet/sriovnet_helper.go deleted file mode 100644 index bee37c6c92..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/sriovnet_helper.go +++ /dev/null @@ -1,129 +0,0 @@ -package sriovnet - -import ( - "fmt" - "log" - "os" - "path/filepath" -) - -const ( - NetSysDir = "/sys/class/net" - PciSysDir = "/sys/bus/pci/devices" - pcidevPrefix = "device" - netdevDriverDir = "device/driver" - netdevUnbindFile = "unbind" - netdevBindFile = "bind" - - netDevMaxVfCountFile = "sriov_totalvfs" - netDevCurrentVfCountFile = "sriov_numvfs" - netDevVfDevicePrefix = "virtfn" -) - -type VfObject struct { - NetdevName string - PCIDevName string -} - -func netDevDeviceDir(netDevName string) string { - devDirName := filepath.Join(NetSysDir, netDevName, pcidevPrefix) - return devDirName -} - -func getMaxVfCount(pfNetdevName string) (int, error) { - devDirName := netDevDeviceDir(pfNetdevName) - - maxDevFile := fileObject{ - Path: filepath.Join(devDirName, netDevMaxVfCountFile), - } - - maxVfs, err := maxDevFile.ReadInt() - if err != nil { - return 0, err - } - log.Println("max_vfs = ", maxVfs) - return maxVfs, nil -} - -func setMaxVfCount(pfNetdevName string, maxVfs int) error { - devDirName := netDevDeviceDir(pfNetdevName) - - maxDevFile := fileObject{ - Path: filepath.Join(devDirName, netDevCurrentVfCountFile), - } - - return maxDevFile.WriteInt(maxVfs) -} - -func getCurrentVfCount(pfNetdevName string) (int, error) { - devDirName := netDevDeviceDir(pfNetdevName) - - maxDevFile := fileObject{ - Path: filepath.Join(devDirName, netDevCurrentVfCountFile), - } - - curVfs, err := maxDevFile.ReadInt() - if err != nil { - return 0, err - } - log.Println("cur_vfs = ", curVfs) - return curVfs, nil -} - -func vfNetdevNameFromParent(pfNetdevName string, vfIndex int) string { - devDirName := netDevDeviceDir(pfNetdevName) - vfNetdev, _ := lsFilesWithPrefix(fmt.Sprintf("%s/%s%v/net", devDirName, - netDevVfDevicePrefix, vfIndex), "", false) - if len(vfNetdev) == 0 { - return "" - } - return vfNetdev[0] -} - -func readPCIsymbolicLink(symbolicLink string) (string, error) { - pciDevDir, err := os.Readlink(symbolicLink) - //nolint:gomnd - if len(pciDevDir) <= 3 { - return "", fmt.Errorf("could not find PCI Address") - } - - return pciDevDir[3:], err -} -func vfPCIDevNameFromVfIndex(pfNetdevName string, vfIndex int) (string, error) { - symbolicLink := filepath.Join(NetSysDir, pfNetdevName, pcidevPrefix, fmt.Sprintf("%s%v", - netDevVfDevicePrefix, vfIndex)) - pciAddress, err := readPCIsymbolicLink(symbolicLink) - if err != nil { - err = fmt.Errorf("%v for VF %s%v of PF %s", err, - netDevVfDevicePrefix, vfIndex, pfNetdevName) - } - return pciAddress, err -} - -func getPCIFromDeviceName(netdevName string) (string, error) { - symbolicLink := filepath.Join(NetSysDir, netdevName, pcidevPrefix) - pciAddress, err := readPCIsymbolicLink(symbolicLink) - if err != nil { - err = fmt.Errorf("%v for netdevice %s", err, netdevName) - } - return pciAddress, err -} - -func GetVfPciDevList(pfNetdevName string) ([]string, error) { - var i int - devDirName := netDevDeviceDir(pfNetdevName) - - virtFnDirs, err := lsFilesWithPrefix(devDirName, netDevVfDevicePrefix, true) - - if err != nil { - return nil, err - } - - i = 0 - vfDirList := make([]string, 0, len(virtFnDirs)) - for _, vfDir := range virtFnDirs { - vfDirList = append(vfDirList, vfDir) - i++ - } - return vfDirList, nil -} diff --git a/vendor/github.com/Mellanox/sriovnet/sriovnet_switchdev.go b/vendor/github.com/Mellanox/sriovnet/sriovnet_switchdev.go deleted file mode 100644 index 18904aeb73..0000000000 --- a/vendor/github.com/Mellanox/sriovnet/sriovnet_switchdev.go +++ /dev/null @@ -1,391 +0,0 @@ -package sriovnet - -import ( - "errors" - "fmt" - "net" - "os" - "path/filepath" - "regexp" - "strconv" - "strings" - - utilfs "github.com/Mellanox/sriovnet/pkg/utils/filesystem" - "github.com/Mellanox/sriovnet/pkg/utils/netlinkops" -) - -const ( - netdevPhysSwitchID = "phys_switch_id" - netdevPhysPortName = "phys_port_name" -) - -type PortFlavour uint16 - -// Keep things consistent with netlink lib constants -// nolint:golint,stylecheck -const ( - PORT_FLAVOUR_PHYSICAL = iota - PORT_FLAVOUR_CPU - PORT_FLAVOUR_DSA - PORT_FLAVOUR_PCI_PF - PORT_FLAVOUR_PCI_VF - PORT_FLAVOUR_VIRTUAL - PORT_FLAVOUR_UNUSED - PORT_FLAVOUR_PCI_SF - PORT_FLAVOUR_UNKNOWN = 0xffff -) - -// Regex that matches on the physical/upling port name -var physPortRepRegex = regexp.MustCompile(`^p(\d+)$`) - -// Regex that matches on PF representor port name. These ports exists on DPUs. -var pfPortRepRegex = regexp.MustCompile(`^(?:c\d+)?pf(\d+)$`) - -// Regex that matches on VF representor port name -var vfPortRepRegex = regexp.MustCompile(`^(?:c\d+)?pf(\d+)vf(\d+)$`) - -func parsePortName(physPortName string) (pfRepIndex, vfRepIndex int, err error) { - pfRepIndex = -1 - vfRepIndex = -1 - - // old kernel syntax of phys_port_name is vf index - physPortName = strings.TrimSpace(physPortName) - physPortNameInt, err := strconv.Atoi(physPortName) - if err == nil { - vfRepIndex = physPortNameInt - } else { - // new kernel syntax of phys_port_name [cZ]pfXVfY - matches := vfPortRepRegex.FindStringSubmatch(physPortName) - //nolint:gomnd - if len(matches) != 3 { - err = fmt.Errorf("failed to parse physPortName %s", physPortName) - } else { - pfRepIndex, err = strconv.Atoi(matches[1]) - if err == nil { - vfRepIndex, err = strconv.Atoi(matches[2]) - } - } - } - return pfRepIndex, vfRepIndex, err -} - -func isSwitchdev(netdevice string) bool { - swIDFile := filepath.Join(NetSysDir, netdevice, netdevPhysSwitchID) - physSwitchID, err := utilfs.Fs.ReadFile(swIDFile) - if err != nil { - return false - } - if physSwitchID != nil && string(physSwitchID) != "" { - return true - } - return false -} - -// GetUplinkRepresentor gets a VF or PF PCI address (e.g '0000:03:00.4') and -// returns the uplink represntor netdev name for that VF or PF. -func GetUplinkRepresentor(pciAddress string) (string, error) { - devicePath := filepath.Join(PciSysDir, pciAddress, "physfn", "net") - if _, err := utilfs.Fs.Stat(devicePath); errors.Is(err, os.ErrNotExist) { - // If physfn symlink to the parent PF doesn't exist, use the current device's dir - devicePath = filepath.Join(PciSysDir, pciAddress, "net") - } - - devices, err := utilfs.Fs.ReadDir(devicePath) - if err != nil { - return "", fmt.Errorf("failed to lookup %s: %v", pciAddress, err) - } - for _, device := range devices { - if isSwitchdev(device.Name()) { - // Try to get the phys port name, if not exists then fallback to check without it - // phys_port_name should be in formant p e.g p0,p1,p2 ...etc. - if devicePhysPortName, err := getNetDevPhysPortName(device.Name()); err == nil { - if !physPortRepRegex.MatchString(devicePhysPortName) { - continue - } - } - - return device.Name(), nil - } - } - return "", fmt.Errorf("uplink for %s not found", pciAddress) -} - -func GetVfRepresentor(uplink string, vfIndex int) (string, error) { - swIDFile := filepath.Join(NetSysDir, uplink, netdevPhysSwitchID) - physSwitchID, err := utilfs.Fs.ReadFile(swIDFile) - if err != nil || string(physSwitchID) == "" { - return "", fmt.Errorf("cant get uplink %s switch id", uplink) - } - - pfSubsystemPath := filepath.Join(NetSysDir, uplink, "subsystem") - devices, err := utilfs.Fs.ReadDir(pfSubsystemPath) - if err != nil { - return "", err - } - for _, device := range devices { - devicePath := filepath.Join(NetSysDir, device.Name()) - deviceSwIDFile := filepath.Join(devicePath, netdevPhysSwitchID) - deviceSwID, err := utilfs.Fs.ReadFile(deviceSwIDFile) - if err != nil || string(deviceSwID) != string(physSwitchID) { - continue - } - physPortNameStr, err := getNetDevPhysPortName(device.Name()) - if err != nil { - continue - } - pfRepIndex, vfRepIndex, _ := parsePortName(physPortNameStr) - if pfRepIndex != -1 { - pfPCIAddress, err := getPCIFromDeviceName(uplink) - if err != nil { - continue - } - PCIFuncAddress, err := strconv.Atoi(string((pfPCIAddress[len(pfPCIAddress)-1]))) - if pfRepIndex != PCIFuncAddress || err != nil { - continue - } - } - // At this point we're confident we have a representor. - if vfRepIndex == vfIndex { - return device.Name(), nil - } - } - return "", fmt.Errorf("failed to find VF representor for uplink %s", uplink) -} - -func getNetDevPhysPortName(netDev string) (string, error) { - devicePortNameFile := filepath.Join(NetSysDir, netDev, netdevPhysPortName) - physPortName, err := utilfs.Fs.ReadFile(devicePortNameFile) - if err != nil { - return "", err - } - return strings.TrimSpace(string(physPortName)), nil -} - -// findNetdevWithPortNameCriteria returns representor netdev that matches a criteria function on the -// physical port name -func findNetdevWithPortNameCriteria(criteria func(string) bool) (string, error) { - netdevs, err := utilfs.Fs.ReadDir(NetSysDir) - if err != nil { - return "", err - } - - for _, netdev := range netdevs { - // find matching VF representor - netdevName := netdev.Name() - - // skip non switchdev netdevs - if !isSwitchdev(netdevName) { - continue - } - - portName, err := getNetDevPhysPortName(netdevName) - if err != nil { - continue - } - - if criteria(portName) { - return netdevName, nil - } - } - return "", fmt.Errorf("no representor matched criteria") -} - -// GetVfRepresentorDPU returns VF representor on DPU for a host VF identified by pfID and vfIndex -func GetVfRepresentorDPU(pfID, vfIndex string) (string, error) { - // TODO(Adrianc): This method should change to get switchID and vfIndex as input, then common logic can - // be shared with GetVfRepresentor, backward compatibility should be preserved when this happens. - - // pfID should be 0 or 1 - if pfID != "0" && pfID != "1" { - return "", fmt.Errorf("unexpected pfID(%s). It should be 0 or 1", pfID) - } - - // vfIndex should be an unsinged integer provided as a decimal number - if _, err := strconv.ParseUint(vfIndex, 10, 32); err != nil { - return "", fmt.Errorf("unexpected vfIndex(%s). It should be an unsigned decimal number", vfIndex) - } - - // map for easy search of expected VF rep port name. - // Note: no supoport for Multi-Chassis DPUs - expectedPhysPortNames := map[string]interface{}{ - fmt.Sprintf("pf%svf%s", pfID, vfIndex): nil, - fmt.Sprintf("c1pf%svf%s", pfID, vfIndex): nil, - } - - netdev, err := findNetdevWithPortNameCriteria(func(portName string) bool { - // if phys port name == pfvf or c1pfvf we have a match - if _, ok := expectedPhysPortNames[portName]; ok { - return true - } - return false - }) - - if err != nil { - return "", fmt.Errorf("vf representor for pfID:%s, vfIndex:%s not found", pfID, vfIndex) - } - return netdev, nil -} - -// GetRepresentorPortFlavour returns the representor port flavour -// Note: this method does not support old representor names used by old kernels -// e.g and will return PORT_FLAVOUR_UNKNOWN for such cases. -func GetRepresentorPortFlavour(netdev string) (PortFlavour, error) { - if !isSwitchdev(netdev) { - return PORT_FLAVOUR_UNKNOWN, fmt.Errorf("net device %s is does not represent an eswitch port", netdev) - } - - // Attempt to get information via devlink (Kernel >= 5.9.0) - port, err := netlinkops.GetNetlinkOps().DevLinkGetPortByNetdevName(netdev) - if err == nil { - return PortFlavour(port.PortFlavour), nil - } - - // Fallback to Get PortFlavour by phys_port_name - // read phy_port_name - portName, err := getNetDevPhysPortName(netdev) - if err != nil { - return PORT_FLAVOUR_UNKNOWN, err - } - - typeToRegex := map[PortFlavour]*regexp.Regexp{ - PORT_FLAVOUR_PHYSICAL: physPortRepRegex, - PORT_FLAVOUR_PCI_PF: pfPortRepRegex, - PORT_FLAVOUR_PCI_VF: vfPortRepRegex, - } - for flavour, regex := range typeToRegex { - if regex.MatchString(portName) { - return flavour, nil - } - } - return PORT_FLAVOUR_UNKNOWN, nil -} - -// parseDPUConfigFileOutput parses the config file content of a DPU -// representor port. The format of the file is a set of : pairs as follows: -// -// ``` -// MAC : 0c:42:a1:c6:cf:7c -// MaxTxRate : 0 -// State : Follow -// ``` -func parseDPUConfigFileOutput(out string) map[string]string { - configMap := make(map[string]string) - for _, line := range strings.Split(strings.TrimSuffix(out, "\n"), "\n") { - entry := strings.SplitN(line, ":", 2) - if len(entry) != 2 { - // unexpected line format - continue - } - configMap[strings.Trim(entry[0], " \t\n")] = strings.Trim(entry[1], " \t\n") - } - return configMap -} - -// GetRepresentorPeerMacAddress returns the MAC address of the peer netdev associated with the given -// representor netdev -// Note: -// This method functionality is currently supported only on DPUs. -// Currently only netdev representors with PORT_FLAVOUR_PCI_PF are supported -func GetRepresentorPeerMacAddress(netdev string) (net.HardwareAddr, error) { - flavor, err := GetRepresentorPortFlavour(netdev) - if err != nil { - return nil, fmt.Errorf("unknown port flavour for netdev %s. %v", netdev, err) - } - if flavor == PORT_FLAVOUR_UNKNOWN { - return nil, fmt.Errorf("unknown port flavour for netdev %s", netdev) - } - if flavor != PORT_FLAVOUR_PCI_PF { - return nil, fmt.Errorf("unsupported port flavour for netdev %s", netdev) - } - - // Attempt to get information via devlink (Kernel >= 5.9.0) - port, err := netlinkops.GetNetlinkOps().DevLinkGetPortByNetdevName(netdev) - if err == nil { - if port.Fn != nil { - return port.Fn.HwAddr, nil - } - } - - // Get information via sysfs - // read phy_port_name - portName, err := getNetDevPhysPortName(netdev) - if err != nil { - return nil, err - } - // Extract port num - portNum := pfPortRepRegex.FindStringSubmatch(portName) - if len(portNum) < 2 { - return nil, fmt.Errorf("failed to extract physical port number from port name %s of netdev %s", - portName, netdev) - } - uplinkPhysPortName := "p" + portNum[1] - // Find uplink netdev for that port - // Note(adrianc): As we support only DPUs ATM we do not need to deal with netdevs from different - // eswitch (i.e different switch IDs). - uplinkNetdev, err := findNetdevWithPortNameCriteria(func(pname string) bool { return pname == uplinkPhysPortName }) - if err != nil { - return nil, fmt.Errorf("failed to find uplink port for netdev %s. %v", netdev, err) - } - // get MAC address for netdev - configPath := filepath.Join(NetSysDir, uplinkNetdev, "smart_nic", "pf", "config") - out, err := utilfs.Fs.ReadFile(configPath) - if err != nil { - return nil, fmt.Errorf("failed to read DPU config via uplink %s for %s. %v", - uplinkNetdev, netdev, err) - } - config := parseDPUConfigFileOutput(string(out)) - macStr, ok := config["MAC"] - if !ok { - return nil, fmt.Errorf("MAC address not found for %s", netdev) - } - mac, err := net.ParseMAC(macStr) - if err != nil { - return nil, fmt.Errorf("failed to parse MAC address \"%s\" for %s. %v", macStr, netdev, err) - } - return mac, nil -} - -// SetRepresentorPeerMacAddress sets the given MAC addresss of the peer netdev associated with the given -// representor netdev. -// Note: This method functionality is currently supported only for DPUs. -// Currently only netdev representors with PORT_FLAVOUR_PCI_VF are supported -func SetRepresentorPeerMacAddress(netdev string, mac net.HardwareAddr) error { - flavor, err := GetRepresentorPortFlavour(netdev) - if err != nil { - return fmt.Errorf("unknown port flavour for netdev %s. %v", netdev, err) - } - if flavor == PORT_FLAVOUR_UNKNOWN { - return fmt.Errorf("unknown port flavour for netdev %s", netdev) - } - if flavor != PORT_FLAVOUR_PCI_VF { - return fmt.Errorf("unsupported port flavour for netdev %s", netdev) - } - - physPortNameStr, err := getNetDevPhysPortName(netdev) - if err != nil { - return fmt.Errorf("failed to get phys_port_name for netdev %s: %v", netdev, err) - } - pfID, vfIndex, err := parsePortName(physPortNameStr) - if err != nil { - return fmt.Errorf("failed to get the pf and vf index for netdev %s "+ - "with phys_port_name %s: %v", netdev, physPortNameStr, err) - } - - uplinkPhysPortName := fmt.Sprintf("p%d", pfID) - uplinkNetdev, err := findNetdevWithPortNameCriteria(func(pname string) bool { return pname == uplinkPhysPortName }) - if err != nil { - return fmt.Errorf("failed to find netdev for physical port name %s. %v", uplinkPhysPortName, err) - } - vfRepName := fmt.Sprintf("vf%d", vfIndex) - sysfsVfRepMacFile := filepath.Join(NetSysDir, uplinkNetdev, "smart_nic", vfRepName, "mac") - _, err = utilfs.Fs.Stat(sysfsVfRepMacFile) - if err != nil { - return fmt.Errorf("couldn't stat VF representor's sysfs file %s: %v", sysfsVfRepMacFile, err) - } - err = utilfs.Fs.WriteFile(sysfsVfRepMacFile, []byte(mac.String()), 0) - if err != nil { - return fmt.Errorf("failed to write the MAC address %s to VF reprentor %s", - mac.String(), sysfsVfRepMacFile) - } - return nil -} diff --git a/vendor/github.com/evanphx/json-patch/v5/internal/json/decode.go b/vendor/github.com/evanphx/json-patch/v5/internal/json/decode.go new file mode 100644 index 0000000000..e9bb0efe77 --- /dev/null +++ b/vendor/github.com/evanphx/json-patch/v5/internal/json/decode.go @@ -0,0 +1,1385 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Represents JSON data structure using native Go types: booleans, floats, +// strings, arrays, and maps. + +package json + +import ( + "encoding" + "encoding/base64" + "fmt" + "reflect" + "strconv" + "strings" + "sync" + "unicode" + "unicode/utf16" + "unicode/utf8" +) + +// Unmarshal parses the JSON-encoded data and stores the result +// in the value pointed to by v. If v is nil or not a pointer, +// Unmarshal returns an InvalidUnmarshalError. +// +// Unmarshal uses the inverse of the encodings that +// Marshal uses, allocating maps, slices, and pointers as necessary, +// with the following additional rules: +// +// To unmarshal JSON into a pointer, Unmarshal first handles the case of +// the JSON being the JSON literal null. In that case, Unmarshal sets +// the pointer to nil. Otherwise, Unmarshal unmarshals the JSON into +// the value pointed at by the pointer. If the pointer is nil, Unmarshal +// allocates a new value for it to point to. +// +// To unmarshal JSON into a value implementing the Unmarshaler interface, +// Unmarshal calls that value's UnmarshalJSON method, including +// when the input is a JSON null. +// Otherwise, if the value implements encoding.TextUnmarshaler +// and the input is a JSON quoted string, Unmarshal calls that value's +// UnmarshalText method with the unquoted form of the string. +// +// To unmarshal JSON into a struct, Unmarshal matches incoming object +// keys to the keys used by Marshal (either the struct field name or its tag), +// preferring an exact match but also accepting a case-insensitive match. By +// default, object keys which don't have a corresponding struct field are +// ignored (see Decoder.DisallowUnknownFields for an alternative). +// +// To unmarshal JSON into an interface value, +// Unmarshal stores one of these in the interface value: +// +// bool, for JSON booleans +// float64, for JSON numbers +// string, for JSON strings +// []interface{}, for JSON arrays +// map[string]interface{}, for JSON objects +// nil for JSON null +// +// To unmarshal a JSON array into a slice, Unmarshal resets the slice length +// to zero and then appends each element to the slice. +// As a special case, to unmarshal an empty JSON array into a slice, +// Unmarshal replaces the slice with a new empty slice. +// +// To unmarshal a JSON array into a Go array, Unmarshal decodes +// JSON array elements into corresponding Go array elements. +// If the Go array is smaller than the JSON array, +// the additional JSON array elements are discarded. +// If the JSON array is smaller than the Go array, +// the additional Go array elements are set to zero values. +// +// To unmarshal a JSON object into a map, Unmarshal first establishes a map to +// use. If the map is nil, Unmarshal allocates a new map. Otherwise Unmarshal +// reuses the existing map, keeping existing entries. Unmarshal then stores +// key-value pairs from the JSON object into the map. The map's key type must +// either be any string type, an integer, implement json.Unmarshaler, or +// implement encoding.TextUnmarshaler. +// +// If the JSON-encoded data contain a syntax error, Unmarshal returns a SyntaxError. +// +// If a JSON value is not appropriate for a given target type, +// or if a JSON number overflows the target type, Unmarshal +// skips that field and completes the unmarshaling as best it can. +// If no more serious errors are encountered, Unmarshal returns +// an UnmarshalTypeError describing the earliest such error. In any +// case, it's not guaranteed that all the remaining fields following +// the problematic one will be unmarshaled into the target object. +// +// The JSON null value unmarshals into an interface, map, pointer, or slice +// by setting that Go value to nil. Because null is often used in JSON to mean +// “not present,” unmarshaling a JSON null into any other Go type has no effect +// on the value and produces no error. +// +// When unmarshaling quoted strings, invalid UTF-8 or +// invalid UTF-16 surrogate pairs are not treated as an error. +// Instead, they are replaced by the Unicode replacement +// character U+FFFD. +func Unmarshal(data []byte, v any) error { + // Check for well-formedness. + // Avoids filling out half a data structure + // before discovering a JSON syntax error. + d := ds.Get().(*decodeState) + defer ds.Put(d) + //var d decodeState + d.useNumber = true + err := checkValid(data, &d.scan) + if err != nil { + return err + } + + d.init(data) + return d.unmarshal(v) +} + +var ds = sync.Pool{ + New: func() any { + return new(decodeState) + }, +} + +func UnmarshalWithKeys(data []byte, v any) ([]string, error) { + // Check for well-formedness. + // Avoids filling out half a data structure + // before discovering a JSON syntax error. + + d := ds.Get().(*decodeState) + defer ds.Put(d) + //var d decodeState + d.useNumber = true + err := checkValid(data, &d.scan) + if err != nil { + return nil, err + } + + d.init(data) + err = d.unmarshal(v) + if err != nil { + return nil, err + } + + return d.lastKeys, nil +} + +func UnmarshalValid(data []byte, v any) error { + // Check for well-formedness. + // Avoids filling out half a data structure + // before discovering a JSON syntax error. + d := ds.Get().(*decodeState) + defer ds.Put(d) + //var d decodeState + d.useNumber = true + + d.init(data) + return d.unmarshal(v) +} + +func UnmarshalValidWithKeys(data []byte, v any) ([]string, error) { + // Check for well-formedness. + // Avoids filling out half a data structure + // before discovering a JSON syntax error. + + d := ds.Get().(*decodeState) + defer ds.Put(d) + //var d decodeState + d.useNumber = true + + d.init(data) + err := d.unmarshal(v) + if err != nil { + return nil, err + } + + return d.lastKeys, nil +} + +// Unmarshaler is the interface implemented by types +// that can unmarshal a JSON description of themselves. +// The input can be assumed to be a valid encoding of +// a JSON value. UnmarshalJSON must copy the JSON data +// if it wishes to retain the data after returning. +// +// By convention, to approximate the behavior of Unmarshal itself, +// Unmarshalers implement UnmarshalJSON([]byte("null")) as a no-op. +type Unmarshaler interface { + UnmarshalJSON([]byte) error +} + +// An UnmarshalTypeError describes a JSON value that was +// not appropriate for a value of a specific Go type. +type UnmarshalTypeError struct { + Value string // description of JSON value - "bool", "array", "number -5" + Type reflect.Type // type of Go value it could not be assigned to + Offset int64 // error occurred after reading Offset bytes + Struct string // name of the struct type containing the field + Field string // the full path from root node to the field +} + +func (e *UnmarshalTypeError) Error() string { + if e.Struct != "" || e.Field != "" { + return "json: cannot unmarshal " + e.Value + " into Go struct field " + e.Struct + "." + e.Field + " of type " + e.Type.String() + } + return "json: cannot unmarshal " + e.Value + " into Go value of type " + e.Type.String() +} + +// An UnmarshalFieldError describes a JSON object key that +// led to an unexported (and therefore unwritable) struct field. +// +// Deprecated: No longer used; kept for compatibility. +type UnmarshalFieldError struct { + Key string + Type reflect.Type + Field reflect.StructField +} + +func (e *UnmarshalFieldError) Error() string { + return "json: cannot unmarshal object key " + strconv.Quote(e.Key) + " into unexported field " + e.Field.Name + " of type " + e.Type.String() +} + +// An InvalidUnmarshalError describes an invalid argument passed to Unmarshal. +// (The argument to Unmarshal must be a non-nil pointer.) +type InvalidUnmarshalError struct { + Type reflect.Type +} + +func (e *InvalidUnmarshalError) Error() string { + if e.Type == nil { + return "json: Unmarshal(nil)" + } + + if e.Type.Kind() != reflect.Pointer { + return "json: Unmarshal(non-pointer " + e.Type.String() + ")" + } + return "json: Unmarshal(nil " + e.Type.String() + ")" +} + +func (d *decodeState) unmarshal(v any) error { + rv := reflect.ValueOf(v) + if rv.Kind() != reflect.Pointer || rv.IsNil() { + return &InvalidUnmarshalError{reflect.TypeOf(v)} + } + + d.scan.reset() + d.scanWhile(scanSkipSpace) + // We decode rv not rv.Elem because the Unmarshaler interface + // test must be applied at the top level of the value. + err := d.value(rv) + if err != nil { + return d.addErrorContext(err) + } + return d.savedError +} + +// A Number represents a JSON number literal. +type Number string + +// String returns the literal text of the number. +func (n Number) String() string { return string(n) } + +// Float64 returns the number as a float64. +func (n Number) Float64() (float64, error) { + return strconv.ParseFloat(string(n), 64) +} + +// Int64 returns the number as an int64. +func (n Number) Int64() (int64, error) { + return strconv.ParseInt(string(n), 10, 64) +} + +// An errorContext provides context for type errors during decoding. +type errorContext struct { + Struct reflect.Type + FieldStack []string +} + +// decodeState represents the state while decoding a JSON value. +type decodeState struct { + data []byte + off int // next read offset in data + opcode int // last read result + scan scanner + errorContext *errorContext + savedError error + useNumber bool + disallowUnknownFields bool + lastKeys []string +} + +// readIndex returns the position of the last byte read. +func (d *decodeState) readIndex() int { + return d.off - 1 +} + +// phasePanicMsg is used as a panic message when we end up with something that +// shouldn't happen. It can indicate a bug in the JSON decoder, or that +// something is editing the data slice while the decoder executes. +const phasePanicMsg = "JSON decoder out of sync - data changing underfoot?" + +func (d *decodeState) init(data []byte) *decodeState { + d.data = data + d.off = 0 + d.savedError = nil + if d.errorContext != nil { + d.errorContext.Struct = nil + // Reuse the allocated space for the FieldStack slice. + d.errorContext.FieldStack = d.errorContext.FieldStack[:0] + } + return d +} + +// saveError saves the first err it is called with, +// for reporting at the end of the unmarshal. +func (d *decodeState) saveError(err error) { + if d.savedError == nil { + d.savedError = d.addErrorContext(err) + } +} + +// addErrorContext returns a new error enhanced with information from d.errorContext +func (d *decodeState) addErrorContext(err error) error { + if d.errorContext != nil && (d.errorContext.Struct != nil || len(d.errorContext.FieldStack) > 0) { + switch err := err.(type) { + case *UnmarshalTypeError: + err.Struct = d.errorContext.Struct.Name() + err.Field = strings.Join(d.errorContext.FieldStack, ".") + } + } + return err +} + +// skip scans to the end of what was started. +func (d *decodeState) skip() { + s, data, i := &d.scan, d.data, d.off + depth := len(s.parseState) + for { + op := s.step(s, data[i]) + i++ + if len(s.parseState) < depth { + d.off = i + d.opcode = op + return + } + } +} + +// scanNext processes the byte at d.data[d.off]. +func (d *decodeState) scanNext() { + if d.off < len(d.data) { + d.opcode = d.scan.step(&d.scan, d.data[d.off]) + d.off++ + } else { + d.opcode = d.scan.eof() + d.off = len(d.data) + 1 // mark processed EOF with len+1 + } +} + +// scanWhile processes bytes in d.data[d.off:] until it +// receives a scan code not equal to op. +func (d *decodeState) scanWhile(op int) { + s, data, i := &d.scan, d.data, d.off + for i < len(data) { + newOp := s.step(s, data[i]) + i++ + if newOp != op { + d.opcode = newOp + d.off = i + return + } + } + + d.off = len(data) + 1 // mark processed EOF with len+1 + d.opcode = d.scan.eof() +} + +// rescanLiteral is similar to scanWhile(scanContinue), but it specialises the +// common case where we're decoding a literal. The decoder scans the input +// twice, once for syntax errors and to check the length of the value, and the +// second to perform the decoding. +// +// Only in the second step do we use decodeState to tokenize literals, so we +// know there aren't any syntax errors. We can take advantage of that knowledge, +// and scan a literal's bytes much more quickly. +func (d *decodeState) rescanLiteral() { + data, i := d.data, d.off +Switch: + switch data[i-1] { + case '"': // string + for ; i < len(data); i++ { + switch data[i] { + case '\\': + i++ // escaped char + case '"': + i++ // tokenize the closing quote too + break Switch + } + } + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-': // number + for ; i < len(data); i++ { + switch data[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '.', 'e', 'E', '+', '-': + default: + break Switch + } + } + case 't': // true + i += len("rue") + case 'f': // false + i += len("alse") + case 'n': // null + i += len("ull") + } + if i < len(data) { + d.opcode = stateEndValue(&d.scan, data[i]) + } else { + d.opcode = scanEnd + } + d.off = i + 1 +} + +// value consumes a JSON value from d.data[d.off-1:], decoding into v, and +// reads the following byte ahead. If v is invalid, the value is discarded. +// The first byte of the value has been read already. +func (d *decodeState) value(v reflect.Value) error { + switch d.opcode { + default: + panic(phasePanicMsg) + + case scanBeginArray: + if v.IsValid() { + if err := d.array(v); err != nil { + return err + } + } else { + d.skip() + } + d.scanNext() + + case scanBeginObject: + if v.IsValid() { + if err := d.object(v); err != nil { + return err + } + } else { + d.skip() + } + d.scanNext() + + case scanBeginLiteral: + // All bytes inside literal return scanContinue op code. + start := d.readIndex() + d.rescanLiteral() + + if v.IsValid() { + if err := d.literalStore(d.data[start:d.readIndex()], v, false); err != nil { + return err + } + } + } + return nil +} + +type unquotedValue struct{} + +// valueQuoted is like value but decodes a +// quoted string literal or literal null into an interface value. +// If it finds anything other than a quoted string literal or null, +// valueQuoted returns unquotedValue{}. +func (d *decodeState) valueQuoted() any { + switch d.opcode { + default: + panic(phasePanicMsg) + + case scanBeginArray, scanBeginObject: + d.skip() + d.scanNext() + + case scanBeginLiteral: + v := d.literalInterface() + switch v.(type) { + case nil, string: + return v + } + } + return unquotedValue{} +} + +// indirect walks down v allocating pointers as needed, +// until it gets to a non-pointer. +// If it encounters an Unmarshaler, indirect stops and returns that. +// If decodingNull is true, indirect stops at the first settable pointer so it +// can be set to nil. +func indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { + // Issue #24153 indicates that it is generally not a guaranteed property + // that you may round-trip a reflect.Value by calling Value.Addr().Elem() + // and expect the value to still be settable for values derived from + // unexported embedded struct fields. + // + // The logic below effectively does this when it first addresses the value + // (to satisfy possible pointer methods) and continues to dereference + // subsequent pointers as necessary. + // + // After the first round-trip, we set v back to the original value to + // preserve the original RW flags contained in reflect.Value. + v0 := v + haveAddr := false + + // If v is a named type and is addressable, + // start with its address, so that if the type has pointer methods, + // we find them. + if v.Kind() != reflect.Pointer && v.Type().Name() != "" && v.CanAddr() { + haveAddr = true + v = v.Addr() + } + for { + // Load value from interface, but only if the result will be + // usefully addressable. + if v.Kind() == reflect.Interface && !v.IsNil() { + e := v.Elem() + if e.Kind() == reflect.Pointer && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Pointer) { + haveAddr = false + v = e + continue + } + } + + if v.Kind() != reflect.Pointer { + break + } + + if decodingNull && v.CanSet() { + break + } + + // Prevent infinite loop if v is an interface pointing to its own address: + // var v interface{} + // v = &v + if v.Elem().Kind() == reflect.Interface && v.Elem().Elem() == v { + v = v.Elem() + break + } + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + if v.Type().NumMethod() > 0 && v.CanInterface() { + if u, ok := v.Interface().(Unmarshaler); ok { + return u, nil, reflect.Value{} + } + if !decodingNull { + if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { + return nil, u, reflect.Value{} + } + } + } + + if haveAddr { + v = v0 // restore original value after round-trip Value.Addr().Elem() + haveAddr = false + } else { + v = v.Elem() + } + } + return nil, nil, v +} + +// array consumes an array from d.data[d.off-1:], decoding into v. +// The first byte of the array ('[') has been read already. +func (d *decodeState) array(v reflect.Value) error { + // Check for unmarshaler. + u, ut, pv := indirect(v, false) + if u != nil { + start := d.readIndex() + d.skip() + return u.UnmarshalJSON(d.data[start:d.off]) + } + if ut != nil { + d.saveError(&UnmarshalTypeError{Value: "array", Type: v.Type(), Offset: int64(d.off)}) + d.skip() + return nil + } + v = pv + + // Check type of target. + switch v.Kind() { + case reflect.Interface: + if v.NumMethod() == 0 { + // Decoding into nil interface? Switch to non-reflect code. + ai := d.arrayInterface() + v.Set(reflect.ValueOf(ai)) + return nil + } + // Otherwise it's invalid. + fallthrough + default: + d.saveError(&UnmarshalTypeError{Value: "array", Type: v.Type(), Offset: int64(d.off)}) + d.skip() + return nil + case reflect.Array, reflect.Slice: + break + } + + i := 0 + for { + // Look ahead for ] - can only happen on first iteration. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndArray { + break + } + + // Get element of array, growing if necessary. + if v.Kind() == reflect.Slice { + // Grow slice if necessary + if i >= v.Cap() { + newcap := v.Cap() + v.Cap()/2 + if newcap < 4 { + newcap = 4 + } + newv := reflect.MakeSlice(v.Type(), v.Len(), newcap) + reflect.Copy(newv, v) + v.Set(newv) + } + if i >= v.Len() { + v.SetLen(i + 1) + } + } + + if i < v.Len() { + // Decode into element. + if err := d.value(v.Index(i)); err != nil { + return err + } + } else { + // Ran out of fixed array: skip. + if err := d.value(reflect.Value{}); err != nil { + return err + } + } + i++ + + // Next token must be , or ]. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode == scanEndArray { + break + } + if d.opcode != scanArrayValue { + panic(phasePanicMsg) + } + } + + if i < v.Len() { + if v.Kind() == reflect.Array { + // Array. Zero the rest. + z := reflect.Zero(v.Type().Elem()) + for ; i < v.Len(); i++ { + v.Index(i).Set(z) + } + } else { + v.SetLen(i) + } + } + if i == 0 && v.Kind() == reflect.Slice { + v.Set(reflect.MakeSlice(v.Type(), 0, 0)) + } + return nil +} + +var nullLiteral = []byte("null") +var textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() + +// object consumes an object from d.data[d.off-1:], decoding into v. +// The first byte ('{') of the object has been read already. +func (d *decodeState) object(v reflect.Value) error { + // Check for unmarshaler. + u, ut, pv := indirect(v, false) + if u != nil { + start := d.readIndex() + d.skip() + return u.UnmarshalJSON(d.data[start:d.off]) + } + if ut != nil { + d.saveError(&UnmarshalTypeError{Value: "object", Type: v.Type(), Offset: int64(d.off)}) + d.skip() + return nil + } + v = pv + t := v.Type() + + // Decoding into nil interface? Switch to non-reflect code. + if v.Kind() == reflect.Interface && v.NumMethod() == 0 { + oi := d.objectInterface() + v.Set(reflect.ValueOf(oi)) + return nil + } + + var fields structFields + + // Check type of target: + // struct or + // map[T1]T2 where T1 is string, an integer type, + // or an encoding.TextUnmarshaler + switch v.Kind() { + case reflect.Map: + // Map key must either have string kind, have an integer kind, + // or be an encoding.TextUnmarshaler. + switch t.Key().Kind() { + case reflect.String, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + default: + if !reflect.PointerTo(t.Key()).Implements(textUnmarshalerType) { + d.saveError(&UnmarshalTypeError{Value: "object", Type: t, Offset: int64(d.off)}) + d.skip() + return nil + } + } + if v.IsNil() { + v.Set(reflect.MakeMap(t)) + } + case reflect.Struct: + fields = cachedTypeFields(t) + // ok + default: + d.saveError(&UnmarshalTypeError{Value: "object", Type: t, Offset: int64(d.off)}) + d.skip() + return nil + } + + var mapElem reflect.Value + var origErrorContext errorContext + if d.errorContext != nil { + origErrorContext = *d.errorContext + } + + var keys []string + + for { + // Read opening " of string key or closing }. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndObject { + // closing } - can only happen on first iteration. + break + } + if d.opcode != scanBeginLiteral { + panic(phasePanicMsg) + } + + // Read key. + start := d.readIndex() + d.rescanLiteral() + item := d.data[start:d.readIndex()] + key, ok := unquoteBytes(item) + if !ok { + panic(phasePanicMsg) + } + + keys = append(keys, string(key)) + + // Figure out field corresponding to key. + var subv reflect.Value + destring := false // whether the value is wrapped in a string to be decoded first + + if v.Kind() == reflect.Map { + elemType := t.Elem() + if !mapElem.IsValid() { + mapElem = reflect.New(elemType).Elem() + } else { + mapElem.Set(reflect.Zero(elemType)) + } + subv = mapElem + } else { + var f *field + if i, ok := fields.nameIndex[string(key)]; ok { + // Found an exact name match. + f = &fields.list[i] + } else { + // Fall back to the expensive case-insensitive + // linear search. + for i := range fields.list { + ff := &fields.list[i] + if ff.equalFold(ff.nameBytes, key) { + f = ff + break + } + } + } + if f != nil { + subv = v + destring = f.quoted + for _, i := range f.index { + if subv.Kind() == reflect.Pointer { + if subv.IsNil() { + // If a struct embeds a pointer to an unexported type, + // it is not possible to set a newly allocated value + // since the field is unexported. + // + // See https://golang.org/issue/21357 + if !subv.CanSet() { + d.saveError(fmt.Errorf("json: cannot set embedded pointer to unexported struct: %v", subv.Type().Elem())) + // Invalidate subv to ensure d.value(subv) skips over + // the JSON value without assigning it to subv. + subv = reflect.Value{} + destring = false + break + } + subv.Set(reflect.New(subv.Type().Elem())) + } + subv = subv.Elem() + } + subv = subv.Field(i) + } + if d.errorContext == nil { + d.errorContext = new(errorContext) + } + d.errorContext.FieldStack = append(d.errorContext.FieldStack, f.name) + d.errorContext.Struct = t + } else if d.disallowUnknownFields { + d.saveError(fmt.Errorf("json: unknown field %q", key)) + } + } + + // Read : before value. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode != scanObjectKey { + panic(phasePanicMsg) + } + d.scanWhile(scanSkipSpace) + + if destring { + switch qv := d.valueQuoted().(type) { + case nil: + if err := d.literalStore(nullLiteral, subv, false); err != nil { + return err + } + case string: + if err := d.literalStore([]byte(qv), subv, true); err != nil { + return err + } + default: + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal unquoted value into %v", subv.Type())) + } + } else { + if err := d.value(subv); err != nil { + return err + } + } + + // Write value back to map; + // if using struct, subv points into struct already. + if v.Kind() == reflect.Map { + kt := t.Key() + var kv reflect.Value + switch { + case reflect.PointerTo(kt).Implements(textUnmarshalerType): + kv = reflect.New(kt) + if err := d.literalStore(item, kv, true); err != nil { + return err + } + kv = kv.Elem() + case kt.Kind() == reflect.String: + kv = reflect.ValueOf(key).Convert(kt) + default: + switch kt.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + s := string(key) + n, err := strconv.ParseInt(s, 10, 64) + if err != nil || reflect.Zero(kt).OverflowInt(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: kt, Offset: int64(start + 1)}) + break + } + kv = reflect.ValueOf(n).Convert(kt) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + s := string(key) + n, err := strconv.ParseUint(s, 10, 64) + if err != nil || reflect.Zero(kt).OverflowUint(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: kt, Offset: int64(start + 1)}) + break + } + kv = reflect.ValueOf(n).Convert(kt) + default: + panic("json: Unexpected key type") // should never occur + } + } + if kv.IsValid() { + v.SetMapIndex(kv, subv) + } + } + + // Next token must be , or }. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.errorContext != nil { + // Reset errorContext to its original state. + // Keep the same underlying array for FieldStack, to reuse the + // space and avoid unnecessary allocs. + d.errorContext.FieldStack = d.errorContext.FieldStack[:len(origErrorContext.FieldStack)] + d.errorContext.Struct = origErrorContext.Struct + } + if d.opcode == scanEndObject { + break + } + if d.opcode != scanObjectValue { + panic(phasePanicMsg) + } + } + + if v.Kind() == reflect.Map { + d.lastKeys = keys + } + return nil +} + +// convertNumber converts the number literal s to a float64 or a Number +// depending on the setting of d.useNumber. +func (d *decodeState) convertNumber(s string) (any, error) { + if d.useNumber { + return Number(s), nil + } + f, err := strconv.ParseFloat(s, 64) + if err != nil { + return nil, &UnmarshalTypeError{Value: "number " + s, Type: reflect.TypeOf(0.0), Offset: int64(d.off)} + } + return f, nil +} + +var numberType = reflect.TypeOf(Number("")) + +// literalStore decodes a literal stored in item into v. +// +// fromQuoted indicates whether this literal came from unwrapping a +// string from the ",string" struct tag option. this is used only to +// produce more helpful error messages. +func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool) error { + // Check for unmarshaler. + if len(item) == 0 { + //Empty string given + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + return nil + } + isNull := item[0] == 'n' // null + u, ut, pv := indirect(v, isNull) + if u != nil { + return u.UnmarshalJSON(item) + } + if ut != nil { + if item[0] != '"' { + if fromQuoted { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + return nil + } + val := "number" + switch item[0] { + case 'n': + val = "null" + case 't', 'f': + val = "bool" + } + d.saveError(&UnmarshalTypeError{Value: val, Type: v.Type(), Offset: int64(d.readIndex())}) + return nil + } + s, ok := unquoteBytes(item) + if !ok { + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + panic(phasePanicMsg) + } + return ut.UnmarshalText(s) + } + + v = pv + + switch c := item[0]; c { + case 'n': // null + // The main parser checks that only true and false can reach here, + // but if this was a quoted string input, it could be anything. + if fromQuoted && string(item) != "null" { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + break + } + switch v.Kind() { + case reflect.Interface, reflect.Pointer, reflect.Map, reflect.Slice: + v.Set(reflect.Zero(v.Type())) + // otherwise, ignore null for primitives/string + } + case 't', 'f': // true, false + value := item[0] == 't' + // The main parser checks that only true and false can reach here, + // but if this was a quoted string input, it could be anything. + if fromQuoted && string(item) != "true" && string(item) != "false" { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + break + } + switch v.Kind() { + default: + if fromQuoted { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + } else { + d.saveError(&UnmarshalTypeError{Value: "bool", Type: v.Type(), Offset: int64(d.readIndex())}) + } + case reflect.Bool: + v.SetBool(value) + case reflect.Interface: + if v.NumMethod() == 0 { + v.Set(reflect.ValueOf(value)) + } else { + d.saveError(&UnmarshalTypeError{Value: "bool", Type: v.Type(), Offset: int64(d.readIndex())}) + } + } + + case '"': // string + s, ok := unquoteBytes(item) + if !ok { + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + panic(phasePanicMsg) + } + switch v.Kind() { + default: + d.saveError(&UnmarshalTypeError{Value: "string", Type: v.Type(), Offset: int64(d.readIndex())}) + case reflect.Slice: + if v.Type().Elem().Kind() != reflect.Uint8 { + d.saveError(&UnmarshalTypeError{Value: "string", Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + b := make([]byte, base64.StdEncoding.DecodedLen(len(s))) + n, err := base64.StdEncoding.Decode(b, s) + if err != nil { + d.saveError(err) + break + } + v.SetBytes(b[:n]) + case reflect.String: + if v.Type() == numberType && !isValidNumber(string(s)) { + return fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", item) + } + v.SetString(string(s)) + case reflect.Interface: + if v.NumMethod() == 0 { + v.Set(reflect.ValueOf(string(s))) + } else { + d.saveError(&UnmarshalTypeError{Value: "string", Type: v.Type(), Offset: int64(d.readIndex())}) + } + } + + default: // number + if c != '-' && (c < '0' || c > '9') { + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + panic(phasePanicMsg) + } + s := string(item) + switch v.Kind() { + default: + if v.Kind() == reflect.String && v.Type() == numberType { + // s must be a valid number, because it's + // already been tokenized. + v.SetString(s) + break + } + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + d.saveError(&UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())}) + case reflect.Interface: + n, err := d.convertNumber(s) + if err != nil { + d.saveError(err) + break + } + if v.NumMethod() != 0 { + d.saveError(&UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.Set(reflect.ValueOf(n)) + + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + n, err := strconv.ParseInt(s, 10, 64) + if err != nil || v.OverflowInt(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.SetInt(n) + + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + n, err := strconv.ParseUint(s, 10, 64) + if err != nil || v.OverflowUint(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.SetUint(n) + + case reflect.Float32, reflect.Float64: + n, err := strconv.ParseFloat(s, v.Type().Bits()) + if err != nil || v.OverflowFloat(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.SetFloat(n) + } + } + return nil +} + +// The xxxInterface routines build up a value to be stored +// in an empty interface. They are not strictly necessary, +// but they avoid the weight of reflection in this common case. + +// valueInterface is like value but returns interface{} +func (d *decodeState) valueInterface() (val any) { + switch d.opcode { + default: + panic(phasePanicMsg) + case scanBeginArray: + val = d.arrayInterface() + d.scanNext() + case scanBeginObject: + val = d.objectInterface() + d.scanNext() + case scanBeginLiteral: + val = d.literalInterface() + } + return +} + +// arrayInterface is like array but returns []interface{}. +func (d *decodeState) arrayInterface() []any { + var v = make([]any, 0) + for { + // Look ahead for ] - can only happen on first iteration. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndArray { + break + } + + v = append(v, d.valueInterface()) + + // Next token must be , or ]. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode == scanEndArray { + break + } + if d.opcode != scanArrayValue { + panic(phasePanicMsg) + } + } + return v +} + +// objectInterface is like object but returns map[string]interface{}. +func (d *decodeState) objectInterface() map[string]any { + m := make(map[string]any) + for { + // Read opening " of string key or closing }. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndObject { + // closing } - can only happen on first iteration. + break + } + if d.opcode != scanBeginLiteral { + panic(phasePanicMsg) + } + + // Read string key. + start := d.readIndex() + d.rescanLiteral() + item := d.data[start:d.readIndex()] + key, ok := unquote(item) + if !ok { + panic(phasePanicMsg) + } + + // Read : before value. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode != scanObjectKey { + panic(phasePanicMsg) + } + d.scanWhile(scanSkipSpace) + + // Read value. + m[key] = d.valueInterface() + + // Next token must be , or }. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode == scanEndObject { + break + } + if d.opcode != scanObjectValue { + panic(phasePanicMsg) + } + } + return m +} + +// literalInterface consumes and returns a literal from d.data[d.off-1:] and +// it reads the following byte ahead. The first byte of the literal has been +// read already (that's how the caller knows it's a literal). +func (d *decodeState) literalInterface() any { + // All bytes inside literal return scanContinue op code. + start := d.readIndex() + d.rescanLiteral() + + item := d.data[start:d.readIndex()] + + switch c := item[0]; c { + case 'n': // null + return nil + + case 't', 'f': // true, false + return c == 't' + + case '"': // string + s, ok := unquote(item) + if !ok { + panic(phasePanicMsg) + } + return s + + default: // number + if c != '-' && (c < '0' || c > '9') { + panic(phasePanicMsg) + } + n, err := d.convertNumber(string(item)) + if err != nil { + d.saveError(err) + } + return n + } +} + +// getu4 decodes \uXXXX from the beginning of s, returning the hex value, +// or it returns -1. +func getu4(s []byte) rune { + if len(s) < 6 || s[0] != '\\' || s[1] != 'u' { + return -1 + } + var r rune + for _, c := range s[2:6] { + switch { + case '0' <= c && c <= '9': + c = c - '0' + case 'a' <= c && c <= 'f': + c = c - 'a' + 10 + case 'A' <= c && c <= 'F': + c = c - 'A' + 10 + default: + return -1 + } + r = r*16 + rune(c) + } + return r +} + +// unquote converts a quoted JSON string literal s into an actual string t. +// The rules are different than for Go, so cannot use strconv.Unquote. +func unquote(s []byte) (t string, ok bool) { + s, ok = unquoteBytes(s) + t = string(s) + return +} + +func unquoteBytes(s []byte) (t []byte, ok bool) { + if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' { + return + } + s = s[1 : len(s)-1] + + // Check for unusual characters. If there are none, + // then no unquoting is needed, so return a slice of the + // original bytes. + r := 0 + for r < len(s) { + c := s[r] + if c == '\\' || c == '"' || c < ' ' { + break + } + if c < utf8.RuneSelf { + r++ + continue + } + rr, size := utf8.DecodeRune(s[r:]) + if rr == utf8.RuneError && size == 1 { + break + } + r += size + } + if r == len(s) { + return s, true + } + + b := make([]byte, len(s)+2*utf8.UTFMax) + w := copy(b, s[0:r]) + for r < len(s) { + // Out of room? Can only happen if s is full of + // malformed UTF-8 and we're replacing each + // byte with RuneError. + if w >= len(b)-2*utf8.UTFMax { + nb := make([]byte, (len(b)+utf8.UTFMax)*2) + copy(nb, b[0:w]) + b = nb + } + switch c := s[r]; { + case c == '\\': + r++ + if r >= len(s) { + return + } + switch s[r] { + default: + return + case '"', '\\', '/', '\'': + b[w] = s[r] + r++ + w++ + case 'b': + b[w] = '\b' + r++ + w++ + case 'f': + b[w] = '\f' + r++ + w++ + case 'n': + b[w] = '\n' + r++ + w++ + case 'r': + b[w] = '\r' + r++ + w++ + case 't': + b[w] = '\t' + r++ + w++ + case 'u': + r-- + rr := getu4(s[r:]) + if rr < 0 { + return + } + r += 6 + if utf16.IsSurrogate(rr) { + rr1 := getu4(s[r:]) + if dec := utf16.DecodeRune(rr, rr1); dec != unicode.ReplacementChar { + // A valid pair; consume. + r += 6 + w += utf8.EncodeRune(b[w:], dec) + break + } + // Invalid surrogate; fall back to replacement rune. + rr = unicode.ReplacementChar + } + w += utf8.EncodeRune(b[w:], rr) + } + + // Quote, control characters are invalid. + case c == '"', c < ' ': + return + + // ASCII + case c < utf8.RuneSelf: + b[w] = c + r++ + w++ + + // Coerce to well-formed UTF-8. + default: + rr, size := utf8.DecodeRune(s[r:]) + r += size + w += utf8.EncodeRune(b[w:], rr) + } + } + return b[0:w], true +} diff --git a/vendor/github.com/evanphx/json-patch/v5/internal/json/encode.go b/vendor/github.com/evanphx/json-patch/v5/internal/json/encode.go new file mode 100644 index 0000000000..2e6eca4487 --- /dev/null +++ b/vendor/github.com/evanphx/json-patch/v5/internal/json/encode.go @@ -0,0 +1,1486 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package json implements encoding and decoding of JSON as defined in +// RFC 7159. The mapping between JSON and Go values is described +// in the documentation for the Marshal and Unmarshal functions. +// +// See "JSON and Go" for an introduction to this package: +// https://golang.org/doc/articles/json_and_go.html +package json + +import ( + "bytes" + "encoding" + "encoding/base64" + "fmt" + "math" + "reflect" + "sort" + "strconv" + "strings" + "sync" + "unicode" + "unicode/utf8" +) + +// Marshal returns the JSON encoding of v. +// +// Marshal traverses the value v recursively. +// If an encountered value implements the Marshaler interface +// and is not a nil pointer, Marshal calls its MarshalJSON method +// to produce JSON. If no MarshalJSON method is present but the +// value implements encoding.TextMarshaler instead, Marshal calls +// its MarshalText method and encodes the result as a JSON string. +// The nil pointer exception is not strictly necessary +// but mimics a similar, necessary exception in the behavior of +// UnmarshalJSON. +// +// Otherwise, Marshal uses the following type-dependent default encodings: +// +// Boolean values encode as JSON booleans. +// +// Floating point, integer, and Number values encode as JSON numbers. +// +// String values encode as JSON strings coerced to valid UTF-8, +// replacing invalid bytes with the Unicode replacement rune. +// So that the JSON will be safe to embed inside HTML