diff --git a/third_party/go/patches/cel-fix-antlr.patch b/third_party/go/patches/cel-fix-antlr.patch
new file mode 100644
index 0000000..5c5636a
--- /dev/null
+++ b/third_party/go/patches/cel-fix-antlr.patch
@@ -0,0 +1,83 @@
+From a0f8916f104566a2538a70153c016de7c5d9f304 Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 16 Mar 2022 18:54:11 +0100
+Subject: [PATCH] Use conventional import path for antlr
+
+---
+ WORKSPACE              | 9 +++++----
+ checker/BUILD.bazel    | 2 +-
+ parser/BUILD.bazel     | 4 ++--
+ parser/gen/BUILD.bazel | 2 +-
+ 4 files changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/WORKSPACE b/WORKSPACE
+index 4238e7a..b62cf15 100644
+--- a/WORKSPACE
++++ b/WORKSPACE
+@@ -99,11 +99,12 @@ go_repository(
+     version = "v0.3.2",
+ )
+ 
+-# Antlr deps to pickup golang concurrency fixes 4/30/2020
++# Antlr deps
+ go_repository(
+-    name = "com_github_antlr",
+-    commit = "621b933c7a7f01c67ae9de15103151fa0f9d6d90",
+-    importpath = "github.com/antlr/antlr4",
++    name = "com_github_antlr_antlr4_runtime_go_antlr",
++    importpath = "github.com/antlr/antlr4/runtime/Go/antlr",
++    sum = "h1:zvkJv+9Pxm1nnEMcKnShREt4qtduHKz4iw4AB4ul0Ao=",
++    version = "v0.0.0-20220209173558-ad29539cd2e9",
+ )
+ 
+ # CEL Spec deps
+diff --git a/checker/BUILD.bazel b/checker/BUILD.bazel
+index 2ef326b..bec40b6 100644
+--- a/checker/BUILD.bazel
++++ b/checker/BUILD.bazel
+@@ -54,7 +54,7 @@ go_test(
+         "//test:go_default_library",
+         "//test/proto2pb:go_default_library",
+         "//test/proto3pb:go_default_library",
+-        "@com_github_antlr//runtime/Go/antlr:go_default_library",
++        "@com_github_antlr_antlr4_runtime_go_antlr//:go_default_library",
+         "@org_golang_google_protobuf//proto:go_default_library",
+     ],
+ )
+diff --git a/parser/BUILD.bazel b/parser/BUILD.bazel
+index a1917b4..b76e6e4 100644
+--- a/parser/BUILD.bazel
++++ b/parser/BUILD.bazel
+@@ -23,7 +23,7 @@ go_library(
+         "//common/operators:go_default_library",
+         "//common/runes:go_default_library",
+         "//parser/gen:go_default_library",
+-        "@com_github_antlr//runtime/Go/antlr:go_default_library",
++        "@com_github_antlr_antlr4_runtime_go_antlr//:go_default_library",
+         "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//types/known/structpb:go_default_library",
+@@ -45,7 +45,7 @@ go_test(
+         "//common/debug:go_default_library",
+         "//parser/gen:go_default_library",
+         "//test:go_default_library",
+-        "@com_github_antlr//runtime/Go/antlr:go_default_library",
++        "@com_github_antlr_antlr4_runtime_go_antlr//:go_default_library",
+         "@org_golang_google_protobuf//proto:go_default_library",
+     ],
+ )
+diff --git a/parser/gen/BUILD.bazel b/parser/gen/BUILD.bazel
+index 78e0432..2271131 100644
+--- a/parser/gen/BUILD.bazel
++++ b/parser/gen/BUILD.bazel
+@@ -21,6 +21,6 @@ go_library(
+     ],
+     importpath = "github.com/google/cel-go/parser/gen",
+     deps = [
+-        "@com_github_antlr//runtime/Go/antlr:go_default_library",
++        "@com_github_antlr_antlr4_runtime_go_antlr//:go_default_library",
+     ],
+ )
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/cel-fix-googleapis.patch b/third_party/go/patches/cel-fix-googleapis.patch
new file mode 100644
index 0000000..518cdd0
--- /dev/null
+++ b/third_party/go/patches/cel-fix-googleapis.patch
@@ -0,0 +1,256 @@
+From 86ef097e120745353232555f1d87382cac5ce2f0 Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Mon, 21 Mar 2022 16:11:14 +0100
+Subject: [PATCH] Fix googleapis import paths
+
+---
+ cel/BUILD.bazel               |  4 ++--
+ checker/BUILD.bazel           |  2 +-
+ checker/decls/BUILD.bazel     |  2 +-
+ common/BUILD.bazel            |  2 +-
+ common/containers/BUILD.bazel |  4 ++--
+ common/debug/BUILD.bazel      |  2 +-
+ common/types/BUILD.bazel      |  4 ++--
+ common/types/pb/BUILD.bazel   |  2 +-
+ common/types/ref/BUILD.bazel  |  2 +-
+ ext/BUILD.bazel               |  2 +-
+ interpreter/BUILD.bazel       |  4 ++--
+ parser/BUILD.bazel            |  2 +-
+ server/BUILD.bazel            | 12 ++++++------
+ test/BUILD.bazel              |  2 +-
+ 14 files changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/cel/BUILD.bazel b/cel/BUILD.bazel
+index aed8274..6a5b8f2 100644
+--- a/cel/BUILD.bazel
++++ b/cel/BUILD.bazel
+@@ -27,7 +27,7 @@ go_library(
+         "//interpreter:go_default_library",
+         "//interpreter/functions:go_default_library",
+         "//parser:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//reflect/protodesc:go_default_library",
+         "@org_golang_google_protobuf//reflect/protoreflect:go_default_library",
+@@ -59,6 +59,6 @@ go_test(
+         "//test/proto2pb:go_default_library",
+         "//test/proto3pb:go_default_library",
+         "@io_bazel_rules_go//proto/wkt:descriptor_go_proto",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+     ],
+ )
+diff --git a/checker/BUILD.bazel b/checker/BUILD.bazel
+index 0f6e469..0873707 100644
+--- a/checker/BUILD.bazel
++++ b/checker/BUILD.bazel
+@@ -28,7 +28,7 @@ go_library(
+         "//common/types/pb:go_default_library",
+         "//common/types/ref:go_default_library",
+         "//parser:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//types/known/emptypb:go_default_library",
+         "@org_golang_google_protobuf//types/known/structpb:go_default_library",
+diff --git a/checker/decls/BUILD.bazel b/checker/decls/BUILD.bazel
+index 5a24f1d..9c6bfbc 100644
+--- a/checker/decls/BUILD.bazel
++++ b/checker/decls/BUILD.bazel
+@@ -13,7 +13,7 @@ go_library(
+     ],
+     importpath = "github.com/google/cel-go/checker/decls",
+     deps = [
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//types/known/emptypb:go_default_library",
+         "@org_golang_google_protobuf//types/known/structpb:go_default_library",
+     ],
+diff --git a/common/BUILD.bazel b/common/BUILD.bazel
+index 9e4ad65..d306934 100644
+--- a/common/BUILD.bazel
++++ b/common/BUILD.bazel
+@@ -16,7 +16,7 @@ go_library(
+     importpath = "github.com/google/cel-go/common",
+     deps = [
+         "//common/runes:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_x_text//width:go_default_library",
+     ],
+ )
+diff --git a/common/containers/BUILD.bazel b/common/containers/BUILD.bazel
+index 18142d9..3c45794 100644
+--- a/common/containers/BUILD.bazel
++++ b/common/containers/BUILD.bazel
+@@ -12,7 +12,7 @@ go_library(
+     ],
+     importpath = "github.com/google/cel-go/common/containers",
+     deps = [
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+     ],
+ )
+ 
+@@ -26,6 +26,6 @@ go_test(
+         ":go_default_library",
+     ],
+     deps = [
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+     ],
+ )
+diff --git a/common/debug/BUILD.bazel b/common/debug/BUILD.bazel
+index cf5c5d2..6db7f55 100644
+--- a/common/debug/BUILD.bazel
++++ b/common/debug/BUILD.bazel
+@@ -13,6 +13,6 @@ go_library(
+     importpath = "github.com/google/cel-go/common/debug",
+     deps = [
+         "//common:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+     ],
+ )
+diff --git a/common/types/BUILD.bazel b/common/types/BUILD.bazel
+index 32789f5..e3970fd 100644
+--- a/common/types/BUILD.bazel
++++ b/common/types/BUILD.bazel
+@@ -37,7 +37,7 @@ go_library(
+         "//common/types/ref:go_default_library",
+         "//common/types/traits:go_default_library",
+         "@com_github_stoewer_go_strcase//:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//encoding/protojson:go_default_library",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//reflect/protoreflect:go_default_library",
+@@ -75,7 +75,7 @@ go_test(
+         "//common/types/ref:go_default_library",
+         "//test:go_default_library",
+         "//test/proto3pb:test_all_types_go_proto",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//encoding/protojson:go_default_library",
+         "@org_golang_google_protobuf//types/known/anypb:go_default_library",
+         "@org_golang_google_protobuf//types/known/durationpb:go_default_library",
+diff --git a/common/types/pb/BUILD.bazel b/common/types/pb/BUILD.bazel
+index b0c79a7..37cd0a7 100644
+--- a/common/types/pb/BUILD.bazel
++++ b/common/types/pb/BUILD.bazel
+@@ -16,7 +16,7 @@ go_library(
+     ],
+     importpath = "github.com/google/cel-go/common/types/pb",
+     deps = [
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//reflect/protoreflect:go_default_library",
+         "@org_golang_google_protobuf//reflect/protoregistry:go_default_library",
+diff --git a/common/types/ref/BUILD.bazel b/common/types/ref/BUILD.bazel
+index 1d0f468..9243b47 100644
+--- a/common/types/ref/BUILD.bazel
++++ b/common/types/ref/BUILD.bazel
+@@ -13,7 +13,7 @@ go_library(
+     ],
+     importpath = "github.com/google/cel-go/common/types/ref",
+     deps = [
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//reflect/protoreflect:go_default_library",
+     ],
+diff --git a/ext/BUILD.bazel b/ext/BUILD.bazel
+index 2b98ad3..68a9d72 100644
+--- a/ext/BUILD.bazel
++++ b/ext/BUILD.bazel
+@@ -19,7 +19,7 @@ go_library(
+         "//common/types:go_default_library",
+         "//common/types/ref:go_default_library",
+         "//interpreter/functions:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+     ],
+ )
+ 
+diff --git a/interpreter/BUILD.bazel b/interpreter/BUILD.bazel
+index 2f4079f..6b30db8 100644
+--- a/interpreter/BUILD.bazel
++++ b/interpreter/BUILD.bazel
+@@ -30,7 +30,7 @@ go_library(
+         "//common/types/ref:go_default_library",
+         "//common/types/traits:go_default_library",
+         "//interpreter/functions:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//types/known/durationpb:go_default_library",
+         "@org_golang_google_protobuf//types/known/structpb:go_default_library",
+@@ -63,7 +63,7 @@ go_test(
+         "//test:go_default_library",
+         "//test/proto2pb:go_default_library",
+         "//test/proto3pb:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//types/known/anypb:go_default_library",
+     ],
+diff --git a/parser/BUILD.bazel b/parser/BUILD.bazel
+index b76e6e4..c098fe6 100644
+--- a/parser/BUILD.bazel
++++ b/parser/BUILD.bazel
+@@ -24,7 +24,7 @@ go_library(
+         "//common/runes:go_default_library",
+         "//parser/gen:go_default_library",
+         "@com_github_antlr_antlr4_runtime_go_antlr//:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//types/known/structpb:go_default_library",
+     ],
+diff --git a/server/BUILD.bazel b/server/BUILD.bazel
+index 7174aa9..a4d9ff6 100644
+--- a/server/BUILD.bazel
++++ b/server/BUILD.bazel
+@@ -19,9 +19,9 @@ go_library(
+         "//common/types/traits:go_default_library",
+         "@com_google_cel_spec//proto/test/v1/proto2:test_all_types_go_proto",
+         "@com_google_cel_spec//proto/test/v1/proto3:test_all_types_go_proto",
+-        "@org_golang_google_genproto//googleapis/api/expr/conformance/v1alpha1:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
+-        "@org_golang_google_genproto//googleapis/rpc/status:go_default_library",
++        "@go_googleapis//google/api/expr/conformance/v1alpha1:conformance_go_proto",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
++        "@go_googleapis//google/rpc/status:status_go_proto",
+         "@org_golang_google_grpc//codes:go_default_library",
+         "@org_golang_google_grpc//status:go_default_library",
+         "@org_golang_google_protobuf//proto:go_default_library",
+@@ -44,8 +44,8 @@ go_test(
+         "//common/operators:go_default_library",
+         "//test:go_default_library",
+         "@com_google_cel_spec//tools/celrpc:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/conformance/v1alpha1:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
+-        "@org_golang_google_genproto//googleapis/rpc/status:go_default_library",
++        "@go_googleapis//google/api/expr/conformance/v1alpha1:conformance_go_proto",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
++        "@go_googleapis//google/rpc/status:status_go_proto",
+     ],
+ )
+diff --git a/test/BUILD.bazel b/test/BUILD.bazel
+index 0d39c70..3b8c460 100644
+--- a/test/BUILD.bazel
++++ b/test/BUILD.bazel
+@@ -20,7 +20,7 @@ go_library(
+     importpath = "github.com/google/cel-go/test",
+     deps = [
+         "//common/operators:go_default_library",
+-        "@org_golang_google_genproto//googleapis/api/expr/v1alpha1:go_default_library",
++        "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
+         "@org_golang_google_protobuf//proto:go_default_library",
+         "@org_golang_google_protobuf//types/known/structpb:go_default_library",
+     ],
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/containerd-netns-statedir.patch b/third_party/go/patches/containerd-netns-statedir.patch
deleted file mode 100644
index a693eb7..0000000
--- a/third_party/go/patches/containerd-netns-statedir.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 3e7a8cebf9d40487adc7d4a22b5c628add5e7eac Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@nexantic.com>
-Date: Wed, 27 Jan 2021 13:05:30 +0100
-Subject: [PATCH] Move netns directory into StateDir
-
----
- pkg/netns/netns_unix.go   | 12 +++++-------
- pkg/server/sandbox_run.go |  3 ++-
- 2 files changed, 7 insertions(+), 8 deletions(-)
-
-diff --git a/pkg/netns/netns_unix.go b/pkg/netns/netns_unix.go
-index 7449e235..b31716cb 100644
---- a/pkg/netns/netns_unix.go
-+++ b/pkg/netns/netns_unix.go
-@@ -48,14 +48,12 @@ import (
- 	osinterface "github.com/containerd/cri/pkg/os"
- )
- 
--const nsRunDir = "/var/run/netns"
--
- // Some of the following functions are migrated from
- // https://github.com/containernetworking/plugins/blob/master/pkg/testutils/netns_linux.go
- 
- // newNS creates a new persistent (bind-mounted) network namespace and returns the
- // path to the network namespace.
--func newNS() (nsPath string, err error) {
-+func newNS(baseDir string) (nsPath string, err error) {
- 	b := make([]byte, 16)
- 	if _, err := rand.Reader.Read(b); err != nil {
- 		return "", errors.Wrap(err, "failed to generate random netns name")
-@@ -64,13 +62,13 @@ func newNS() (nsPath string, err error) {
- 	// Create the directory for mounting network namespaces
- 	// This needs to be a shared mountpoint in case it is mounted in to
- 	// other namespaces (containers)
--	if err := os.MkdirAll(nsRunDir, 0755); err != nil {
-+	if err := os.MkdirAll(baseDir, 0755); err != nil {
- 		return "", err
- 	}
- 
- 	// create an empty file at the mount point
- 	nsName := fmt.Sprintf("cni-%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:])
--	nsPath = path.Join(nsRunDir, nsName)
-+	nsPath = path.Join(baseDir, nsName)
- 	mountPointFd, err := os.Create(nsPath)
- 	if err != nil {
- 		return "", err
-@@ -164,8 +162,8 @@ type NetNS struct {
- }
- 
- // NewNetNS creates a network namespace.
--func NewNetNS() (*NetNS, error) {
--	path, err := newNS()
-+func NewNetNS(baseDir string) (*NetNS, error) {
-+	path, err := newNS(baseDir)
- 	if err != nil {
- 		return nil, errors.Wrap(err, "failed to setup netns")
- 	}
-diff --git a/pkg/server/sandbox_run.go b/pkg/server/sandbox_run.go
-index dd4c51e3..32a2d6e8 100644
---- a/pkg/server/sandbox_run.go
-+++ b/pkg/server/sandbox_run.go
-@@ -19,6 +19,7 @@ package server
- import (
- 	"encoding/json"
- 	"math"
-+	"path/filepath"
- 	goruntime "runtime"
- 	"strings"
- 
-@@ -117,7 +118,7 @@ func (c *criService) RunPodSandbox(ctx context.Context, r *runtime.RunPodSandbox
- 		// handle. NetNSPath in sandbox metadata and NetNS is non empty only for non host network
- 		// namespaces. If the pod is in host network namespace then both are empty and should not
- 		// be used.
--		sandbox.NetNS, err = netns.NewNetNS()
-+		sandbox.NetNS, err = netns.NewNetNS(filepath.Join(c.config.StateDir, "netns"))
- 		if err != nil {
- 			return nil, errors.Wrapf(err, "failed to create network namespace for sandbox %q", id)
- 		}
--- 
-2.25.1
-
diff --git a/third_party/go/patches/containerd-no-tracing.patch b/third_party/go/patches/containerd-no-tracing.patch
new file mode 100644
index 0000000..ee6f8c8
--- /dev/null
+++ b/third_party/go/patches/containerd-no-tracing.patch
@@ -0,0 +1,43 @@
+From 26ac5a008b349b77288d29cc483ea5d6129f298c Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 16 Mar 2022 18:35:44 +0100
+Subject: [PATCH] Disable tracing for otel compatibility
+
+---
+ cmd/containerd/builtins.go     | 1 -
+ cmd/containerd/command/main.go | 2 --
+ 2 files changed, 3 deletions(-)
+
+diff --git a/cmd/containerd/builtins.go b/cmd/containerd/builtins.go
+index 8c6f1fe86..dd8b1d3d9 100644
+--- a/cmd/containerd/builtins.go
++++ b/cmd/containerd/builtins.go
+@@ -36,5 +36,4 @@ import (
+ 	_ "github.com/containerd/containerd/services/snapshots"
+ 	_ "github.com/containerd/containerd/services/tasks"
+ 	_ "github.com/containerd/containerd/services/version"
+-	_ "github.com/containerd/containerd/tracing/plugin"
+ )
+diff --git a/cmd/containerd/command/main.go b/cmd/containerd/command/main.go
+index f549e08a3..dfde3599e 100644
+--- a/cmd/containerd/command/main.go
++++ b/cmd/containerd/command/main.go
+@@ -35,7 +35,6 @@ import (
+ 	"github.com/containerd/containerd/services/server"
+ 	srvconfig "github.com/containerd/containerd/services/server/config"
+ 	"github.com/containerd/containerd/sys"
+-	"github.com/containerd/containerd/tracing"
+ 	"github.com/containerd/containerd/version"
+ 	"github.com/sirupsen/logrus"
+ 	"github.com/urfave/cli"
+@@ -370,7 +369,6 @@ func setLogFormat(config *srvconfig.Config) error {
+ }
+ 
+ func setLogHooks() {
+-	logrus.StandardLogger().AddHook(tracing.NewLogrusHook())
+ }
+ 
+ func dumpStacks(writeToFile bool) {
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/coredns-remove-unused-plugins.patch b/third_party/go/patches/coredns-remove-unused-plugins.patch
index 9180d48..e952585 100644
--- a/third_party/go/patches/coredns-remove-unused-plugins.patch
+++ b/third_party/go/patches/coredns-remove-unused-plugins.patch
@@ -1,202 +1,156 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From b8a216a10775163dac6267127c35c9230ccbc5f7 Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@nexantic.com>
-Date: Mon, 27 Jul 2020 14:25:03 +0200
-Subject: [PATCH] Removed unused plugins
+From 355d38f38cf241b91a862795892bcb87c5729d2e Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 16 Mar 2022 13:39:39 +0100
+Subject: [PATCH] Remove unused plugins
 
 ---
- core/dnsserver/zdirectives.go | 26 --------------------------
- core/plugin/zplugin.go        | 26 --------------------------
- plugin.cfg                    | 26 --------------------------
- plugin/kubernetes/setup.go    |  3 ---
- 4 files changed, 81 deletions(-)
+ core/dnsserver/zdirectives.go | 7 -------
+ core/plugin/zplugin.go        | 7 -------
+ plugin.cfg                    | 7 -------
+ plugin/kubernetes/setup.go    | 3 ---
+ 4 files changed, 24 deletions(-)
 
 diff --git a/core/dnsserver/zdirectives.go b/core/dnsserver/zdirectives.go
-index 1bf449cb..c3619160 100644
+index bca21718..678c02c6 100644
 --- a/core/dnsserver/zdirectives.go
 +++ b/core/dnsserver/zdirectives.go
-@@ -11,48 +11,22 @@ package dnsserver
+@@ -11,7 +11,6 @@ package dnsserver
  // care what plugin above them are doing.
  var Directives = []string{
  	"metadata",
--	"cancel",
--	"tls",
+-	"geoip",
+ 	"cancel",
+ 	"tls",
  	"reload",
- 	"nsid",
- 	"bufsize",
--	"root",
+@@ -20,14 +19,12 @@ var Directives = []string{
+ 	"root",
  	"bind",
  	"debug",
 -	"trace",
--	"ready",
+ 	"ready",
  	"health",
--	"pprof",
--	"prometheus",
+ 	"pprof",
+ 	"prometheus",
  	"errors",
  	"log",
 -	"dnstap",
+ 	"local",
  	"dns64",
  	"acl",
- 	"any",
--	"chaos",
- 	"loadbalance",
- 	"cache",
--	"rewrite",
--	"dnssec",
--	"autopath",
+@@ -43,15 +40,11 @@ var Directives = []string{
  	"template",
--	"transfer",
+ 	"transfer",
  	"hosts",
 -	"route53",
 -	"azure",
 -	"clouddns",
--	"k8s_external",
+ 	"k8s_external",
  	"kubernetes",
--	"file",
--	"auto",
--	"secondary",
+ 	"file",
+ 	"auto",
+ 	"secondary",
 -	"etcd",
--	"loop",
+ 	"loop",
  	"forward",
--	"grpc",
--	"erratic",
- 	"whoami",
--	"on",
--	"sign",
- }
+ 	"grpc",
 diff --git a/core/plugin/zplugin.go b/core/plugin/zplugin.go
-index cf83be70..de026516 100644
+index a9167eea..2a5d0b13 100644
 --- a/core/plugin/zplugin.go
 +++ b/core/plugin/zplugin.go
-@@ -4,49 +4,23 @@ package plugin
-
- import (
- 	// Include all plugins.
--	_ "github.com/caddyserver/caddy/onevent"
- 	_ "github.com/coredns/coredns/plugin/acl"
+@@ -9,23 +9,18 @@ import (
  	_ "github.com/coredns/coredns/plugin/any"
--	_ "github.com/coredns/coredns/plugin/auto"
--	_ "github.com/coredns/coredns/plugin/autopath"
+ 	_ "github.com/coredns/coredns/plugin/auto"
+ 	_ "github.com/coredns/coredns/plugin/autopath"
 -	_ "github.com/coredns/coredns/plugin/azure"
  	_ "github.com/coredns/coredns/plugin/bind"
  	_ "github.com/coredns/coredns/plugin/bufsize"
  	_ "github.com/coredns/coredns/plugin/cache"
--	_ "github.com/coredns/coredns/plugin/cancel"
--	_ "github.com/coredns/coredns/plugin/chaos"
+ 	_ "github.com/coredns/coredns/plugin/cancel"
+ 	_ "github.com/coredns/coredns/plugin/chaos"
 -	_ "github.com/coredns/coredns/plugin/clouddns"
  	_ "github.com/coredns/coredns/plugin/debug"
  	_ "github.com/coredns/coredns/plugin/dns64"
--	_ "github.com/coredns/coredns/plugin/dnssec"
+ 	_ "github.com/coredns/coredns/plugin/dnssec"
 -	_ "github.com/coredns/coredns/plugin/dnstap"
--	_ "github.com/coredns/coredns/plugin/erratic"
+ 	_ "github.com/coredns/coredns/plugin/erratic"
  	_ "github.com/coredns/coredns/plugin/errors"
 -	_ "github.com/coredns/coredns/plugin/etcd"
--	_ "github.com/coredns/coredns/plugin/file"
+ 	_ "github.com/coredns/coredns/plugin/file"
  	_ "github.com/coredns/coredns/plugin/forward"
--	_ "github.com/coredns/coredns/plugin/grpc"
+-	_ "github.com/coredns/coredns/plugin/geoip"
+ 	_ "github.com/coredns/coredns/plugin/grpc"
+ 	_ "github.com/coredns/coredns/plugin/header"
  	_ "github.com/coredns/coredns/plugin/health"
- 	_ "github.com/coredns/coredns/plugin/hosts"
--	_ "github.com/coredns/coredns/plugin/k8s_external"
- 	_ "github.com/coredns/coredns/plugin/kubernetes"
- 	_ "github.com/coredns/coredns/plugin/loadbalance"
- 	_ "github.com/coredns/coredns/plugin/log"
--	_ "github.com/coredns/coredns/plugin/loop"
- 	_ "github.com/coredns/coredns/plugin/metadata"
--	_ "github.com/coredns/coredns/plugin/metrics"
- 	_ "github.com/coredns/coredns/plugin/nsid"
--	_ "github.com/coredns/coredns/plugin/pprof"
--	_ "github.com/coredns/coredns/plugin/ready"
+@@ -45,12 +40,10 @@ import (
  	_ "github.com/coredns/coredns/plugin/reload"
--	_ "github.com/coredns/coredns/plugin/rewrite"
--	_ "github.com/coredns/coredns/plugin/root"
+ 	_ "github.com/coredns/coredns/plugin/rewrite"
+ 	_ "github.com/coredns/coredns/plugin/root"
 -	_ "github.com/coredns/coredns/plugin/route53"
--	_ "github.com/coredns/coredns/plugin/secondary"
--	_ "github.com/coredns/coredns/plugin/sign"
+ 	_ "github.com/coredns/coredns/plugin/secondary"
+ 	_ "github.com/coredns/coredns/plugin/sign"
  	_ "github.com/coredns/coredns/plugin/template"
--	_ "github.com/coredns/coredns/plugin/tls"
+ 	_ "github.com/coredns/coredns/plugin/tls"
 -	_ "github.com/coredns/coredns/plugin/trace"
--	_ "github.com/coredns/coredns/plugin/transfer"
+ 	_ "github.com/coredns/coredns/plugin/transfer"
  	_ "github.com/coredns/coredns/plugin/whoami"
  )
 diff --git a/plugin.cfg b/plugin.cfg
-index c389d74e..80a8bc51 100644
+index 628e7141..d4ce1c89 100644
 --- a/plugin.cfg
 +++ b/plugin.cfg
-@@ -20,47 +20,21 @@
+@@ -20,7 +20,6 @@
  # log:log
-
+ 
  metadata:metadata
--cancel:cancel
--tls:tls
+-geoip:geoip
+ cancel:cancel
+ tls:tls
  reload:reload
- nsid:nsid
- bufsize:bufsize
--root:root
+@@ -29,14 +28,12 @@ bufsize:bufsize
+ root:root
  bind:bind
  debug:debug
 -trace:trace
--ready:ready
+ ready:ready
  health:health
--pprof:pprof
--prometheus:metrics
+ pprof:pprof
+ prometheus:metrics
  errors:errors
  log:log
 -dnstap:dnstap
+ local:local
  dns64:dns64
  acl:acl
- any:any
--chaos:chaos
- loadbalance:loadbalance
- cache:cache
--rewrite:rewrite
--dnssec:dnssec
--autopath:autopath
+@@ -52,15 +49,11 @@ minimal:minimal
  template:template
--transfer:transfer
+ transfer:transfer
  hosts:hosts
 -route53:route53
 -azure:azure
 -clouddns:clouddns
--k8s_external:k8s_external
+ k8s_external:k8s_external
  kubernetes:kubernetes
--file:file
--auto:auto
--secondary:secondary
+ file:file
+ auto:auto
+ secondary:secondary
 -etcd:etcd
--loop:loop
+ loop:loop
  forward:forward
--grpc:grpc
--erratic:erratic
- whoami:whoami
--on:github.com/caddyserver/caddy/onevent
--sign:sign
+ grpc:grpc
 diff --git a/plugin/kubernetes/setup.go b/plugin/kubernetes/setup.go
-index 0c46a3ab..827fc141 100644
+index 5f5ab058..ae1a7cf8 100644
 --- a/plugin/kubernetes/setup.go
 +++ b/plugin/kubernetes/setup.go
-@@ -20,9 +20,6 @@ import (
- 	"github.com/caddyserver/caddy"
+@@ -17,9 +17,6 @@ import (
+ 
  	"github.com/miekg/dns"
  	meta "k8s.io/apimachinery/pkg/apis/meta/v1"
 -	_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"       // pull this in here, because we want it excluded if plugin.cfg doesn't have k8s
 -	_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"      // pull this in here, because we want it excluded if plugin.cfg doesn't have k8s
 -	_ "k8s.io/client-go/plugin/pkg/client/auth/openstack" // pull this in here, because we want it excluded if plugin.cfg doesn't have k8s
  	"k8s.io/client-go/tools/clientcmd"
- 	"k8s.io/klog"
+ 	"k8s.io/klog/v2"
  )
---
+-- 
 2.25.1
+
diff --git a/third_party/go/patches/delve-fix-cgo.patch b/third_party/go/patches/delve-fix-cgo.patch
new file mode 100644
index 0000000..d8a5254
--- /dev/null
+++ b/third_party/go/patches/delve-fix-cgo.patch
@@ -0,0 +1,11 @@
+diff -urN b/pkg/proc/internal/ebpf/BUILD.bazel c/pkg/proc/internal/ebpf/BUILD.bazel
+--- b/pkg/proc/internal/ebpf/BUILD.bazel  2022-01-14 23:29:02.948089761 +0000
++++ c/pkg/proc/internal/ebpf/BUILD.bazel  2022-01-14 23:13:52.964810803 +0000
+@@ -7,6 +7,7 @@
+         "helpers.go",
+         "helpers_disabled.go",
+         "trace_bpfel_x86.go",
++        "bpf/include/function_vals.bpf.h",
+     ],
+     cgo = True,
+     embedsrcs = select({
\ No newline at end of file
diff --git a/third_party/go/patches/etcd-fix-stub.patch b/third_party/go/patches/etcd-fix-stub.patch
new file mode 100644
index 0000000..bb47ac4
--- /dev/null
+++ b/third_party/go/patches/etcd-fix-stub.patch
@@ -0,0 +1,9 @@
+--- a/grpc_testing/stub_server.go
++++ b/grpc_testing/stub_server.go
+@@ -86,5 +86,5 @@ func (d dummyStubServer) UnaryCall(context.Context, *testpb.SimpleRequest) (*tes
+ // NewDummyStubServer creates a simple test server that serves Unary calls with
+ // responses with the given payload.
+ func NewDummyStubServer(body []byte) *StubServer {
+-	return New(dummyStubServer{body: body})
++	return New(&dummyStubServer{body: body})
+ }
diff --git a/third_party/go/patches/go-proto-validators-default-alias.patch b/third_party/go/patches/go-proto-validators-default-alias.patch
deleted file mode 100644
index 46f21a9..0000000
--- a/third_party/go/patches/go-proto-validators-default-alias.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 49b5f957d01cd50e5303cfc0e6c7f350d7e1c24e Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@monogon.tech>
-Date: Tue, 30 Nov 2021 03:19:37 +0100
-Subject: [PATCH] Alias go_default_library in BUILD to make Gazelle work
-
----
- BUILD.bazel | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/BUILD.bazel b/BUILD.bazel
-index 9a1edd4..e5b8f96 100644
---- a/BUILD.bazel
-+++ b/BUILD.bazel
-@@ -14,6 +14,12 @@ gazelle(
- # By default resolve the top-level package to the gogo variant as it's required for the plugin compilation.
- # gazelle:resolve go github.com/mwitkow/go-proto-validators //:validators_gogo
- 
-+alias(
-+    name = "go_default_library",
-+    actual = "validators_golang",
-+    visibility = ["//visibility:public"],
-+)
-+
- go_proto_compiler(
-     name = "go_proto_validators",
-     options = ["gogoimport=false"],
--- 
-2.25.1
-
diff --git a/third_party/go/patches/go-tpm-tools-fix-proto-paths.patch b/third_party/go/patches/go-tpm-tools-fix-proto-paths.patch
new file mode 100644
index 0000000..ae7fcf3
--- /dev/null
+++ b/third_party/go/patches/go-tpm-tools-fix-proto-paths.patch
@@ -0,0 +1,66 @@
+From a799a94b7b67b21d1eecfe66dbe264ef3e276cd3 Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 30 Mar 2022 15:48:23 +0200
+Subject: [PATCH] Fix proto file paths
+
+---
+ proto/0001-Fix-proto-file-paths.patch | 23 +++++++++++++++++++++++
+ proto/{ => attest}/attest.proto       |  2 +-
+ proto/{ => tpm}/tpm.proto             |  0
+ 3 files changed, 24 insertions(+), 1 deletion(-)
+ create mode 100644 proto/0001-Fix-proto-file-paths.patch
+ rename proto/{ => attest}/attest.proto (99%)
+ rename proto/{ => tpm}/tpm.proto (100%)
+
+diff --git a/proto/0001-Fix-proto-file-paths.patch b/proto/0001-Fix-proto-file-paths.patch
+new file mode 100644
+index 0000000..22e3b45
+--- /dev/null
++++ b/proto/0001-Fix-proto-file-paths.patch
+@@ -0,0 +1,23 @@
++From ba5bf5ac1e0b3d92e8f19a0feb2307515c0e2baf Mon Sep 17 00:00:00 2001
++From: Lorenz Brun <lorenz@monogon.tech>
++Date: Wed, 30 Mar 2022 15:48:23 +0200
++Subject: [PATCH] Fix proto file paths
++
++---
++ proto/{ => attest}/attest.proto | 0
++ proto/{ => tpm}/tpm.proto       | 0
++ 2 files changed, 0 insertions(+), 0 deletions(-)
++ rename proto/{ => attest}/attest.proto (100%)
++ rename proto/{ => tpm}/tpm.proto (100%)
++
++diff --git a/proto/attest.proto b/proto/attest/attest.proto
++similarity index 100%
++rename from proto/attest.proto
++rename to proto/attest/attest.proto
++diff --git a/proto/tpm.proto b/proto/tpm/tpm.proto
++similarity index 100%
++rename from proto/tpm.proto
++rename to proto/tpm/tpm.proto
++-- 
++2.25.1
++
+diff --git a/proto/attest.proto b/proto/attest/attest.proto
+similarity index 99%
+rename from proto/attest.proto
+rename to proto/attest/attest.proto
+index fbaf5bd..7960297 100644
+--- a/proto/attest.proto
++++ b/proto/attest/attest.proto
+@@ -3,7 +3,7 @@ syntax = "proto3";
+ package attest;
+ option go_package = "github.com/google/go-tpm-tools/proto/attest";
+ 
+-import "tpm.proto";
++import "proto/tpm/tpm.proto";
+ 
+ // Information uniquely identifying a GCE instance. Can be used to create an
+ // instance URL, which can then be used with GCE APIs. Formatted like:
+diff --git a/proto/tpm.proto b/proto/tpm/tpm.proto
+similarity index 100%
+rename from proto/tpm.proto
+rename to proto/tpm/tpm.proto
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/gvisor-build-against-newer-runtime-specs.patch b/third_party/go/patches/gvisor-build-against-newer-runtime-specs.patch
deleted file mode 100644
index f653492..0000000
--- a/third_party/go/patches/gvisor-build-against-newer-runtime-specs.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 9fc5e36f4e0bd691fc502372ebf837d24fbe5297 Mon Sep 17 00:00:00 2001
-From: Serge Bazanski <serge@nexantic.com>
-Date: Fri, 15 Jan 2021 16:22:33 +0100
-Subject: [PATCH] Build against new opencontainers runtime-specs
-Company: nexantic GmbH
-
----
- runsc/container/container.go | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/runsc/container/container.go b/runsc/container/container.go
-index 418a27beb..8508ded5a 100644
---- a/runsc/container/container.go
-+++ b/runsc/container/container.go
-@@ -747,7 +747,7 @@ func (c *Container) State() specs.State {
- 	return specs.State{
- 		Version: specs.Version,
- 		ID:      c.ID,
--		Status:  c.Status.String(),
-+		Status:  specs.ContainerState(c.Status.String()),
- 		Pid:     c.SandboxPid(),
- 		Bundle:  c.BundleDir,
- 	}
--- 
-2.26.2
-
diff --git a/third_party/go/patches/gvisor-cgroup-fix.patch b/third_party/go/patches/gvisor-cgroup-fix.patch
deleted file mode 100644
index aba0b4a..0000000
--- a/third_party/go/patches/gvisor-cgroup-fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From fcd48e672489f41c9977e092937ff806a7e772bd Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@monogon.tech>
-Date: Thu, 11 Nov 2021 13:58:50 +0100
-Subject: [PATCH] Make systemd cgroup optional
-
-This breaks gVisor on systems that use custom inits/cgroup setups which
-don't have this cgroup and don't need it.
----
- runsc/cgroup/cgroup.go | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/runsc/cgroup/cgroup.go b/runsc/cgroup/cgroup.go
-index 0eb5821a9..2116bddca 100644
---- a/runsc/cgroup/cgroup.go
-+++ b/runsc/cgroup/cgroup.go
-@@ -58,7 +58,7 @@ var controllers = map[string]controller{
- 	"freezer":    &noop{},
- 	"perf_event": &noop{},
- 	"rdma":       &noop{isOptional: true},
--	"systemd":    &noop{},
-+	"systemd":    &noop{isOptional: true},
- }
- 
- // IsOnlyV2 checks whether cgroups V2 is enabled and V1 is not.
--- 
-2.25.1
-
diff --git a/third_party/go/patches/gvisor-containerd-compat.patch b/third_party/go/patches/gvisor-containerd-compat.patch
new file mode 100644
index 0000000..89eb40f
--- /dev/null
+++ b/third_party/go/patches/gvisor-containerd-compat.patch
@@ -0,0 +1,114 @@
+From bf861ce45721791336b617a44844613bb74c677a Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Tue, 22 Mar 2022 00:52:48 +0100
+Subject: [PATCH] containerd 1.6 compatibility
+
+---
+ pkg/shim/proc/exec.go     |  2 +-
+ pkg/shim/proc/init.go     |  2 +-
+ pkg/shim/service.go       | 17 +++++++++--------
+ pkg/shim/service_linux.go |  2 +-
+ 4 files changed, 12 insertions(+), 11 deletions(-)
+
+diff --git a/pkg/shim/proc/exec.go b/pkg/shim/proc/exec.go
+index da2e21598..d0d14dd24 100644
+--- a/pkg/shim/proc/exec.go
++++ b/pkg/shim/proc/exec.go
+@@ -238,7 +238,7 @@ func (e *execProcess) start(ctx context.Context) error {
+ 		if err != nil {
+ 			return fmt.Errorf("failed to retrieve console master: %w", err)
+ 		}
+-		if e.console, err = e.parent.Platform.CopyConsole(ctx, console, e.stdio.Stdin, e.stdio.Stdout, e.stdio.Stderr, &e.wg); err != nil {
++		if e.console, err = e.parent.Platform.CopyConsole(ctx, console, e.id, e.stdio.Stdin, e.stdio.Stdout, e.stdio.Stderr, &e.wg); err != nil {
+ 			return fmt.Errorf("failed to start console copy: %w", err)
+ 		}
+ 	} else if !e.stdio.IsNull() {
+diff --git a/pkg/shim/proc/init.go b/pkg/shim/proc/init.go
+index 6bf090813..76df1101a 100644
+--- a/pkg/shim/proc/init.go
++++ b/pkg/shim/proc/init.go
+@@ -152,7 +152,7 @@ func (p *Init) Create(ctx context.Context, r *CreateConfig) (err error) {
+ 		if err != nil {
+ 			return fmt.Errorf("failed to retrieve console master: %w", err)
+ 		}
+-		console, err = p.Platform.CopyConsole(ctx, console, r.Stdin, r.Stdout, r.Stderr, &p.wg)
++		console, err = p.Platform.CopyConsole(ctx, console, r.ID, r.Stdin, r.Stdout, r.Stderr, &p.wg)
+ 		if err != nil {
+ 			return fmt.Errorf("failed to start console copy: %w", err)
+ 		}
+diff --git a/pkg/shim/service.go b/pkg/shim/service.go
+index 68966afdf..772168052 100644
+--- a/pkg/shim/service.go
++++ b/pkg/shim/service.go
+@@ -50,7 +50,7 @@ import (
+ 	"github.com/sirupsen/logrus"
+ 	"golang.org/x/sys/unix"
+ 	"gvisor.dev/gvisor/pkg/cleanup"
+-	"gvisor.dev/gvisor/pkg/shim/runtimeoptions/v14"
++	v14 "gvisor.dev/gvisor/pkg/shim/runtimeoptions/v14"
+ 
+ 	"gvisor.dev/gvisor/pkg/shim/proc"
+ 	"gvisor.dev/gvisor/pkg/shim/runsc"
+@@ -189,7 +189,7 @@ type service struct {
+ 	shimAddress string
+ }
+ 
+-func (s *service) newCommand(ctx context.Context, containerdBinary, containerdAddress string) (*exec.Cmd, error) {
++func (s *service) newCommand(ctx context.Context, id, containerdBinary, containerdAddress string) (*exec.Cmd, error) {
+ 	ns, err := namespaces.NamespaceRequired(ctx)
+ 	if err != nil {
+ 		return nil, err
+@@ -204,6 +204,7 @@ func (s *service) newCommand(ctx context.Context, containerdBinary, containerdAd
+ 	}
+ 	args := []string{
+ 		"-namespace", ns,
++		"-id", id,
+ 		"-address", containerdAddress,
+ 		"-publish-binary", containerdBinary,
+ 	}
+@@ -219,14 +220,14 @@ func (s *service) newCommand(ctx context.Context, containerdBinary, containerdAd
+ 	return cmd, nil
+ }
+ 
+-func (s *service) StartShim(ctx context.Context, id, containerdBinary, containerdAddress, containerdTTRPCAddress string) (string, error) {
+-	log.L.Debugf("StartShim, id: %s, binary: %q, address: %q", id, containerdBinary, containerdAddress)
++func (s *service) StartShim(ctx context.Context, opts shim.StartOpts) (string, error) {
++	log.L.Debugf("StartShim, id: %s, binary: %q, address: %q", opts.ID, opts.ContainerdBinary, opts.Address)
+ 
+-	cmd, err := s.newCommand(ctx, containerdBinary, containerdAddress)
++	cmd, err := s.newCommand(ctx, opts.ID, opts.ContainerdBinary, opts.Address)
+ 	if err != nil {
+ 		return "", err
+ 	}
+-	address, err := shim.SocketAddress(ctx, containerdAddress, id)
++	address, err := shim.SocketAddress(ctx, opts.Address, opts.ID)
+ 	if err != nil {
+ 		return "", err
+ 	}
+@@ -280,8 +281,8 @@ func (s *service) StartShim(ctx context.Context, id, containerdBinary, container
+ 	if err := shim.WriteAddress(shimAddressPath, address); err != nil {
+ 		return "", err
+ 	}
+-	if err := shim.SetScore(cmd.Process.Pid); err != nil {
+-		return "", fmt.Errorf("failed to set OOM Score on shim: %w", err)
++	if err := shim.AdjustOOMScore(cmd.Process.Pid); err != nil {
++		return "", fmt.Errorf("failed to adjust OOM score for shim: %w", err)
+ 	}
+ 	cu.Release()
+ 	return address, nil
+diff --git a/pkg/shim/service_linux.go b/pkg/shim/service_linux.go
+index fb2f8b062..52c82ca90 100644
+--- a/pkg/shim/service_linux.go
++++ b/pkg/shim/service_linux.go
+@@ -33,7 +33,7 @@ type linuxPlatform struct {
+ 	epoller *console.Epoller
+ }
+ 
+-func (p *linuxPlatform) CopyConsole(ctx context.Context, console console.Console, stdin, stdout, stderr string, wg *sync.WaitGroup) (console.Console, error) {
++func (p *linuxPlatform) CopyConsole(ctx context.Context, console console.Console, id, stdin, stdout, stderr string, wg *sync.WaitGroup) (console.Console, error) {
+ 	if p.epoller == nil {
+ 		return nil, fmt.Errorf("uninitialized epoller")
+ 	}
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/gvisor-fix-resolution.patch b/third_party/go/patches/gvisor-fix-resolution.patch
new file mode 100644
index 0000000..71e0af5
--- /dev/null
+++ b/third_party/go/patches/gvisor-fix-resolution.patch
@@ -0,0 +1,10 @@
+--- a/pkg/coverage/BUILD.bazel
++++ b/pkg/coverage/BUILD.bazel
+@@ -11,7 +11,7 @@ go_library(
+     deps = [
+         "//pkg/hostarch",
+         "//pkg/sync",
+-        "@io_bazel_rules_go//go/tools/coverdata:go_default_library",
++        "@io_bazel_rules_go//go/tools/coverdata",
+     ],
+ )
diff --git a/third_party/go/patches/gvisor-shim-root.patch b/third_party/go/patches/gvisor-shim-root.patch
deleted file mode 100644
index 6b10797..0000000
--- a/third_party/go/patches/gvisor-shim-root.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 6cbcb8e61b60046e51ff79674b78031707739401 Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@brun.one>
-Date: Wed, 6 May 2020 18:52:14 +0200
-Subject: [PATCH] Fix externally-configured non-standard root paths
-
-Going upstream as https://github.com/google/gvisor-containerd-shim/pull/60
-
----
- pkg/v2/service.go | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/pkg/v2/service.go b/pkg/v2/service.go
-index c1df4b8..f7f5847 100644
---- a/pkg/v2/service.go
-+++ b/pkg/v2/service.go
-@@ -103,6 +103,7 @@ type service struct {
- 	processes map[string]process.Process
- 	events    chan interface{}
- 	platform  stdio.Platform
-+	opts      options.Options
- 	ec        chan proc.Exit
- 
- 	id     string
-@@ -194,7 +195,7 @@ func (s *service) Cleanup(ctx context.Context) (*taskAPI.DeleteResponse, error)
- 	if err != nil {
- 		return nil, err
- 	}
--	r := proc.NewRunsc(proc.RunscRoot, path, ns, runtime, nil)
-+	r := proc.NewRunsc(s.opts.Root, path, ns, runtime, nil)
- 	if err := r.Delete(ctx, s.id, &runsc.DeleteOpts{
- 		Force: true,
- 	}); err != nil {
-@@ -344,6 +345,7 @@ func (s *service) Create(ctx context.Context, r *taskAPI.CreateTaskRequest) (_ *
- 	s.id = r.ID
- 	s.bundle = r.Bundle
- 	s.task = process
-+	s.opts = opts
- 	return &taskAPI.CreateTaskResponse{
- 		Pid: uint32(process.Pid()),
- 	}, nil
-@@ -577,7 +579,7 @@ func (s *service) Stats(ctx context.Context, r *taskAPI.StatsRequest) (*taskAPI.
- 	if err != nil {
- 		return nil, err
- 	}
--	rs := proc.NewRunsc(proc.RunscRoot, path, ns, runtime, nil)
-+	rs := proc.NewRunsc(s.opts.Root, path, ns, runtime, nil)
- 	stats, err := rs.Stats(ctx, s.id)
- 	if err != nil {
- 		return nil, err
--- 
-2.25.1
-
diff --git a/third_party/go/patches/gvisor.patch b/third_party/go/patches/gvisor.patch
deleted file mode 100644
index 143ee59..0000000
--- a/third_party/go/patches/gvisor.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 69b2c3b6e2594a3f28e4ea1141bef542456b3eb2 Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@brun.one>
-Date: Wed, 5 Feb 2020 17:14:19 +0100
-Subject: [PATCH] Fix vdso include that breaks in an external
-
----
- vdso/cycle_clock.h | 2 +-
- vdso/seqlock.h     | 4 ++--
- vdso/vdso.cc       | 4 ++--
- vdso/vdso_time.cc  | 8 ++++----
- 4 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/vdso/cycle_clock.h b/vdso/cycle_clock.h
-index 5d3fbb25..fe15812c 100644
---- a/vdso/cycle_clock.h
-+++ b/vdso/cycle_clock.h
-@@ -17,7 +17,7 @@
- 
- #include <stdint.h>
- 
--#include "vdso/barrier.h"
-+#include "barrier.h"
- 
- namespace vdso {
- 
-diff --git a/vdso/seqlock.h b/vdso/seqlock.h
-index 7a173174..fff99748 100644
---- a/vdso/seqlock.h
-+++ b/vdso/seqlock.h
-@@ -18,8 +18,8 @@
- 
- #include <stdint.h>
- 
--#include "vdso/barrier.h"
--#include "vdso/compiler.h"
-+#include "barrier.h"
-+#include "compiler.h"
- 
- namespace vdso {
- 
-diff --git a/vdso/vdso.cc b/vdso/vdso.cc
-index 8bb80a7a..210d31ff 100644
---- a/vdso/vdso.cc
-+++ b/vdso/vdso.cc
-@@ -19,8 +19,8 @@
- #include <sys/time.h>
- #include <time.h>
- 
--#include "vdso/syscalls.h"
--#include "vdso/vdso_time.h"
-+#include "syscalls.h"
-+#include "vdso_time.h"
- 
- namespace vdso {
- namespace {
-diff --git a/vdso/vdso_time.cc b/vdso/vdso_time.cc
-index 1bb4bb86..fb5b281f 100644
---- a/vdso/vdso_time.cc
-+++ b/vdso/vdso_time.cc
-@@ -12,15 +12,15 @@
- // See the License for the specific language governing permissions and
- // limitations under the License.
- 
--#include "vdso/vdso_time.h"
-+#include "vdso_time.h"
- 
- #include <stdint.h>
- #include <sys/time.h>
- #include <time.h>
- 
--#include "vdso/cycle_clock.h"
--#include "vdso/seqlock.h"
--#include "vdso/syscalls.h"
-+#include "cycle_clock.h"
-+#include "seqlock.h"
-+#include "syscalls.h"
- 
- // struct params defines the layout of the parameter page maintained by the
- // kernel (i.e., sentry).
--- 
-2.20.1
-
diff --git a/third_party/go/patches/k8s-adopt-to-go-jose-2.3.patch b/third_party/go/patches/k8s-adopt-to-go-jose-2.3.patch
new file mode 100644
index 0000000..9efd08a
--- /dev/null
+++ b/third_party/go/patches/k8s-adopt-to-go-jose-2.3.patch
@@ -0,0 +1,136 @@
+From a1411288423dfc4062844b9f699a30fd7cbe090d Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Mon, 21 Mar 2022 15:20:19 +0100
+Subject: [PATCH 1/2] Adopt to API breakage in go-jose 2.3.0
+
+---
+ pkg/serviceaccount/claims_test.go          | 40 +++++++++++-----------
+ test/integration/auth/svcaccttoken_test.go |  6 ++--
+ 2 files changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/pkg/serviceaccount/claims_test.go b/pkg/serviceaccount/claims_test.go
+index 2e968f60335..a0b5a595c2f 100644
+--- a/pkg/serviceaccount/claims_test.go
++++ b/pkg/serviceaccount/claims_test.go
+@@ -85,9 +85,9 @@ func TestClaims(t *testing.T) {
+ 
+ 			sc: &jwt.Claims{
+ 				Subject:   "system:serviceaccount:myns:mysvcacct",
+-				IssuedAt:  jwt.NumericDate(1514764800),
+-				NotBefore: jwt.NumericDate(1514764800),
+-				Expiry:    jwt.NumericDate(1514764800),
++				IssuedAt:  jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				NotBefore: jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				Expiry:    jwt.NewNumericDate(time.Unix(1514764800, 0)),
+ 			},
+ 			pc: &privateClaims{
+ 				Kubernetes: kubernetes{
+@@ -107,9 +107,9 @@ func TestClaims(t *testing.T) {
+ 
+ 			sc: &jwt.Claims{
+ 				Subject:   "system:serviceaccount:myns:mysvcacct",
+-				IssuedAt:  jwt.NumericDate(1514764800),
+-				NotBefore: jwt.NumericDate(1514764800),
+-				Expiry:    jwt.NumericDate(1514764800 + 100),
++				IssuedAt:  jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				NotBefore: jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				Expiry:    jwt.NewNumericDate(time.Unix(1514764800+100, 0)),
+ 			},
+ 			pc: &privateClaims{
+ 				Kubernetes: kubernetes{
+@@ -130,9 +130,9 @@ func TestClaims(t *testing.T) {
+ 			sc: &jwt.Claims{
+ 				Subject:   "system:serviceaccount:myns:mysvcacct",
+ 				Audience:  []string{"1"},
+-				IssuedAt:  jwt.NumericDate(1514764800),
+-				NotBefore: jwt.NumericDate(1514764800),
+-				Expiry:    jwt.NumericDate(1514764800 + 100),
++				IssuedAt:  jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				NotBefore: jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				Expiry:    jwt.NewNumericDate(time.Unix(1514764800+100, 0)),
+ 			},
+ 			pc: &privateClaims{
+ 				Kubernetes: kubernetes{
+@@ -152,9 +152,9 @@ func TestClaims(t *testing.T) {
+ 			sc: &jwt.Claims{
+ 				Subject:   "system:serviceaccount:myns:mysvcacct",
+ 				Audience:  []string{"1", "2"},
+-				IssuedAt:  jwt.NumericDate(1514764800),
+-				NotBefore: jwt.NumericDate(1514764800),
+-				Expiry:    jwt.NumericDate(1514764800 + 100),
++				IssuedAt:  jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				NotBefore: jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				Expiry:    jwt.NewNumericDate(time.Unix(1514764800+100, 0)),
+ 			},
+ 			pc: &privateClaims{
+ 				Kubernetes: kubernetes{
+@@ -175,16 +175,16 @@ func TestClaims(t *testing.T) {
+ 
+ 			sc: &jwt.Claims{
+ 				Subject:   "system:serviceaccount:myns:mysvcacct",
+-				IssuedAt:  jwt.NumericDate(1514764800),
+-				NotBefore: jwt.NumericDate(1514764800),
+-				Expiry:    jwt.NumericDate(1514764800 + 60*60*24),
++				IssuedAt:  jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				NotBefore: jwt.NewNumericDate(time.Unix(1514764800, 0)),
++				Expiry:    jwt.NewNumericDate(time.Unix(1514764800+60*60*24, 0)),
+ 			},
+ 			pc: &privateClaims{
+ 				Kubernetes: kubernetes{
+ 					Namespace: "myns",
+ 					Svcacct:   ref{Name: "mysvcacct", UID: "mysvcacct-uid"},
+ 					Pod:       &ref{Name: "mypod", UID: "mypod-uid"},
+-					WarnAfter: jwt.NumericDate(1514764800 + 60*60),
++					WarnAfter: jwt.NewNumericDate(time.Unix(1514764800+60*60, 0)),
+ 				},
+ 			},
+ 		},
+@@ -223,8 +223,8 @@ type claimTestCase struct {
+ 	name      string
+ 	getter    ServiceAccountTokenGetter
+ 	private   *privateClaims
+-	expiry    jwt.NumericDate
+-	notBefore jwt.NumericDate
++	expiry    *jwt.NumericDate
++	notBefore *jwt.NumericDate
+ 	expectErr string
+ }
+ 
+@@ -365,8 +365,8 @@ func TestValidatePrivateClaims(t *testing.T) {
+ 	for _, tc := range testcases {
+ 		t.Run(tc.name, func(t *testing.T) {
+ 			v := &validator{tc.getter}
+-			expiry := jwt.NumericDate(nowUnix)
+-			if tc.expiry != 0 {
++			expiry := jwt.NewNumericDate(time.Unix(nowUnix, 0))
++			if tc.expiry != nil {
+ 				expiry = tc.expiry
+ 			}
+ 			_, err := v.Validate(context.Background(), "", &jwt.Claims{Expiry: expiry, NotBefore: tc.notBefore}, tc.private)
+diff --git a/test/integration/auth/svcaccttoken_test.go b/test/integration/auth/svcaccttoken_test.go
+index da50bf4736e..5311b6c90c3 100644
+--- a/test/integration/auth/svcaccttoken_test.go
++++ b/test/integration/auth/svcaccttoken_test.go
+@@ -421,16 +421,16 @@ func TestServiceAccountTokenCreate(t *testing.T) {
+ 			t.Fatalf("error parsing warnafter: %v", err)
+ 		}
+ 
+-		if exp < int64(actualExpiry)-leeway || exp > int64(actualExpiry)+leeway {
++		if exp < int64(*actualExpiry)-leeway || exp > int64(*actualExpiry)+leeway {
+ 			t.Errorf("unexpected token exp %d, should within range of %d +- %d seconds", exp, actualExpiry, leeway)
+ 		}
+-		if warnafter < int64(assumedExpiry)-leeway || warnafter > int64(assumedExpiry)+leeway {
++		if warnafter < int64(*assumedExpiry)-leeway || warnafter > int64(*assumedExpiry)+leeway {
+ 			t.Errorf("unexpected token warnafter %d, should within range of %d +- %d seconds", warnafter, assumedExpiry, leeway)
+ 		}
+ 
+ 		checkExpiration(t, treq, requestExp)
+ 		expStatus := treq.Status.ExpirationTimestamp.Time.Unix()
+-		if expStatus < int64(assumedExpiry)-leeway || warnafter > int64(assumedExpiry)+leeway {
++		if expStatus < int64(*assumedExpiry)-leeway || warnafter > int64(*assumedExpiry)+leeway {
+ 			t.Errorf("unexpected expiration returned in tokenrequest status %d, should within range of %d +- %d seconds", expStatus, assumedExpiry, leeway)
+ 		}
+ 	})
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/k8s-adopt-to-runc-1.1.patch b/third_party/go/patches/k8s-adopt-to-runc-1.1.patch
new file mode 100644
index 0000000..8bfdcf2
--- /dev/null
+++ b/third_party/go/patches/k8s-adopt-to-runc-1.1.patch
@@ -0,0 +1,168 @@
+From 1564b39d0fbeac776a0d92236a0ca0c7cbdc6c5c Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Mon, 21 Mar 2022 15:21:25 +0100
+Subject: [PATCH 2/2] Adopt to API breakage in runc 1.1.0
+
+---
+ pkg/kubelet/cm/cgroup_manager_linux.go                | 11 ++++++-----
+ pkg/kubelet/cm/container_manager_linux.go             |  4 ++--
+ pkg/kubelet/cm/qos_container_manager_linux.go         |  4 ++--
+ pkg/kubelet/dockershim/cm/container_manager_linux.go  |  2 +-
+ .../kuberuntime/kuberuntime_container_linux.go        |  4 ++--
+ .../kuberuntime/kuberuntime_container_linux_test.go   |  6 +++---
+ 6 files changed, 16 insertions(+), 15 deletions(-)
+
+diff --git a/pkg/kubelet/cm/cgroup_manager_linux.go b/pkg/kubelet/cm/cgroup_manager_linux.go
+index 230173690d5..4bd50db5050 100644
+--- a/pkg/kubelet/cm/cgroup_manager_linux.go
++++ b/pkg/kubelet/cm/cgroup_manager_linux.go
+@@ -27,6 +27,7 @@ import (
+ 	"sync"
+ 	"time"
+ 
++	"github.com/opencontainers/runc/libcontainer/cgroups"
+ 	libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups"
+ 	cgroupfs "github.com/opencontainers/runc/libcontainer/cgroups/fs"
+ 	cgroupfs2 "github.com/opencontainers/runc/libcontainer/cgroups/fs2"
+@@ -150,18 +151,18 @@ func (l *libcontainerAdapter) newManager(cgroups *libcontainerconfigs.Cgroup, pa
+ 	switch l.cgroupManagerType {
+ 	case libcontainerCgroupfs:
+ 		if libcontainercgroups.IsCgroup2UnifiedMode() {
+-			return cgroupfs2.NewManager(cgroups, paths["memory"], false)
++			return cgroupfs2.NewManager(cgroups, paths["memory"])
+ 		}
+-		return cgroupfs.NewManager(cgroups, paths, false), nil
++		return cgroupfs.NewManager(cgroups, paths)
+ 	case libcontainerSystemd:
+ 		// this means you asked systemd to manage cgroups, but systemd was not on the host, so all you can do is panic...
+ 		if !cgroupsystemd.IsRunningSystemd() {
+ 			panic("systemd cgroup manager not available")
+ 		}
+ 		if libcontainercgroups.IsCgroup2UnifiedMode() {
+-			return cgroupsystemd.NewUnifiedManager(cgroups, paths["memory"], false), nil
++			return cgroupsystemd.NewUnifiedManager(cgroups, paths["memory"])
+ 		}
+-		return cgroupsystemd.NewLegacyManager(cgroups, paths), nil
++		return cgroupsystemd.NewLegacyManager(cgroups, paths)
+ 	}
+ 	return nil, fmt.Errorf("invalid cgroup manager configuration")
+ }
+@@ -420,7 +421,7 @@ func (m *cgroupManagerImpl) toResources(resourceConfig *ResourceConfig) *libcont
+ 		pageSizes.Insert(sizeString)
+ 	}
+ 	// for each page size omitted, limit to 0
+-	for _, pageSize := range cgroupfs.HugePageSizes {
++	for _, pageSize := range cgroups.HugePageSizes() {
+ 		if pageSizes.Has(pageSize) {
+ 			continue
+ 		}
+diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go
+index 3892bae081d..4c79f212ab5 100644
+--- a/pkg/kubelet/cm/container_manager_linux.go
++++ b/pkg/kubelet/cm/container_manager_linux.go
+@@ -401,10 +401,10 @@ func createManager(containerName string) (cgroups.Manager, error) {
+ 	}
+ 
+ 	if cgroups.IsCgroup2UnifiedMode() {
+-		return cgroupfs2.NewManager(cg, "", false)
++		return cgroupfs2.NewManager(cg, "")
+ 
+ 	}
+-	return cgroupfs.NewManager(cg, nil, false), nil
++	return cgroupfs.NewManager(cg, nil)
+ }
+ 
+ type KernelTunableBehavior string
+diff --git a/pkg/kubelet/cm/qos_container_manager_linux.go b/pkg/kubelet/cm/qos_container_manager_linux.go
+index bb79109b141..d0a78db2483 100644
+--- a/pkg/kubelet/cm/qos_container_manager_linux.go
++++ b/pkg/kubelet/cm/qos_container_manager_linux.go
+@@ -28,8 +28,8 @@ import (
+ 	"k8s.io/apimachinery/pkg/util/wait"
+ 
+ 	units "github.com/docker/go-units"
++	"github.com/opencontainers/runc/libcontainer/cgroups"
+ 	libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups"
+-	cgroupfs "github.com/opencontainers/runc/libcontainer/cgroups/fs"
+ 	v1 "k8s.io/api/core/v1"
+ 	utilfeature "k8s.io/apiserver/pkg/util/feature"
+ 	"k8s.io/kubernetes/pkg/api/v1/resource"
+@@ -147,7 +147,7 @@ func (m *qosContainerManagerImpl) Start(getNodeAllocatable func() v1.ResourceLis
+ // setHugePagesUnbounded ensures hugetlb is effectively unbounded
+ func (m *qosContainerManagerImpl) setHugePagesUnbounded(cgroupConfig *CgroupConfig) error {
+ 	hugePageLimit := map[int64]int64{}
+-	for _, pageSize := range cgroupfs.HugePageSizes {
++	for _, pageSize := range cgroups.HugePageSizes() {
+ 		pageSizeBytes, err := units.RAMInBytes(pageSize)
+ 		if err != nil {
+ 			return err
+diff --git a/pkg/kubelet/dockershim/cm/container_manager_linux.go b/pkg/kubelet/dockershim/cm/container_manager_linux.go
+index 759e27f26c5..93d6c51ac00 100644
+--- a/pkg/kubelet/dockershim/cm/container_manager_linux.go
++++ b/pkg/kubelet/dockershim/cm/container_manager_linux.go
+@@ -129,7 +129,7 @@ func createCgroupManager(name string) (cgroups.Manager, error) {
+ 			SkipDevices: true,
+ 		},
+ 	}
+-	return cgroupfs.NewManager(cg, nil, false), nil
++	return cgroupfs.NewManager(cg, nil)
+ }
+ 
+ // getMemoryCapacity returns the memory capacity on the machine in bytes.
+diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go
+index 6cb9e54729e..fd922f07c7c 100644
+--- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go
++++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go
+@@ -23,8 +23,8 @@ import (
+ 	"strconv"
+ 	"time"
+ 
++	"github.com/opencontainers/runc/libcontainer/cgroups"
+ 	libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups"
+-	cgroupfs "github.com/opencontainers/runc/libcontainer/cgroups/fs"
+ 	v1 "k8s.io/api/core/v1"
+ 	"k8s.io/apimachinery/pkg/api/resource"
+ 	utilfeature "k8s.io/apiserver/pkg/util/feature"
+@@ -170,7 +170,7 @@ func GetHugepageLimitsFromResources(resources v1.ResourceRequirements) []*runtim
+ 	var hugepageLimits []*runtimeapi.HugepageLimit
+ 
+ 	// For each page size, limit to 0.
+-	for _, pageSize := range cgroupfs.HugePageSizes {
++	for _, pageSize := range cgroups.HugePageSizes() {
+ 		hugepageLimits = append(hugepageLimits, &runtimeapi.HugepageLimit{
+ 			PageSize: pageSize,
+ 			Limit:    uint64(0),
+diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go
+index 46817e00fb0..f166adc6fe1 100644
+--- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go
++++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go
+@@ -25,7 +25,7 @@ import (
+ 	"testing"
+ 
+ 	"github.com/google/go-cmp/cmp"
+-	cgroupfs "github.com/opencontainers/runc/libcontainer/cgroups/fs"
++	"github.com/opencontainers/runc/libcontainer/cgroups"
+ 	"github.com/stretchr/testify/assert"
+ 	v1 "k8s.io/api/core/v1"
+ 	"k8s.io/apimachinery/pkg/api/resource"
+@@ -366,7 +366,7 @@ func TestGetHugepageLimitsFromResources(t *testing.T) {
+ 	var baseHugepage []*runtimeapi.HugepageLimit
+ 
+ 	// For each page size, limit to 0.
+-	for _, pageSize := range cgroupfs.HugePageSizes {
++	for _, pageSize := range cgroups.HugePageSizes() {
+ 		baseHugepage = append(baseHugepage, &runtimeapi.HugepageLimit{
+ 			PageSize: pageSize,
+ 			Limit:    uint64(0),
+@@ -481,7 +481,7 @@ func TestGetHugepageLimitsFromResources(t *testing.T) {
+ 		machineHugepageSupport := true
+ 		for _, hugepageLimit := range test.expected {
+ 			hugepageSupport := false
+-			for _, pageSize := range cgroupfs.HugePageSizes {
++			for _, pageSize := range cgroups.HugePageSizes() {
+ 				if pageSize == hugepageLimit.PageSize {
+ 					hugepageSupport = true
+ 					break
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/k8s-backport-no-dockershim.patch b/third_party/go/patches/k8s-backport-no-dockershim.patch
new file mode 100644
index 0000000..452c7e1
--- /dev/null
+++ b/third_party/go/patches/k8s-backport-no-dockershim.patch
@@ -0,0 +1,191 @@
+From bc78dff42ec6be929648e91f3ef2dd6dae5169fb Mon Sep 17 00:00:00 2001
+From: Davanum Srinivas <davanum@gmail.com>
+Date: Tue, 7 Dec 2021 14:48:57 -0500
+Subject: [PATCH] update files to drop dockershim
+
+Signed-off-by: Davanum Srinivas <davanum@gmail.com>
+---
+ build/dependencies.yaml                       |  2 --
+ cmd/kubelet/app/options/globalflags_linux.go  | 11 --------
+ go.mod                                        |  5 ----
+ go.sum                                        |  3 ---
+ pkg/kubelet/kubelet.go                        | 26 +------------------
+ .../legacy-cloud-providers/aws/aws_fakes.go   |  1 +
+ test/e2e/framework/.import-restrictions       | 10 -------
+ 7 files changed, 2 insertions(+), 56 deletions(-)
+
+diff --git a/build/dependencies.yaml b/build/dependencies.yaml
+index ff296e255b961..b0b1b5a6d41b8 100644
+--- a/build/dependencies.yaml
++++ b/build/dependencies.yaml
+@@ -172,8 +172,6 @@ dependencies:
+       match: defaultPodSandboxImageVersion\s+=
+     - path: hack/testdata/pod-with-precision.json
+       match: k8s.gcr.io\/pause:\d+\.\d+
+-    - path: pkg/kubelet/dockershim/docker_sandbox.go
+-      match: k8s.gcr.io\/pause:\d+\.\d+
+     - path: staging/src/k8s.io/kubectl/testdata/set/multi-resource-yaml.yaml
+       match: k8s.gcr.io\/pause:\d+\.\d+
+     - path: staging/src/k8s.io/kubectl/testdata/set/namespaced-resource.yaml
+diff --git a/cmd/kubelet/app/options/globalflags_linux.go b/cmd/kubelet/app/options/globalflags_linux.go
+index ad3b68628f661..e75e65ec37cd0 100644
+--- a/cmd/kubelet/app/options/globalflags_linux.go
++++ b/cmd/kubelet/app/options/globalflags_linux.go
+@@ -28,7 +28,6 @@ import (
+ 	// ensure libs have a chance to globally register their flags
+ 	_ "github.com/google/cadvisor/container/common"
+ 	_ "github.com/google/cadvisor/container/containerd"
+-	_ "github.com/google/cadvisor/container/docker"
+ 	_ "github.com/google/cadvisor/container/raw"
+ 	_ "github.com/google/cadvisor/machine"
+ 	_ "github.com/google/cadvisor/manager"
+@@ -41,9 +40,6 @@ func addCadvisorFlags(fs *pflag.FlagSet) {
+ 	global := flag.CommandLine
+ 	local := pflag.NewFlagSet(os.Args[0], pflag.ExitOnError)
+ 
+-	// These flags were also implicit from cadvisor, but are actually used by something in the core repo:
+-	// TODO(mtaufen): This one is stil used by our salt, but for heaven's sake it's even deprecated in cadvisor
+-	register(global, local, "docker_root")
+ 	// e2e node tests rely on this
+ 	register(global, local, "housekeeping_interval")
+ 
+@@ -54,13 +50,6 @@ func addCadvisorFlags(fs *pflag.FlagSet) {
+ 	registerDeprecated(global, local, "boot_id_file", deprecated)
+ 	registerDeprecated(global, local, "container_hints", deprecated)
+ 	registerDeprecated(global, local, "containerd", deprecated)
+-	registerDeprecated(global, local, "docker", deprecated)
+-	registerDeprecated(global, local, "docker_env_metadata_whitelist", deprecated)
+-	registerDeprecated(global, local, "docker_only", deprecated)
+-	registerDeprecated(global, local, "docker-tls", deprecated)
+-	registerDeprecated(global, local, "docker-tls-ca", deprecated)
+-	registerDeprecated(global, local, "docker-tls-cert", deprecated)
+-	registerDeprecated(global, local, "docker-tls-key", deprecated)
+ 	registerDeprecated(global, local, "enable_load_reader", deprecated)
+ 	registerDeprecated(global, local, "event_storage_age_limit", deprecated)
+ 	registerDeprecated(global, local, "event_storage_event_limit", deprecated)
+diff --git a/go.mod b/go.mod
+index a17878d68d030..7dccd35bb6b91 100644
+--- a/go.mod
++++ b/go.mod
+@@ -25,15 +25,12 @@ require (
+ 	github.com/boltdb/bolt v1.3.1 // indirect
+ 	github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313
+ 	github.com/container-storage-interface/spec v1.5.0
+-	github.com/containernetworking/cni v0.8.1
+ 	github.com/coredns/corefile-migration v1.0.14
+ 	github.com/coreos/go-oidc v2.1.0+incompatible
+ 	github.com/coreos/go-systemd/v22 v22.3.2
+ 	github.com/cpuguy83/go-md2man/v2 v2.0.0
+ 	github.com/davecgh/go-spew v1.1.1
+ 	github.com/docker/distribution v2.7.1+incompatible
+-	github.com/docker/docker v20.10.7+incompatible
+-	github.com/docker/go-connections v0.4.0
+ 	github.com/docker/go-units v0.4.0
+ 	github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153
+ 	github.com/emicklei/go-restful v2.9.5+incompatible
+@@ -63,7 +60,6 @@ require (
+ 	github.com/mvdan/xurls v1.1.0
+ 	github.com/onsi/ginkgo v1.14.0
+ 	github.com/onsi/gomega v1.10.1
+-	github.com/opencontainers/go-digest v1.0.0
+ 	github.com/opencontainers/runc v1.0.2
+ 	github.com/opencontainers/selinux v1.8.2
+ 	github.com/pkg/errors v0.9.1
+@@ -209,7 +205,6 @@ replace (
+ 	github.com/containerd/go-runc => github.com/containerd/go-runc v1.0.0
+ 	github.com/containerd/ttrpc => github.com/containerd/ttrpc v1.0.2
+ 	github.com/containerd/typeurl => github.com/containerd/typeurl v1.0.2
+-	github.com/containernetworking/cni => github.com/containernetworking/cni v0.8.1
+ 	github.com/coredns/caddy => github.com/coredns/caddy v1.1.0
+ 	github.com/coredns/corefile-migration => github.com/coredns/corefile-migration v1.0.14
+ 	github.com/coreos/go-oidc => github.com/coreos/go-oidc v2.1.0+incompatible
+diff --git a/go.sum b/go.sum
+index b458fb06802b3..9121b2f4ac81a 100644
+--- a/go.sum
++++ b/go.sum
+@@ -116,8 +116,6 @@ github.com/containerd/ttrpc v1.0.2 h1:2/O3oTZN36q2xRolk0a2WWGgh7/Vf/liElg5hFYLX9
+ github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y=
+ github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY=
+ github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s=
+-github.com/containernetworking/cni v0.8.1 h1:7zpDnQ3T3s4ucOuJ/ZCLrYBxzkg0AELFfII3Epo9TmI=
+-github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY=
+ github.com/coredns/caddy v1.1.0 h1:ezvsPrT/tA/7pYDBZxu0cT0VmWk75AfIaf6GSYCNMf0=
+ github.com/coredns/caddy v1.1.0/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4=
+ github.com/coredns/corefile-migration v1.0.14 h1:Tz3WZhoj2NdP8drrQH86NgnCng+VrPjNeg2Oe1ALKag=
+@@ -353,7 +351,6 @@ github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb h1:e+l77LJOEqXTIQih
+ github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
+ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
+ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
+-github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
+ github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
+ github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4=
+ github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
+diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go
+index 2013c871a608a..0e6f5f946dea0 100644
+--- a/pkg/kubelet/kubelet.go
++++ b/pkg/kubelet/kubelet.go
+@@ -73,7 +73,6 @@ import (
+ 	"k8s.io/kubernetes/pkg/kubelet/configmap"
+ 	kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
+ 	"k8s.io/kubernetes/pkg/kubelet/cri/remote"
+-	"k8s.io/kubernetes/pkg/kubelet/cri/streaming"
+ 	"k8s.io/kubernetes/pkg/kubelet/events"
+ 	"k8s.io/kubernetes/pkg/kubelet/eviction"
+ 	"k8s.io/kubernetes/pkg/kubelet/images"
+@@ -310,18 +309,7 @@ func PreInitRuntimeService(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
+ 
+ 	switch containerRuntime {
+ 	case kubetypes.DockerContainerRuntime:
+-		klog.InfoS("Using dockershim is deprecated, please consider using a full-fledged CRI implementation")
+-		if err := runDockershim(
+-			kubeCfg,
+-			kubeDeps,
+-			crOptions,
+-			runtimeCgroups,
+-			remoteRuntimeEndpoint,
+-			remoteImageEndpoint,
+-			nonMasqueradeCIDR,
+-		); err != nil {
+-			return err
+-		}
++		return fmt.Errorf("using dockershim is not supported, please consider using a full-fledged CRI implementation")
+ 	case kubetypes.RemoteContainerRuntime:
+ 		// No-op.
+ 		break
+@@ -2440,15 +2428,3 @@ func isSyncPodWorthy(event *pleg.PodLifecycleEvent) bool {
+ 	// ContainerRemoved doesn't affect pod state
+ 	return event.Type != pleg.ContainerRemoved
+ }
+-
+-// Gets the streaming server configuration to use with in-process CRI shims.
+-func getStreamingConfig(kubeCfg *kubeletconfiginternal.KubeletConfiguration, kubeDeps *Dependencies, crOptions *config.ContainerRuntimeOptions) *streaming.Config {
+-	config := &streaming.Config{
+-		StreamIdleTimeout:               kubeCfg.StreamingConnectionIdleTimeout.Duration,
+-		StreamCreationTimeout:           streaming.DefaultConfig.StreamCreationTimeout,
+-		SupportedRemoteCommandProtocols: streaming.DefaultConfig.SupportedRemoteCommandProtocols,
+-		SupportedPortForwardProtocols:   streaming.DefaultConfig.SupportedPortForwardProtocols,
+-	}
+-	config.Addr = net.JoinHostPort("localhost", "0")
+-	return config
+-}
+diff --git a/test/e2e/framework/.import-restrictions b/test/e2e/framework/.import-restrictions
+index a60fb9d790847..1353f40df9ddf 100644
+--- a/test/e2e/framework/.import-restrictions
++++ b/test/e2e/framework/.import-restrictions
+@@ -86,16 +86,6 @@ rules:
+       - k8s.io/kubernetes/pkg/kubelet/config
+       - k8s.io/kubernetes/pkg/kubelet/configmap
+       - k8s.io/kubernetes/pkg/kubelet/container
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/cm
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/metrics
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/network
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/network/metrics
+-      - k8s.io/kubernetes/pkg/kubelet/dockershim/remote
+       - k8s.io/kubernetes/pkg/kubelet/envvars
+       - k8s.io/kubernetes/pkg/kubelet/eviction
+       - k8s.io/kubernetes/pkg/kubelet/eviction/api
diff --git a/third_party/go/patches/k8s-client-go.patch b/third_party/go/patches/k8s-client-go.patch
deleted file mode 100644
index ebfae0e..0000000
--- a/third_party/go/patches/k8s-client-go.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-This patch rips out azure/openstack auth support for k8s.io/client-go. This should be made configurable upstream.
-
-diff -ur io_k8s_client_go.orig/plugin/pkg/client/auth/plugins.go io_k8s_client_go/plugin/pkg/client/auth/plugins.go
---- io_k8s_client_go.orig/plugin/pkg/client/auth/plugins.go	2020-04-16 17:46:53.965434780 +0200
-+++ io_k8s_client_go/plugin/pkg/client/auth/plugins.go	2020-04-16 17:47:21.720538171 +0200
-@@ -18,8 +18,6 @@
- 
- import (
- 	// Initialize all known client auth plugins.
--	_ "k8s.io/client-go/plugin/pkg/client/auth/azure"
- 	_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
- 	_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
--	_ "k8s.io/client-go/plugin/pkg/client/auth/openstack"
- )
diff --git a/third_party/go/patches/k8s-drop-legacy-log-path.patch b/third_party/go/patches/k8s-drop-legacy-log-path.patch
index af7b007..356a681 100644
--- a/third_party/go/patches/k8s-drop-legacy-log-path.patch
+++ b/third_party/go/patches/k8s-drop-legacy-log-path.patch
@@ -1,21 +1,6 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 227ccd88e378a002b7c23703eec96aa1d25949eb Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@brun.one>
-Date: Wed, 3 Feb 2021 16:47:38 +0100
+From b2d875981cec8eda9c041f858004f613ea928895 Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 16 Mar 2022 18:10:09 +0100
 Subject: [PATCH] Drop legacy log path
 
 ---
@@ -23,14 +8,14 @@
  .../kuberuntime/kuberuntime_container.go      | 32 ---------------
  pkg/kubelet/kuberuntime/kuberuntime_gc.go     | 39 -------------------
  pkg/kubelet/runonce.go                        |  8 ----
- test/e2e_node/log_path_test.go                | 19 +--------
- 5 files changed, 1 insertion(+), 104 deletions(-)
+ test/e2e_node/log_path_test.go                | 18 ---------
+ 5 files changed, 104 deletions(-)
 
 diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go
-index 902dc7532e1..2d582f65b19 100644
+index 2013c871a60..c3fd4221544 100644
 --- a/pkg/kubelet/kubelet.go
 +++ b/pkg/kubelet/kubelet.go
-@@ -1250,13 +1250,6 @@ func (kl *Kubelet) initializeModules() error {
+@@ -1379,13 +1379,6 @@ func (kl *Kubelet) initializeModules() error {
  		return err
  	}
  
@@ -45,10 +30,10 @@
  	kl.imageManager.Start()
  
 diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go
-index af361122c35..d5b2d245219 100644
+index 9c762ac309e..d1148cc7de5 100644
 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go
 +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go
-@@ -190,25 +190,6 @@ func (m *kubeGenericRuntimeManager) startContainer(podSandboxID string, podSandb
+@@ -254,25 +254,6 @@ func (m *kubeGenericRuntimeManager) startContainer(podSandboxID string, podSandb
  	}
  	m.recordContainerEvent(pod, container, containerID, v1.EventTypeNormal, events.StartedContainer, fmt.Sprintf("Started container %s", container.Name))
  
@@ -66,15 +51,15 @@
 -	// to create it in the first place. it happens when journald logging driver is used with docker.
 -	if _, err := m.osInterface.Stat(containerLog); !os.IsNotExist(err) {
 -		if err := m.osInterface.Symlink(containerLog, legacySymlink); err != nil {
--			klog.Errorf("Failed to create legacy symbolic link %q to container %q log %q: %v",
--				legacySymlink, containerID, containerLog, err)
+-			klog.ErrorS(err, "Failed to create legacy symbolic link", "path", legacySymlink,
+-				"containerID", containerID, "containerLogPath", containerLog)
 -		}
 -	}
 -
  	// Step 4: execute the post start hook.
  	if container.Lifecycle != nil && container.Lifecycle.PostStart != nil {
  		kubeContainerID := kubecontainer.ContainerID{
-@@ -861,19 +842,6 @@ func (m *kubeGenericRuntimeManager) removeContainerLog(containerID string) error
+@@ -967,19 +948,6 @@ func (m *kubeGenericRuntimeManager) removeContainerLog(containerID string) error
  		return err
  	}
  
@@ -95,7 +80,7 @@
  }
  
 diff --git a/pkg/kubelet/kuberuntime/kuberuntime_gc.go b/pkg/kubelet/kuberuntime/kuberuntime_gc.go
-index 8c4f786db9b..b5b104ee6a6 100644
+index 610026661b7..a09dec91fbb 100644
 --- a/pkg/kubelet/kuberuntime/kuberuntime_gc.go
 +++ b/pkg/kubelet/kuberuntime/kuberuntime_gc.go
 @@ -18,7 +18,6 @@ package kuberuntime
@@ -106,7 +91,7 @@
  	"path/filepath"
  	"sort"
  	"time"
-@@ -346,44 +345,6 @@ func (cgc *containerGC) evictPodLogsDirectories(allSourcesReady bool) error {
+@@ -347,44 +346,6 @@ func (cgc *containerGC) evictPodLogsDirectories(allSourcesReady bool) error {
  			}
  		}
  	}
@@ -121,7 +106,7 @@
 -				if err != nil {
 -					// TODO: we should handle container not found (i.e. container was deleted) case differently
 -					// once https://github.com/kubernetes/kubernetes/issues/63336 is resolved
--					klog.Infof("Error getting ContainerStatus for containerID %q: %v", containerID, err)
+-					klog.InfoS("Error getting ContainerStatus for containerID", "containerID", containerID, "err", err)
 -				} else if status.State != runtimeapi.ContainerState_CONTAINER_EXITED {
 -					// Here is how container log rotation works (see containerLogManager#rotateLatestLog):
 -					//
@@ -134,17 +119,17 @@
 -					// See https://github.com/kubernetes/kubernetes/issues/52172
 -					//
 -					// We only remove unhealthy symlink for dead containers
--					klog.V(5).Infof("Container %q is still running, not removing symlink %q.", containerID, logSymlink)
+-					klog.V(5).InfoS("Container is still running, not removing symlink", "containerID", containerID, "path", logSymlink)
 -					continue
 -				}
 -			} else {
--				klog.V(4).Infof("unable to obtain container Id: %v", err)
+-				klog.V(4).InfoS("Unable to obtain container ID", "err", err)
 -			}
 -			err := osInterface.Remove(logSymlink)
 -			if err != nil {
--				klog.Errorf("Failed to remove container log dead symlink %q: %v", logSymlink, err)
+-				klog.ErrorS(err, "Failed to remove container log dead symlink", "path", logSymlink)
 -			} else {
--				klog.V(4).Infof("removed symlink %s", logSymlink)
+-				klog.V(4).InfoS("Removed symlink", "path", logSymlink)
 -			}
 -		}
 -	}
@@ -152,40 +137,36 @@
  }
  
 diff --git a/pkg/kubelet/runonce.go b/pkg/kubelet/runonce.go
-index 1da9c225186..d6a5a63e92d 100644
+index 19b8a4f6a7b..2f0aad713e3 100644
 --- a/pkg/kubelet/runonce.go
 +++ b/pkg/kubelet/runonce.go
-@@ -18,7 +18,6 @@ package kubelet
- 
+@@ -19,7 +19,6 @@ package kubelet
  import (
+ 	"context"
  	"fmt"
 -	"os"
  	"time"
  
- 	"k8s.io/api/core/v1"
-@@ -48,13 +47,6 @@ func (kl *Kubelet) RunOnce(updates <-chan kubetypes.PodUpdate) ([]RunPodResult,
+ 	v1 "k8s.io/api/core/v1"
+@@ -49,13 +48,6 @@ func (kl *Kubelet) RunOnce(updates <-chan kubetypes.PodUpdate) ([]RunPodResult,
  		return nil, err
  	}
  
 -	// If the container logs directory does not exist, create it.
 -	if _, err := os.Stat(ContainerLogsDir); err != nil {
 -		if err := kl.os.MkdirAll(ContainerLogsDir, 0755); err != nil {
--			klog.Errorf("Failed to create directory %q: %v", ContainerLogsDir, err)
+-			klog.ErrorS(err, "Failed to create directory", "path", ContainerLogsDir)
 -		}
 -	}
 -
  	select {
  	case u := <-updates:
- 		klog.Infof("processing manifest with %d pods", len(u.Pods))
+ 		klog.InfoS("Processing manifest with pods", "numPods", len(u.Pods))
 diff --git a/test/e2e_node/log_path_test.go b/test/e2e_node/log_path_test.go
-index 41646f326a5..6568d31e242 100644
+index cfdd9823cb1..35f3b7be465 100644
 --- a/test/e2e_node/log_path_test.go
 +++ b/test/e2e_node/log_path_test.go
-@@ -18,11 +18,10 @@ package e2enode
- 
- import (
- 	"context"
-+
+@@ -22,8 +22,6 @@ import (
  	v1 "k8s.io/api/core/v1"
  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  	"k8s.io/apimachinery/pkg/util/uuid"
@@ -194,7 +175,7 @@
  	"k8s.io/kubernetes/test/e2e/framework"
  	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
  	e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
-@@ -138,22 +137,6 @@ var _ = framework.KubeDescribe("ContainerLogPath [NodeConformance]", func() {
+@@ -144,22 +142,6 @@ var _ = SIGDescribe("ContainerLogPath [NodeConformance]", func() {
  				err := createAndWaitPod(makeLogPod(logPodName, logString))
  				framework.ExpectNoError(err, "Failed waiting for pod: %s to enter success state", logPodName)
  			})
diff --git a/third_party/go/patches/k8s-e2e-tests-providerless.patch b/third_party/go/patches/k8s-e2e-tests-providerless.patch
deleted file mode 100644
index b761257..0000000
--- a/third_party/go/patches/k8s-e2e-tests-providerless.patch
+++ /dev/null
@@ -1,5147 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 65e40a970e3f33f44423653767c9ca8ff792bf70 Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@nexantic.com>
-Date: Mon, 20 Jul 2020 16:50:56 +0200
-Subject: [PATCH] POC Make e2e test suite support providerless
-
----
- .../custom_metrics_stackdriver_autoscaling.go |   2 +
- test/e2e/cloud/imports.go                     |   2 +
- test/e2e/e2e.go                               |  10 -
- test/e2e/e2e_providers.go                     |  32 +
- .../framework/providers/gce/firewall_test.go  |   2 +
- test/e2e/instrumentation/logging/imports.go   |   2 +
- .../instrumentation/monitoring/accelerator.go |   2 +
- .../monitoring/custom_metrics_deployments.go  |   2 +
- .../monitoring/custom_metrics_stackdriver.go  |   4 +-
- .../instrumentation/monitoring/stackdriver.go |   2 +
- .../monitoring/stackdriver_metadata_agent.go  |   4 +-
- test/e2e/network/firewall.go                  |   2 +
- test/e2e/network/ingress.go                   |   2 +
- test/e2e/network/ingress_scale.go             |   2 +
- test/e2e/network/network_tiers.go             |   2 +
- test/e2e/network/scale/ingress.go             |   2 +
- .../network/scale/localrun/ingress_scale.go   |   2 +-
- test/e2e/network/service.go                   | 955 -----------------
- test/e2e/network/service_providers.go         | 980 ++++++++++++++++++
- test/e2e/node/recreate_node.go                |   2 +
- test/e2e/scheduling/nvidia-gpus.go            |   2 +
- test/e2e/scheduling/ubernetes_lite_volumes.go |   2 +
- test/e2e/storage/drivers/in_tree.go           | 732 -------------
- test/e2e/storage/drivers/in_tree_providers.go | 751 ++++++++++++++
- test/e2e/storage/in_tree_volumes.go           |   5 -
- test/e2e/storage/in_tree_volumes_providers.go |  46 +
- .../nfs_persistent_volume-disruptive.go       |   2 +-
- test/e2e/storage/pd.go                        |   2 +
- test/e2e/storage/persistent_volumes-gce.go    |   2 +
- test/e2e/storage/regional_pd.go               |   3 +
- test/e2e/storage/utils/BUILD                  |   3 -
- test/e2e/storage/utils/ebs.go                 |   2 +
- test/e2e/storage/volume_provisioning.go       | 527 ----------
- .../storage/volume_provisioning_providers.go  | 577 +++++++++++
- test/e2e/upgrades/nvidia-gpu.go               |   2 +
- 35 files changed, 2435 insertions(+), 2236 deletions(-)
- create mode 100644 test/e2e/e2e_providers.go
- create mode 100644 test/e2e/network/service_providers.go
- create mode 100644 test/e2e/storage/drivers/in_tree_providers.go
- create mode 100644 test/e2e/storage/in_tree_volumes_providers.go
- create mode 100644 test/e2e/storage/volume_provisioning_providers.go
-
-diff --git a/test/e2e/autoscaling/custom_metrics_stackdriver_autoscaling.go b/test/e2e/autoscaling/custom_metrics_stackdriver_autoscaling.go
-index d3a7862d338..8bacec7fe1d 100644
---- a/test/e2e/autoscaling/custom_metrics_stackdriver_autoscaling.go
-+++ b/test/e2e/autoscaling/custom_metrics_stackdriver_autoscaling.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/cloud/imports.go b/test/e2e/cloud/imports.go
-index 5aa1def97d1..382cb1a2264 100644
---- a/test/e2e/cloud/imports.go
-+++ b/test/e2e/cloud/imports.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2019 The Kubernetes Authors.
- 
-diff --git a/test/e2e/e2e.go b/test/e2e/e2e.go
-index d1e23325d69..f5717e417e7 100644
---- a/test/e2e/e2e.go
-+++ b/test/e2e/e2e.go
-@@ -53,16 +53,6 @@ import (
- 	utilnet "k8s.io/utils/net"
- 
- 	clientset "k8s.io/client-go/kubernetes"
--	// ensure auth plugins are loaded
--	_ "k8s.io/client-go/plugin/pkg/client/auth"
--
--	// ensure that cloud providers are loaded
--	_ "k8s.io/kubernetes/test/e2e/framework/providers/aws"
--	_ "k8s.io/kubernetes/test/e2e/framework/providers/azure"
--	_ "k8s.io/kubernetes/test/e2e/framework/providers/gce"
--	_ "k8s.io/kubernetes/test/e2e/framework/providers/kubemark"
--	_ "k8s.io/kubernetes/test/e2e/framework/providers/openstack"
--	_ "k8s.io/kubernetes/test/e2e/framework/providers/vsphere"
- )
- 
- const (
-diff --git a/test/e2e/e2e_providers.go b/test/e2e/e2e_providers.go
-new file mode 100644
-index 00000000000..cf96642b110
---- /dev/null
-+++ b/test/e2e/e2e_providers.go
-@@ -0,0 +1,32 @@
-+// +build !providerless
-+
-+/*
-+Copyright 2020 The Kubernetes Authors.
-+
-+Licensed under the Apache License, Version 2.0 (the "License");
-+you may not use this file except in compliance with the License.
-+You may obtain a copy of the License at
-+
-+    http://www.apache.org/licenses/LICENSE-2.0
-+
-+Unless required by applicable law or agreed to in writing, software
-+distributed under the License is distributed on an "AS IS" BASIS,
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+See the License for the specific language governing permissions and
-+limitations under the License.
-+*/
-+
-+package e2e
-+
-+import (
-+	// ensure auth plugins are loaded
-+	_ "k8s.io/client-go/plugin/pkg/client/auth"
-+
-+	// ensure that cloud providers are loaded
-+	_ "k8s.io/kubernetes/test/e2e/framework/providers/aws"
-+	_ "k8s.io/kubernetes/test/e2e/framework/providers/azure"
-+	_ "k8s.io/kubernetes/test/e2e/framework/providers/gce"
-+	_ "k8s.io/kubernetes/test/e2e/framework/providers/kubemark"
-+	_ "k8s.io/kubernetes/test/e2e/framework/providers/openstack"
-+	_ "k8s.io/kubernetes/test/e2e/framework/providers/vsphere"
-+)
-diff --git a/test/e2e/framework/providers/gce/firewall_test.go b/test/e2e/framework/providers/gce/firewall_test.go
-index 647441dc962..2a92543a5a7 100644
---- a/test/e2e/framework/providers/gce/firewall_test.go
-+++ b/test/e2e/framework/providers/gce/firewall_test.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2018 The Kubernetes Authors.
- 
-diff --git a/test/e2e/instrumentation/logging/imports.go b/test/e2e/instrumentation/logging/imports.go
-index 5dd66717db1..fc15c04bfef 100644
---- a/test/e2e/instrumentation/logging/imports.go
-+++ b/test/e2e/instrumentation/logging/imports.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/instrumentation/monitoring/accelerator.go b/test/e2e/instrumentation/monitoring/accelerator.go
-index 90047e46ea1..6fa094e6a18 100644
---- a/test/e2e/instrumentation/monitoring/accelerator.go
-+++ b/test/e2e/instrumentation/monitoring/accelerator.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go b/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go
-index de80b129315..8d96b93bf11 100644
---- a/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go
-+++ b/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go b/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go
-index 277b5a0ab24..ddbc3f20802 100644
---- a/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go
-+++ b/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-@@ -21,7 +23,7 @@ import (
- 	"time"
- 
- 	gcm "google.golang.org/api/monitoring/v3"
--	"k8s.io/api/core/v1"
-+	v1 "k8s.io/api/core/v1"
- 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- 	"k8s.io/apimachinery/pkg/labels"
- 	"k8s.io/apimachinery/pkg/runtime/schema"
-diff --git a/test/e2e/instrumentation/monitoring/stackdriver.go b/test/e2e/instrumentation/monitoring/stackdriver.go
-index dbc5e51c20d..3db0120900b 100644
---- a/test/e2e/instrumentation/monitoring/stackdriver.go
-+++ b/test/e2e/instrumentation/monitoring/stackdriver.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/instrumentation/monitoring/stackdriver_metadata_agent.go b/test/e2e/instrumentation/monitoring/stackdriver_metadata_agent.go
-index 321591344db..bad9be5b5bf 100644
---- a/test/e2e/instrumentation/monitoring/stackdriver_metadata_agent.go
-+++ b/test/e2e/instrumentation/monitoring/stackdriver_metadata_agent.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-@@ -24,7 +26,7 @@ import (
- 	"reflect"
- 	"time"
- 
--	"k8s.io/api/core/v1"
-+	v1 "k8s.io/api/core/v1"
- 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- 	clientset "k8s.io/client-go/kubernetes"
- 	"k8s.io/kubernetes/test/e2e/framework"
-diff --git a/test/e2e/network/firewall.go b/test/e2e/network/firewall.go
-index f4200f5a30c..f8612ed75a9 100644
---- a/test/e2e/network/firewall.go
-+++ b/test/e2e/network/firewall.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2016 The Kubernetes Authors.
- 
-diff --git a/test/e2e/network/ingress.go b/test/e2e/network/ingress.go
-index 6c3b09e41f2..8485f8ce50e 100644
---- a/test/e2e/network/ingress.go
-+++ b/test/e2e/network/ingress.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2015 The Kubernetes Authors.
- 
-diff --git a/test/e2e/network/ingress_scale.go b/test/e2e/network/ingress_scale.go
-index 6cc8585b7b2..867c834868c 100644
---- a/test/e2e/network/ingress_scale.go
-+++ b/test/e2e/network/ingress_scale.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2018 The Kubernetes Authors.
- 
-diff --git a/test/e2e/network/network_tiers.go b/test/e2e/network/network_tiers.go
-index 5ae68a5a1ee..f3ea1f72a6b 100644
---- a/test/e2e/network/network_tiers.go
-+++ b/test/e2e/network/network_tiers.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/network/scale/ingress.go b/test/e2e/network/scale/ingress.go
-index 954296beb52..43ad9c9b618 100644
---- a/test/e2e/network/scale/ingress.go
-+++ b/test/e2e/network/scale/ingress.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2018 The Kubernetes Authors.
- 
-diff --git a/test/e2e/network/scale/localrun/ingress_scale.go b/test/e2e/network/scale/localrun/ingress_scale.go
-index 2e2c39884da..5a27f5f4cb2 100644
---- a/test/e2e/network/scale/localrun/ingress_scale.go
-+++ b/test/e2e/network/scale/localrun/ingress_scale.go
-@@ -27,7 +27,7 @@ import (
- 
- 	"k8s.io/klog/v2"
- 
--	"k8s.io/api/core/v1"
-+	v1 "k8s.io/api/core/v1"
- 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- 	clientset "k8s.io/client-go/kubernetes"
- 	"k8s.io/client-go/tools/clientcmd"
-diff --git a/test/e2e/network/service.go b/test/e2e/network/service.go
-index 35ac43001d2..b458347a9f9 100644
---- a/test/e2e/network/service.go
-+++ b/test/e2e/network/service.go
-@@ -31,8 +31,6 @@ import (
- 
- 	utilnet "k8s.io/apimachinery/pkg/util/net"
- 
--	compute "google.golang.org/api/compute/v1"
--
- 	"k8s.io/client-go/tools/cache"
- 
- 	appsv1 "k8s.io/api/apps/v1"
-@@ -52,11 +50,9 @@ import (
- 	e2edeployment "k8s.io/kubernetes/test/e2e/framework/deployment"
- 	e2eendpoints "k8s.io/kubernetes/test/e2e/framework/endpoints"
- 	e2eendpointslice "k8s.io/kubernetes/test/e2e/framework/endpointslice"
--	e2ekubesystem "k8s.io/kubernetes/test/e2e/framework/kubesystem"
- 	e2enetwork "k8s.io/kubernetes/test/e2e/framework/network"
- 	e2enode "k8s.io/kubernetes/test/e2e/framework/node"
- 	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
--	"k8s.io/kubernetes/test/e2e/framework/providers/gce"
- 	e2erc "k8s.io/kubernetes/test/e2e/framework/rc"
- 	e2eservice "k8s.io/kubernetes/test/e2e/framework/service"
- 	e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
-@@ -64,7 +60,6 @@ import (
- 	"k8s.io/kubernetes/test/e2e/storage/utils"
- 	testutils "k8s.io/kubernetes/test/utils"
- 	imageutils "k8s.io/kubernetes/test/utils/image"
--	gcecloud "k8s.io/legacy-cloud-providers/gce"
- 
- 	"github.com/onsi/ginkgo"
- 	"github.com/onsi/gomega"
-@@ -1242,375 +1237,6 @@ var _ = SIGDescribe("Services", func() {
- 		framework.ExpectNoError(err)
- 	})
- 
--	// TODO: Get rid of [DisabledForLargeClusters] tag when issue #56138 is fixed.
--	ginkgo.It("should be able to change the type and ports of a service [Slow] [DisabledForLargeClusters]", func() {
--		// requires cloud load-balancer support
--		e2eskipper.SkipUnlessProviderIs("gce", "gke", "aws")
--
--		loadBalancerSupportsUDP := !framework.ProviderIs("aws")
--
--		loadBalancerLagTimeout := e2eservice.LoadBalancerLagTimeoutDefault
--		if framework.ProviderIs("aws") {
--			loadBalancerLagTimeout = e2eservice.LoadBalancerLagTimeoutAWS
--		}
--		loadBalancerCreateTimeout := e2eservice.GetServiceLoadBalancerCreationTimeout(cs)
--
--		// This test is more monolithic than we'd like because LB turnup can be
--		// very slow, so we lumped all the tests into one LB lifecycle.
--
--		serviceName := "mutability-test"
--		ns1 := f.Namespace.Name // LB1 in ns1 on TCP
--		framework.Logf("namespace for TCP test: %s", ns1)
--
--		ginkgo.By("creating a second namespace")
--		namespacePtr, err := f.CreateNamespace("services", nil)
--		framework.ExpectNoError(err, "failed to create namespace")
--		ns2 := namespacePtr.Name // LB2 in ns2 on UDP
--		framework.Logf("namespace for UDP test: %s", ns2)
--
--		nodeIP, err := e2enode.PickIP(cs) // for later
--		framework.ExpectNoError(err)
--
--		// Test TCP and UDP Services.  Services with the same name in different
--		// namespaces should get different node ports and load balancers.
--
--		ginkgo.By("creating a TCP service " + serviceName + " with type=ClusterIP in namespace " + ns1)
--		tcpJig := e2eservice.NewTestJig(cs, ns1, serviceName)
--		tcpService, err := tcpJig.CreateTCPService(nil)
--		framework.ExpectNoError(err)
--
--		ginkgo.By("creating a UDP service " + serviceName + " with type=ClusterIP in namespace " + ns2)
--		udpJig := e2eservice.NewTestJig(cs, ns2, serviceName)
--		udpService, err := udpJig.CreateUDPService(nil)
--		framework.ExpectNoError(err)
--
--		ginkgo.By("verifying that TCP and UDP use the same port")
--		if tcpService.Spec.Ports[0].Port != udpService.Spec.Ports[0].Port {
--			framework.Failf("expected to use the same port for TCP and UDP")
--		}
--		svcPort := int(tcpService.Spec.Ports[0].Port)
--		framework.Logf("service port (TCP and UDP): %d", svcPort)
--
--		ginkgo.By("creating a pod to be part of the TCP service " + serviceName)
--		_, err = tcpJig.Run(nil)
--		framework.ExpectNoError(err)
--
--		ginkgo.By("creating a pod to be part of the UDP service " + serviceName)
--		_, err = udpJig.Run(nil)
--		framework.ExpectNoError(err)
--
--		// Change the services to NodePort.
--
--		ginkgo.By("changing the TCP service to type=NodePort")
--		tcpService, err = tcpJig.UpdateService(func(s *v1.Service) {
--			s.Spec.Type = v1.ServiceTypeNodePort
--		})
--		framework.ExpectNoError(err)
--		tcpNodePort := int(tcpService.Spec.Ports[0].NodePort)
--		framework.Logf("TCP node port: %d", tcpNodePort)
--
--		ginkgo.By("changing the UDP service to type=NodePort")
--		udpService, err = udpJig.UpdateService(func(s *v1.Service) {
--			s.Spec.Type = v1.ServiceTypeNodePort
--		})
--		framework.ExpectNoError(err)
--		udpNodePort := int(udpService.Spec.Ports[0].NodePort)
--		framework.Logf("UDP node port: %d", udpNodePort)
--
--		ginkgo.By("hitting the TCP service's NodePort")
--		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the UDP service's NodePort")
--		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		// Change the services to LoadBalancer.
--
--		// Here we test that LoadBalancers can receive static IP addresses.  This isn't
--		// necessary, but is an additional feature this monolithic test checks.
--		requestedIP := ""
--		staticIPName := ""
--		if framework.ProviderIs("gce", "gke") {
--			ginkgo.By("creating a static load balancer IP")
--			staticIPName = fmt.Sprintf("e2e-external-lb-test-%s", framework.RunID)
--			gceCloud, err := gce.GetGCECloud()
--			framework.ExpectNoError(err, "failed to get GCE cloud provider")
--
--			err = gceCloud.ReserveRegionAddress(&compute.Address{Name: staticIPName}, gceCloud.Region())
--			defer func() {
--				if staticIPName != "" {
--					// Release GCE static IP - this is not kube-managed and will not be automatically released.
--					if err := gceCloud.DeleteRegionAddress(staticIPName, gceCloud.Region()); err != nil {
--						framework.Logf("failed to release static IP %s: %v", staticIPName, err)
--					}
--				}
--			}()
--			framework.ExpectNoError(err, "failed to create region address: %s", staticIPName)
--			reservedAddr, err := gceCloud.GetRegionAddress(staticIPName, gceCloud.Region())
--			framework.ExpectNoError(err, "failed to get region address: %s", staticIPName)
--
--			requestedIP = reservedAddr.Address
--			framework.Logf("Allocated static load balancer IP: %s", requestedIP)
--		}
--
--		ginkgo.By("changing the TCP service to type=LoadBalancer")
--		tcpService, err = tcpJig.UpdateService(func(s *v1.Service) {
--			s.Spec.LoadBalancerIP = requestedIP // will be "" if not applicable
--			s.Spec.Type = v1.ServiceTypeLoadBalancer
--		})
--		framework.ExpectNoError(err)
--
--		if loadBalancerSupportsUDP {
--			ginkgo.By("changing the UDP service to type=LoadBalancer")
--			udpService, err = udpJig.UpdateService(func(s *v1.Service) {
--				s.Spec.Type = v1.ServiceTypeLoadBalancer
--			})
--			framework.ExpectNoError(err)
--		}
--		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(tcpService))
--		if loadBalancerSupportsUDP {
--			serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(udpService))
--		}
--
--		ginkgo.By("waiting for the TCP service to have a load balancer")
--		// Wait for the load balancer to be created asynchronously
--		tcpService, err = tcpJig.WaitForLoadBalancer(loadBalancerCreateTimeout)
--		framework.ExpectNoError(err)
--		if int(tcpService.Spec.Ports[0].NodePort) != tcpNodePort {
--			framework.Failf("TCP Spec.Ports[0].NodePort changed (%d -> %d) when not expected", tcpNodePort, tcpService.Spec.Ports[0].NodePort)
--		}
--		if requestedIP != "" && e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]) != requestedIP {
--			framework.Failf("unexpected TCP Status.LoadBalancer.Ingress (expected %s, got %s)", requestedIP, e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
--		}
--		tcpIngressIP := e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0])
--		framework.Logf("TCP load balancer: %s", tcpIngressIP)
--
--		if framework.ProviderIs("gce", "gke") {
--			// Do this as early as possible, which overrides the `defer` above.
--			// This is mostly out of fear of leaking the IP in a timeout case
--			// (as of this writing we're not 100% sure where the leaks are
--			// coming from, so this is first-aid rather than surgery).
--			ginkgo.By("demoting the static IP to ephemeral")
--			if staticIPName != "" {
--				gceCloud, err := gce.GetGCECloud()
--				framework.ExpectNoError(err, "failed to get GCE cloud provider")
--				// Deleting it after it is attached "demotes" it to an
--				// ephemeral IP, which can be auto-released.
--				if err := gceCloud.DeleteRegionAddress(staticIPName, gceCloud.Region()); err != nil {
--					framework.Failf("failed to release static IP %s: %v", staticIPName, err)
--				}
--				staticIPName = ""
--			}
--		}
--
--		var udpIngressIP string
--		if loadBalancerSupportsUDP {
--			ginkgo.By("waiting for the UDP service to have a load balancer")
--			// 2nd one should be faster since they ran in parallel.
--			udpService, err = udpJig.WaitForLoadBalancer(loadBalancerCreateTimeout)
--			framework.ExpectNoError(err)
--			if int(udpService.Spec.Ports[0].NodePort) != udpNodePort {
--				framework.Failf("UDP Spec.Ports[0].NodePort changed (%d -> %d) when not expected", udpNodePort, udpService.Spec.Ports[0].NodePort)
--			}
--			udpIngressIP = e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0])
--			framework.Logf("UDP load balancer: %s", udpIngressIP)
--
--			ginkgo.By("verifying that TCP and UDP use different load balancers")
--			if tcpIngressIP == udpIngressIP {
--				framework.Failf("Load balancers are not different: %s", e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
--			}
--		}
--
--		ginkgo.By("hitting the TCP service's NodePort")
--		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the UDP service's NodePort")
--		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the TCP service's LoadBalancer")
--		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerLagTimeout)
--
--		if loadBalancerSupportsUDP {
--			ginkgo.By("hitting the UDP service's LoadBalancer")
--			testReachableUDP(udpIngressIP, svcPort, loadBalancerLagTimeout)
--		}
--
--		// Change the services' node ports.
--
--		ginkgo.By("changing the TCP service's NodePort")
--		tcpService, err = tcpJig.ChangeServiceNodePort(tcpNodePort)
--		framework.ExpectNoError(err)
--		tcpNodePortOld := tcpNodePort
--		tcpNodePort = int(tcpService.Spec.Ports[0].NodePort)
--		if tcpNodePort == tcpNodePortOld {
--			framework.Failf("TCP Spec.Ports[0].NodePort (%d) did not change", tcpNodePort)
--		}
--		if e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]) != tcpIngressIP {
--			framework.Failf("TCP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", tcpIngressIP, e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
--		}
--		framework.Logf("TCP node port: %d", tcpNodePort)
--
--		ginkgo.By("changing the UDP service's NodePort")
--		udpService, err = udpJig.ChangeServiceNodePort(udpNodePort)
--		framework.ExpectNoError(err)
--		udpNodePortOld := udpNodePort
--		udpNodePort = int(udpService.Spec.Ports[0].NodePort)
--		if udpNodePort == udpNodePortOld {
--			framework.Failf("UDP Spec.Ports[0].NodePort (%d) did not change", udpNodePort)
--		}
--		if loadBalancerSupportsUDP && e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]) != udpIngressIP {
--			framework.Failf("UDP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", udpIngressIP, e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]))
--		}
--		framework.Logf("UDP node port: %d", udpNodePort)
--
--		ginkgo.By("hitting the TCP service's new NodePort")
--		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the UDP service's new NodePort")
--		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("checking the old TCP NodePort is closed")
--		testNotReachableHTTP(nodeIP, tcpNodePortOld, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("checking the old UDP NodePort is closed")
--		testNotReachableUDP(nodeIP, udpNodePortOld, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the TCP service's LoadBalancer")
--		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerLagTimeout)
--
--		if loadBalancerSupportsUDP {
--			ginkgo.By("hitting the UDP service's LoadBalancer")
--			testReachableUDP(udpIngressIP, svcPort, loadBalancerLagTimeout)
--		}
--
--		// Change the services' main ports.
--
--		ginkgo.By("changing the TCP service's port")
--		tcpService, err = tcpJig.UpdateService(func(s *v1.Service) {
--			s.Spec.Ports[0].Port++
--		})
--		framework.ExpectNoError(err)
--		svcPortOld := svcPort
--		svcPort = int(tcpService.Spec.Ports[0].Port)
--		if svcPort == svcPortOld {
--			framework.Failf("TCP Spec.Ports[0].Port (%d) did not change", svcPort)
--		}
--		if int(tcpService.Spec.Ports[0].NodePort) != tcpNodePort {
--			framework.Failf("TCP Spec.Ports[0].NodePort (%d) changed", tcpService.Spec.Ports[0].NodePort)
--		}
--		if e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]) != tcpIngressIP {
--			framework.Failf("TCP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", tcpIngressIP, e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
--		}
--
--		ginkgo.By("changing the UDP service's port")
--		udpService, err = udpJig.UpdateService(func(s *v1.Service) {
--			s.Spec.Ports[0].Port++
--		})
--		framework.ExpectNoError(err)
--		if int(udpService.Spec.Ports[0].Port) != svcPort {
--			framework.Failf("UDP Spec.Ports[0].Port (%d) did not change", udpService.Spec.Ports[0].Port)
--		}
--		if int(udpService.Spec.Ports[0].NodePort) != udpNodePort {
--			framework.Failf("UDP Spec.Ports[0].NodePort (%d) changed", udpService.Spec.Ports[0].NodePort)
--		}
--		if loadBalancerSupportsUDP && e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]) != udpIngressIP {
--			framework.Failf("UDP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", udpIngressIP, e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]))
--		}
--
--		framework.Logf("service port (TCP and UDP): %d", svcPort)
--
--		ginkgo.By("hitting the TCP service's NodePort")
--		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the UDP service's NodePort")
--		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the TCP service's LoadBalancer")
--		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
--
--		if loadBalancerSupportsUDP {
--			ginkgo.By("hitting the UDP service's LoadBalancer")
--			testReachableUDP(udpIngressIP, svcPort, loadBalancerCreateTimeout)
--		}
--
--		ginkgo.By("Scaling the pods to 0")
--		err = tcpJig.Scale(0)
--		framework.ExpectNoError(err)
--		err = udpJig.Scale(0)
--		framework.ExpectNoError(err)
--
--		ginkgo.By("looking for ICMP REJECT on the TCP service's NodePort")
--		testRejectedHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("looking for ICMP REJECT on the UDP service's NodePort")
--		testRejectedUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("looking for ICMP REJECT on the TCP service's LoadBalancer")
--		testRejectedHTTP(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
--
--		if loadBalancerSupportsUDP {
--			ginkgo.By("looking for ICMP REJECT on the UDP service's LoadBalancer")
--			testRejectedUDP(udpIngressIP, svcPort, loadBalancerCreateTimeout)
--		}
--
--		ginkgo.By("Scaling the pods to 1")
--		err = tcpJig.Scale(1)
--		framework.ExpectNoError(err)
--		err = udpJig.Scale(1)
--		framework.ExpectNoError(err)
--
--		ginkgo.By("hitting the TCP service's NodePort")
--		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the UDP service's NodePort")
--		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("hitting the TCP service's LoadBalancer")
--		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
--
--		if loadBalancerSupportsUDP {
--			ginkgo.By("hitting the UDP service's LoadBalancer")
--			testReachableUDP(udpIngressIP, svcPort, loadBalancerCreateTimeout)
--		}
--
--		// Change the services back to ClusterIP.
--
--		ginkgo.By("changing TCP service back to type=ClusterIP")
--		_, err = tcpJig.UpdateService(func(s *v1.Service) {
--			s.Spec.Type = v1.ServiceTypeClusterIP
--			s.Spec.Ports[0].NodePort = 0
--		})
--		framework.ExpectNoError(err)
--		// Wait for the load balancer to be destroyed asynchronously
--		_, err = tcpJig.WaitForLoadBalancerDestroy(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
--		framework.ExpectNoError(err)
--
--		ginkgo.By("changing UDP service back to type=ClusterIP")
--		_, err = udpJig.UpdateService(func(s *v1.Service) {
--			s.Spec.Type = v1.ServiceTypeClusterIP
--			s.Spec.Ports[0].NodePort = 0
--		})
--		framework.ExpectNoError(err)
--		if loadBalancerSupportsUDP {
--			// Wait for the load balancer to be destroyed asynchronously
--			_, err = udpJig.WaitForLoadBalancerDestroy(udpIngressIP, svcPort, loadBalancerCreateTimeout)
--			framework.ExpectNoError(err)
--		}
--
--		ginkgo.By("checking the TCP NodePort is closed")
--		testNotReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("checking the UDP NodePort is closed")
--		testNotReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
--
--		ginkgo.By("checking the TCP LoadBalancer is closed")
--		testNotReachableHTTP(tcpIngressIP, svcPort, loadBalancerLagTimeout)
--
--		if loadBalancerSupportsUDP {
--			ginkgo.By("checking the UDP LoadBalancer is closed")
--			testNotReachableUDP(udpIngressIP, svcPort, loadBalancerLagTimeout)
--		}
--	})
--
- 	/*
- 		Testname: Service, update NodePort, same port different protocol
- 		Description: Create a service to accept TCP requests. By default, created service MUST be of type ClusterIP and an ClusterIP MUST be assigned to the service.
-@@ -2253,199 +1879,6 @@ var _ = SIGDescribe("Services", func() {
- 		checkReachabilityFromPod(true, normalReachabilityTimeout, namespace, dropPod.Name, svcIP)
- 	})
- 
--	ginkgo.It("should be able to create an internal type load balancer [Slow]", func() {
--		e2eskipper.SkipUnlessProviderIs("azure", "gke", "gce")
--
--		createTimeout := e2eservice.GetServiceLoadBalancerCreationTimeout(cs)
--		pollInterval := framework.Poll * 10
--
--		namespace := f.Namespace.Name
--		serviceName := "lb-internal"
--		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
--
--		ginkgo.By("creating pod to be part of service " + serviceName)
--		_, err := jig.Run(nil)
--		framework.ExpectNoError(err)
--
--		enableILB, disableILB := enableAndDisableInternalLB()
--
--		isInternalEndpoint := func(lbIngress *v1.LoadBalancerIngress) bool {
--			ingressEndpoint := e2eservice.GetIngressPoint(lbIngress)
--			// Needs update for providers using hostname as endpoint.
--			return strings.HasPrefix(ingressEndpoint, "10.")
--		}
--
--		ginkgo.By("creating a service with type LoadBalancer and cloud specific Internal-LB annotation enabled")
--		svc, err := jig.CreateTCPService(func(svc *v1.Service) {
--			svc.Spec.Type = v1.ServiceTypeLoadBalancer
--			enableILB(svc)
--		})
--		framework.ExpectNoError(err)
--
--		defer func() {
--			ginkgo.By("Clean up loadbalancer service")
--			e2eservice.WaitForServiceDeletedWithFinalizer(cs, svc.Namespace, svc.Name)
--		}()
--
--		svc, err = jig.WaitForLoadBalancer(createTimeout)
--		framework.ExpectNoError(err)
--		lbIngress := &svc.Status.LoadBalancer.Ingress[0]
--		svcPort := int(svc.Spec.Ports[0].Port)
--		// should have an internal IP.
--		framework.ExpectEqual(isInternalEndpoint(lbIngress), true)
--
--		// ILBs are not accessible from the test orchestrator, so it's necessary to use
--		//  a pod to test the service.
--		ginkgo.By("hitting the internal load balancer from pod")
--		framework.Logf("creating pod with host network")
--		hostExec := launchHostExecPod(f.ClientSet, f.Namespace.Name, "ilb-host-exec")
--
--		framework.Logf("Waiting up to %v for service %q's internal LB to respond to requests", createTimeout, serviceName)
--		tcpIngressIP := e2eservice.GetIngressPoint(lbIngress)
--		if pollErr := wait.PollImmediate(pollInterval, createTimeout, func() (bool, error) {
--			cmd := fmt.Sprintf(`curl -m 5 'http://%v:%v/echo?msg=hello'`, tcpIngressIP, svcPort)
--			stdout, err := framework.RunHostCmd(hostExec.Namespace, hostExec.Name, cmd)
--			if err != nil {
--				framework.Logf("error curling; stdout: %v. err: %v", stdout, err)
--				return false, nil
--			}
--
--			if !strings.Contains(stdout, "hello") {
--				framework.Logf("Expected output to contain 'hello', got %q; retrying...", stdout)
--				return false, nil
--			}
--
--			framework.Logf("Successful curl; stdout: %v", stdout)
--			return true, nil
--		}); pollErr != nil {
--			framework.Failf("ginkgo.Failed to hit ILB IP, err: %v", pollErr)
--		}
--
--		ginkgo.By("switching to external type LoadBalancer")
--		svc, err = jig.UpdateService(func(svc *v1.Service) {
--			disableILB(svc)
--		})
--		framework.ExpectNoError(err)
--		framework.Logf("Waiting up to %v for service %q to have an external LoadBalancer", createTimeout, serviceName)
--		if pollErr := wait.PollImmediate(pollInterval, createTimeout, func() (bool, error) {
--			svc, err := cs.CoreV1().Services(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
--			if err != nil {
--				return false, err
--			}
--			lbIngress = &svc.Status.LoadBalancer.Ingress[0]
--			return !isInternalEndpoint(lbIngress), nil
--		}); pollErr != nil {
--			framework.Failf("Loadbalancer IP not changed to external.")
--		}
--		// should have an external IP.
--		gomega.Expect(isInternalEndpoint(lbIngress)).To(gomega.BeFalse())
--
--		ginkgo.By("hitting the external load balancer")
--		framework.Logf("Waiting up to %v for service %q's external LB to respond to requests", createTimeout, serviceName)
--		tcpIngressIP = e2eservice.GetIngressPoint(lbIngress)
--		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, e2eservice.LoadBalancerLagTimeoutDefault)
--
--		// GCE cannot test a specific IP because the test may not own it. This cloud specific condition
--		// will be removed when GCP supports similar functionality.
--		if framework.ProviderIs("azure") {
--			ginkgo.By("switching back to interal type LoadBalancer, with static IP specified.")
--			internalStaticIP := "10.240.11.11"
--			svc, err = jig.UpdateService(func(svc *v1.Service) {
--				svc.Spec.LoadBalancerIP = internalStaticIP
--				enableILB(svc)
--			})
--			framework.ExpectNoError(err)
--			framework.Logf("Waiting up to %v for service %q to have an internal LoadBalancer", createTimeout, serviceName)
--			if pollErr := wait.PollImmediate(pollInterval, createTimeout, func() (bool, error) {
--				svc, err := cs.CoreV1().Services(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
--				if err != nil {
--					return false, err
--				}
--				lbIngress = &svc.Status.LoadBalancer.Ingress[0]
--				return isInternalEndpoint(lbIngress), nil
--			}); pollErr != nil {
--				framework.Failf("Loadbalancer IP not changed to internal.")
--			}
--			// should have the given static internal IP.
--			framework.ExpectEqual(e2eservice.GetIngressPoint(lbIngress), internalStaticIP)
--		}
--	})
--
--	// This test creates a load balancer, make sure its health check interval
--	// equals to gceHcCheckIntervalSeconds. Then the interval is manipulated
--	// to be something else, see if the interval will be reconciled.
--	ginkgo.It("should reconcile LB health check interval [Slow][Serial]", func() {
--		const gceHcCheckIntervalSeconds = int64(8)
--		// This test is for clusters on GCE.
--		// (It restarts kube-controller-manager, which we don't support on GKE)
--		e2eskipper.SkipUnlessProviderIs("gce")
--		e2eskipper.SkipUnlessSSHKeyPresent()
--
--		clusterID, err := gce.GetClusterID(cs)
--		if err != nil {
--			framework.Failf("framework.GetClusterID(cs) = _, %v; want nil", err)
--		}
--		gceCloud, err := gce.GetGCECloud()
--		if err != nil {
--			framework.Failf("framework.GetGCECloud() = _, %v; want nil", err)
--		}
--
--		namespace := f.Namespace.Name
--		serviceName := "lb-hc-int"
--		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
--
--		ginkgo.By("create load balancer service")
--		// Create loadbalancer service with source range from node[0] and podAccept
--		svc, err := jig.CreateTCPService(func(svc *v1.Service) {
--			svc.Spec.Type = v1.ServiceTypeLoadBalancer
--		})
--		framework.ExpectNoError(err)
--
--		defer func() {
--			ginkgo.By("Clean up loadbalancer service")
--			e2eservice.WaitForServiceDeletedWithFinalizer(cs, svc.Namespace, svc.Name)
--		}()
--
--		svc, err = jig.WaitForLoadBalancer(e2eservice.GetServiceLoadBalancerCreationTimeout(cs))
--		framework.ExpectNoError(err)
--
--		hcName := gcecloud.MakeNodesHealthCheckName(clusterID)
--		hc, err := gceCloud.GetHTTPHealthCheck(hcName)
--		if err != nil {
--			framework.Failf("gceCloud.GetHttpHealthCheck(%q) = _, %v; want nil", hcName, err)
--		}
--		framework.ExpectEqual(hc.CheckIntervalSec, gceHcCheckIntervalSeconds)
--
--		ginkgo.By("modify the health check interval")
--		hc.CheckIntervalSec = gceHcCheckIntervalSeconds - 1
--		if err = gceCloud.UpdateHTTPHealthCheck(hc); err != nil {
--			framework.Failf("gcecloud.UpdateHttpHealthCheck(%#v) = %v; want nil", hc, err)
--		}
--
--		ginkgo.By("restart kube-controller-manager")
--		if err := e2ekubesystem.RestartControllerManager(); err != nil {
--			framework.Failf("e2ekubesystem.RestartControllerManager() = %v; want nil", err)
--		}
--		if err := e2ekubesystem.WaitForControllerManagerUp(); err != nil {
--			framework.Failf("e2ekubesystem.WaitForControllerManagerUp() = %v; want nil", err)
--		}
--
--		ginkgo.By("health check should be reconciled")
--		pollInterval := framework.Poll * 10
--		loadBalancerPropagationTimeout := e2eservice.GetServiceLoadBalancerPropagationTimeout(cs)
--		if pollErr := wait.PollImmediate(pollInterval, loadBalancerPropagationTimeout, func() (bool, error) {
--			hc, err := gceCloud.GetHTTPHealthCheck(hcName)
--			if err != nil {
--				framework.Logf("ginkgo.Failed to get HttpHealthCheck(%q): %v", hcName, err)
--				return false, err
--			}
--			framework.Logf("hc.CheckIntervalSec = %v", hc.CheckIntervalSec)
--			return hc.CheckIntervalSec == gceHcCheckIntervalSeconds, nil
--		}); pollErr != nil {
--			framework.Failf("Health check %q does not reconcile its check interval to %d.", hcName, gceHcCheckIntervalSeconds)
--		}
--	})
--
- 	/*
- 		Release: v1.19
- 		Testname: Service, ClusterIP type, session affinity to ClientIP
-@@ -2999,394 +2432,6 @@ var _ = SIGDescribe("Services", func() {
- 	})
- })
- 
--var _ = SIGDescribe("ESIPP [Slow]", func() {
--	f := framework.NewDefaultFramework("esipp")
--	var loadBalancerCreateTimeout time.Duration
--
--	var cs clientset.Interface
--	serviceLBNames := []string{}
--
--	ginkgo.BeforeEach(func() {
--		// requires cloud load-balancer support - this feature currently supported only on GCE/GKE
--		e2eskipper.SkipUnlessProviderIs("gce", "gke")
--
--		cs = f.ClientSet
--		loadBalancerCreateTimeout = e2eservice.GetServiceLoadBalancerCreationTimeout(cs)
--	})
--
--	ginkgo.AfterEach(func() {
--		if ginkgo.CurrentGinkgoTestDescription().Failed {
--			DescribeSvc(f.Namespace.Name)
--		}
--		for _, lb := range serviceLBNames {
--			framework.Logf("cleaning load balancer resource for %s", lb)
--			e2eservice.CleanupServiceResources(cs, lb, framework.TestContext.CloudConfig.Region, framework.TestContext.CloudConfig.Zone)
--		}
--		//reset serviceLBNames
--		serviceLBNames = []string{}
--	})
--
--	ginkgo.It("should work for type=LoadBalancer", func() {
--		namespace := f.Namespace.Name
--		serviceName := "external-local-lb"
--		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
--
--		svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, true, nil)
--		framework.ExpectNoError(err)
--		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
--		healthCheckNodePort := int(svc.Spec.HealthCheckNodePort)
--		if healthCheckNodePort == 0 {
--			framework.Failf("Service HealthCheck NodePort was not allocated")
--		}
--		defer func() {
--			err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
--			framework.ExpectNoError(err)
--
--			// Make sure we didn't leak the health check node port.
--			const threshold = 2
--			nodes, err := getEndpointNodesWithInternalIP(jig)
--			framework.ExpectNoError(err)
--			config := e2enetwork.NewNetworkingTestConfig(f, false, false)
--			for _, internalIP := range nodes {
--				err := testHTTPHealthCheckNodePortFromTestContainer(
--					config,
--					internalIP,
--					healthCheckNodePort,
--					e2eservice.KubeProxyLagTimeout,
--					false,
--					threshold)
--				framework.ExpectNoError(err)
--			}
--			err = cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
--			framework.ExpectNoError(err)
--		}()
--
--		svcTCPPort := int(svc.Spec.Ports[0].Port)
--		ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
--
--		ginkgo.By("reading clientIP using the TCP service's service port via its external VIP")
--		content := GetHTTPContent(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout, "/clientip")
--		clientIP := content.String()
--		framework.Logf("ClientIP detected by target pod using VIP:SvcPort is %s", clientIP)
--
--		ginkgo.By("checking if Source IP is preserved")
--		if strings.HasPrefix(clientIP, "10.") {
--			framework.Failf("Source IP was NOT preserved")
--		}
--	})
--
--	ginkgo.It("should work for type=NodePort", func() {
--		namespace := f.Namespace.Name
--		serviceName := "external-local-nodeport"
--		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
--
--		svc, err := jig.CreateOnlyLocalNodePortService(true)
--		framework.ExpectNoError(err)
--		defer func() {
--			err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
--			framework.ExpectNoError(err)
--		}()
--
--		tcpNodePort := int(svc.Spec.Ports[0].NodePort)
--
--		endpointsNodeMap, err := getEndpointNodesWithInternalIP(jig)
--		framework.ExpectNoError(err)
--
--		dialCmd := "clientip"
--		config := e2enetwork.NewNetworkingTestConfig(f, false, false)
--
--		for nodeName, nodeIP := range endpointsNodeMap {
--			ginkgo.By(fmt.Sprintf("reading clientIP using the TCP service's NodePort, on node %v: %v:%v/%v", nodeName, nodeIP, tcpNodePort, dialCmd))
--			clientIP, err := GetHTTPContentFromTestContainer(config, nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout, dialCmd)
--			framework.ExpectNoError(err)
--			framework.Logf("ClientIP detected by target pod using NodePort is %s, the ip of test container is %s", clientIP, config.TestContainerPod.Status.PodIP)
--			// the clientIP returned by agnhost contains port
--			if !strings.HasPrefix(clientIP, config.TestContainerPod.Status.PodIP) {
--				framework.Failf("Source IP was NOT preserved")
--			}
--		}
--	})
--
--	ginkgo.It("should only target nodes with endpoints", func() {
--		namespace := f.Namespace.Name
--		serviceName := "external-local-nodes"
--		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
--		nodes, err := e2enode.GetBoundedReadySchedulableNodes(cs, e2eservice.MaxNodesForEndpointsTests)
--		framework.ExpectNoError(err)
--
--		svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, false,
--			func(svc *v1.Service) {
--				// Change service port to avoid collision with opened hostPorts
--				// in other tests that run in parallel.
--				if len(svc.Spec.Ports) != 0 {
--					svc.Spec.Ports[0].TargetPort = intstr.FromInt(int(svc.Spec.Ports[0].Port))
--					svc.Spec.Ports[0].Port = 8081
--				}
--
--			})
--		framework.ExpectNoError(err)
--		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
--		defer func() {
--			err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
--			framework.ExpectNoError(err)
--			err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
--			framework.ExpectNoError(err)
--		}()
--
--		healthCheckNodePort := int(svc.Spec.HealthCheckNodePort)
--		if healthCheckNodePort == 0 {
--			framework.Failf("Service HealthCheck NodePort was not allocated")
--		}
--
--		ips := e2enode.CollectAddresses(nodes, v1.NodeInternalIP)
--
--		ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
--		svcTCPPort := int(svc.Spec.Ports[0].Port)
--
--		const threshold = 2
--		config := e2enetwork.NewNetworkingTestConfig(f, false, false)
--		for i := 0; i < len(nodes.Items); i++ {
--			endpointNodeName := nodes.Items[i].Name
--
--			ginkgo.By("creating a pod to be part of the service " + serviceName + " on node " + endpointNodeName)
--			_, err = jig.Run(func(rc *v1.ReplicationController) {
--				rc.Name = serviceName
--				if endpointNodeName != "" {
--					rc.Spec.Template.Spec.NodeName = endpointNodeName
--				}
--			})
--			framework.ExpectNoError(err)
--
--			ginkgo.By(fmt.Sprintf("waiting for service endpoint on node %v", endpointNodeName))
--			err = jig.WaitForEndpointOnNode(endpointNodeName)
--			framework.ExpectNoError(err)
--
--			// HealthCheck should pass only on the node where num(endpoints) > 0
--			// All other nodes should fail the healthcheck on the service healthCheckNodePort
--			for n, internalIP := range ips {
--				// Make sure the loadbalancer picked up the health check change.
--				// Confirm traffic can reach backend through LB before checking healthcheck nodeport.
--				e2eservice.TestReachableHTTP(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout)
--				expectedSuccess := nodes.Items[n].Name == endpointNodeName
--				port := strconv.Itoa(healthCheckNodePort)
--				ipPort := net.JoinHostPort(internalIP, port)
--				framework.Logf("Health checking %s, http://%s/healthz, expectedSuccess %v", nodes.Items[n].Name, ipPort, expectedSuccess)
--				err := testHTTPHealthCheckNodePortFromTestContainer(
--					config,
--					internalIP,
--					healthCheckNodePort,
--					e2eservice.KubeProxyEndpointLagTimeout,
--					expectedSuccess,
--					threshold)
--				framework.ExpectNoError(err)
--			}
--			framework.ExpectNoError(e2erc.DeleteRCAndWaitForGC(f.ClientSet, namespace, serviceName))
--		}
--	})
--
--	ginkgo.It("should work from pods", func() {
--		var err error
--		namespace := f.Namespace.Name
--		serviceName := "external-local-pods"
--		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
--
--		svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, true, nil)
--		framework.ExpectNoError(err)
--		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
--		defer func() {
--			err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
--			framework.ExpectNoError(err)
--			err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
--			framework.ExpectNoError(err)
--		}()
--
--		ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
--		port := strconv.Itoa(int(svc.Spec.Ports[0].Port))
--		ipPort := net.JoinHostPort(ingressIP, port)
--		path := fmt.Sprintf("%s/clientip", ipPort)
--
--		ginkgo.By("Creating pause pod deployment to make sure, pausePods are in desired state")
--		deployment := createPausePodDeployment(cs, "pause-pod-deployment", namespace, 1)
--		framework.ExpectNoError(e2edeployment.WaitForDeploymentComplete(cs, deployment), "Failed to complete pause pod deployment")
--
--		defer func() {
--			framework.Logf("Deleting deployment")
--			err = cs.AppsV1().Deployments(namespace).Delete(context.TODO(), deployment.Name, metav1.DeleteOptions{})
--			framework.ExpectNoError(err, "Failed to delete deployment %s", deployment.Name)
--		}()
--
--		deployment, err = cs.AppsV1().Deployments(namespace).Get(context.TODO(), deployment.Name, metav1.GetOptions{})
--		framework.ExpectNoError(err, "Error in retrieving pause pod deployment")
--		labelSelector, err := metav1.LabelSelectorAsSelector(deployment.Spec.Selector)
--		framework.ExpectNoError(err, "Error in setting LabelSelector as selector from deployment")
--
--		pausePods, err := cs.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{LabelSelector: labelSelector.String()})
--		framework.ExpectNoError(err, "Error in listing pods associated with pause pod deployments")
--
--		pausePod := pausePods.Items[0]
--		framework.Logf("Waiting up to %v curl %v", e2eservice.KubeProxyLagTimeout, path)
--		cmd := fmt.Sprintf(`curl -q -s --connect-timeout 30 %v`, path)
--
--		var srcIP string
--		loadBalancerPropagationTimeout := e2eservice.GetServiceLoadBalancerPropagationTimeout(cs)
--		ginkgo.By(fmt.Sprintf("Hitting external lb %v from pod %v on node %v", ingressIP, pausePod.Name, pausePod.Spec.NodeName))
--		if pollErr := wait.PollImmediate(framework.Poll, loadBalancerPropagationTimeout, func() (bool, error) {
--			stdout, err := framework.RunHostCmd(pausePod.Namespace, pausePod.Name, cmd)
--			if err != nil {
--				framework.Logf("got err: %v, retry until timeout", err)
--				return false, nil
--			}
--			srcIP = strings.TrimSpace(strings.Split(stdout, ":")[0])
--			return srcIP == pausePod.Status.PodIP, nil
--		}); pollErr != nil {
--			framework.Failf("Source IP not preserved from %v, expected '%v' got '%v'", pausePod.Name, pausePod.Status.PodIP, srcIP)
--		}
--	})
--
--	ginkgo.It("should handle updates to ExternalTrafficPolicy field", func() {
--		namespace := f.Namespace.Name
--		serviceName := "external-local-update"
--		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
--
--		nodes, err := e2enode.GetBoundedReadySchedulableNodes(cs, e2eservice.MaxNodesForEndpointsTests)
--		framework.ExpectNoError(err)
--		if len(nodes.Items) < 2 {
--			framework.Failf("Need at least 2 nodes to verify source ip from a node without endpoint")
--		}
--
--		svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, true, nil)
--		framework.ExpectNoError(err)
--		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
--		defer func() {
--			err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
--			framework.ExpectNoError(err)
--			err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
--			framework.ExpectNoError(err)
--		}()
--
--		// save the health check node port because it disappears when ESIPP is turned off.
--		healthCheckNodePort := int(svc.Spec.HealthCheckNodePort)
--
--		ginkgo.By("turning ESIPP off")
--		svc, err = jig.UpdateService(func(svc *v1.Service) {
--			svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster
--		})
--		framework.ExpectNoError(err)
--		if svc.Spec.HealthCheckNodePort > 0 {
--			framework.Failf("Service HealthCheck NodePort still present")
--		}
--
--		epNodes, err := jig.ListNodesWithEndpoint()
--		framework.ExpectNoError(err)
--		// map from name of nodes with endpoint to internal ip
--		// it is assumed that there is only a single node with the endpoint
--		endpointNodeMap := make(map[string]string)
--		// map from name of nodes without endpoint to internal ip
--		noEndpointNodeMap := make(map[string]string)
--		for _, node := range epNodes {
--			ips := e2enode.GetAddresses(&node, v1.NodeInternalIP)
--			if len(ips) < 1 {
--				framework.Failf("No internal ip found for node %s", node.Name)
--			}
--			endpointNodeMap[node.Name] = ips[0]
--		}
--		for _, n := range nodes.Items {
--			ips := e2enode.GetAddresses(&n, v1.NodeInternalIP)
--			if len(ips) < 1 {
--				framework.Failf("No internal ip found for node %s", n.Name)
--			}
--			if _, ok := endpointNodeMap[n.Name]; !ok {
--				noEndpointNodeMap[n.Name] = ips[0]
--			}
--		}
--		framework.ExpectNotEqual(len(endpointNodeMap), 0)
--		framework.ExpectNotEqual(len(noEndpointNodeMap), 0)
--
--		svcTCPPort := int(svc.Spec.Ports[0].Port)
--		svcNodePort := int(svc.Spec.Ports[0].NodePort)
--		ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
--		path := "/clientip"
--		dialCmd := "clientip"
--
--		config := e2enetwork.NewNetworkingTestConfig(f, false, false)
--
--		ginkgo.By(fmt.Sprintf("endpoints present on nodes %v, absent on nodes %v", endpointNodeMap, noEndpointNodeMap))
--		for nodeName, nodeIP := range noEndpointNodeMap {
--			ginkgo.By(fmt.Sprintf("Checking %v (%v:%v/%v) proxies to endpoints on another node", nodeName, nodeIP[0], svcNodePort, dialCmd))
--			_, err := GetHTTPContentFromTestContainer(config, nodeIP, svcNodePort, e2eservice.KubeProxyLagTimeout, dialCmd)
--			framework.ExpectNoError(err, "Could not reach HTTP service through %v:%v/%v after %v", nodeIP, svcNodePort, dialCmd, e2eservice.KubeProxyLagTimeout)
--		}
--
--		for nodeName, nodeIP := range endpointNodeMap {
--			ginkgo.By(fmt.Sprintf("checking kube-proxy health check fails on node with endpoint (%s), public IP %s", nodeName, nodeIP))
--			var body string
--			pollFn := func() (bool, error) {
--				// we expect connection failure here, but not other errors
--				resp, err := config.GetResponseFromTestContainer(
--					"http",
--					"healthz",
--					nodeIP,
--					healthCheckNodePort)
--				if err != nil {
--					return false, nil
--				}
--				if len(resp.Errors) > 0 {
--					return true, nil
--				}
--				if len(resp.Responses) > 0 {
--					body = resp.Responses[0]
--				}
--				return false, nil
--			}
--			if pollErr := wait.PollImmediate(framework.Poll, e2eservice.TestTimeout, pollFn); pollErr != nil {
--				framework.Failf("Kube-proxy still exposing health check on node %v:%v, after ESIPP was turned off. body %s",
--					nodeName, healthCheckNodePort, body)
--			}
--		}
--
--		// Poll till kube-proxy re-adds the MASQUERADE rule on the node.
--		ginkgo.By(fmt.Sprintf("checking source ip is NOT preserved through loadbalancer %v", ingressIP))
--		var clientIP string
--		pollErr := wait.PollImmediate(framework.Poll, e2eservice.KubeProxyLagTimeout, func() (bool, error) {
--			content := GetHTTPContent(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout, "/clientip")
--			clientIP = content.String()
--			if strings.HasPrefix(clientIP, "10.") {
--				return true, nil
--			}
--			return false, nil
--		})
--		if pollErr != nil {
--			framework.Failf("Source IP WAS preserved even after ESIPP turned off. Got %v, expected a ten-dot cluster ip.", clientIP)
--		}
--
--		// TODO: We need to attempt to create another service with the previously
--		// allocated healthcheck nodePort. If the health check nodePort has been
--		// freed, the new service creation will succeed, upon which we cleanup.
--		// If the health check nodePort has NOT been freed, the new service
--		// creation will fail.
--
--		ginkgo.By("setting ExternalTraffic field back to OnlyLocal")
--		svc, err = jig.UpdateService(func(svc *v1.Service) {
--			svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal
--			// Request the same healthCheckNodePort as before, to test the user-requested allocation path
--			svc.Spec.HealthCheckNodePort = int32(healthCheckNodePort)
--		})
--		framework.ExpectNoError(err)
--		pollErr = wait.PollImmediate(framework.Poll, e2eservice.KubeProxyLagTimeout, func() (bool, error) {
--			content := GetHTTPContent(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout, path)
--			clientIP = content.String()
--			ginkgo.By(fmt.Sprintf("Endpoint %v:%v%v returned client ip %v", ingressIP, svcTCPPort, path, clientIP))
--			if !strings.HasPrefix(clientIP, "10.") {
--				return true, nil
--			}
--			return false, nil
--		})
--		if pollErr != nil {
--			framework.Failf("Source IP (%v) is not the client IP even after ESIPP turned on, expected a public IP.", clientIP)
--		}
--	})
--})
--
- // execAffinityTestForSessionAffinityTimeout is a helper function that wrap the logic of
- // affinity test for non-load-balancer services. Session afinity will be
- // enabled when the service is created and a short timeout will be configured so
-diff --git a/test/e2e/network/service_providers.go b/test/e2e/network/service_providers.go
-new file mode 100644
-index 00000000000..b7eae6feb2c
---- /dev/null
-+++ b/test/e2e/network/service_providers.go
-@@ -0,0 +1,980 @@
-+// +build !providerless
-+
-+/*
-+Copyright 2020 The Kubernetes Authors.
-+
-+Licensed under the Apache License, Version 2.0 (the "License");
-+you may not use this file except in compliance with the License.
-+You may obtain a copy of the License at
-+
-+    http://www.apache.org/licenses/LICENSE-2.0
-+
-+Unless required by applicable law or agreed to in writing, software
-+distributed under the License is distributed on an "AS IS" BASIS,
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+See the License for the specific language governing permissions and
-+limitations under the License.
-+*/
-+
-+package network
-+
-+import (
-+	"bytes"
-+	"context"
-+	"fmt"
-+	"net"
-+	"strconv"
-+	"strings"
-+	"time"
-+
-+	compute "google.golang.org/api/compute/v1"
-+	v1 "k8s.io/api/core/v1"
-+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-+	"k8s.io/apimachinery/pkg/util/intstr"
-+	"k8s.io/apimachinery/pkg/util/wait"
-+	clientset "k8s.io/client-go/kubernetes"
-+	cloudprovider "k8s.io/cloud-provider"
-+	"k8s.io/kubernetes/test/e2e/framework"
-+	e2edeployment "k8s.io/kubernetes/test/e2e/framework/deployment"
-+	e2ekubesystem "k8s.io/kubernetes/test/e2e/framework/kubesystem"
-+	e2enetwork "k8s.io/kubernetes/test/e2e/framework/network"
-+	e2enode "k8s.io/kubernetes/test/e2e/framework/node"
-+	"k8s.io/kubernetes/test/e2e/framework/providers/gce"
-+	e2erc "k8s.io/kubernetes/test/e2e/framework/rc"
-+	e2eservice "k8s.io/kubernetes/test/e2e/framework/service"
-+	e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
-+	gcecloud "k8s.io/legacy-cloud-providers/gce"
-+
-+	"github.com/onsi/ginkgo"
-+	"github.com/onsi/gomega"
-+)
-+
-+var _ = SIGDescribe("Services with Cloud LoadBalancers", func() {
-+
-+	f := framework.NewDefaultFramework("services")
-+
-+	var cs clientset.Interface
-+	serviceLBNames := []string{}
-+
-+	ginkgo.BeforeEach(func() {
-+		cs = f.ClientSet
-+	})
-+
-+	ginkgo.AfterEach(func() {
-+		if ginkgo.CurrentGinkgoTestDescription().Failed {
-+			DescribeSvc(f.Namespace.Name)
-+		}
-+		for _, lb := range serviceLBNames {
-+			framework.Logf("cleaning load balancer resource for %s", lb)
-+			e2eservice.CleanupServiceResources(cs, lb, framework.TestContext.CloudConfig.Region, framework.TestContext.CloudConfig.Zone)
-+		}
-+		//reset serviceLBNames
-+		serviceLBNames = []string{}
-+	})
-+
-+	// TODO: Get rid of [DisabledForLargeClusters] tag when issue #56138 is fixed
-+	ginkgo.It("should be able to change the type and ports of a service [Slow] [DisabledForLargeClusters]", func() {
-+		// requires cloud load-balancer support
-+		e2eskipper.SkipUnlessProviderIs("gce", "gke", "aws")
-+
-+		loadBalancerSupportsUDP := !framework.ProviderIs("aws")
-+
-+		loadBalancerLagTimeout := e2eservice.LoadBalancerLagTimeoutDefault
-+		if framework.ProviderIs("aws") {
-+			loadBalancerLagTimeout = e2eservice.LoadBalancerLagTimeoutAWS
-+		}
-+		loadBalancerCreateTimeout := e2eservice.GetServiceLoadBalancerCreationTimeout(cs)
-+
-+		// This test is more monolithic than we'd like because LB turnup can be
-+		// very slow, so we lumped all the tests into one LB lifecycle.
-+
-+		serviceName := "mutability-test"
-+		ns1 := f.Namespace.Name // LB1 in ns1 on TCP
-+		framework.Logf("namespace for TCP test: %s", ns1)
-+
-+		ginkgo.By("creating a second namespace")
-+		namespacePtr, err := f.CreateNamespace("services", nil)
-+		framework.ExpectNoError(err, "failed to create namespace")
-+		ns2 := namespacePtr.Name // LB2 in ns2 on UDP
-+		framework.Logf("namespace for UDP test: %s", ns2)
-+
-+		nodeIP, err := e2enode.PickIP(cs) // for later
-+		framework.ExpectNoError(err)
-+
-+		// Test TCP and UDP Services.  Services with the same name in different
-+		// namespaces should get different node ports and load balancers.
-+
-+		ginkgo.By("creating a TCP service " + serviceName + " with type=ClusterIP in namespace " + ns1)
-+		tcpJig := e2eservice.NewTestJig(cs, ns1, serviceName)
-+		tcpService, err := tcpJig.CreateTCPService(nil)
-+		framework.ExpectNoError(err)
-+
-+		ginkgo.By("creating a UDP service " + serviceName + " with type=ClusterIP in namespace " + ns2)
-+		udpJig := e2eservice.NewTestJig(cs, ns2, serviceName)
-+		udpService, err := udpJig.CreateUDPService(nil)
-+		framework.ExpectNoError(err)
-+
-+		ginkgo.By("verifying that TCP and UDP use the same port")
-+		if tcpService.Spec.Ports[0].Port != udpService.Spec.Ports[0].Port {
-+			framework.Failf("expected to use the same port for TCP and UDP")
-+		}
-+		svcPort := int(tcpService.Spec.Ports[0].Port)
-+		framework.Logf("service port (TCP and UDP): %d", svcPort)
-+
-+		ginkgo.By("creating a pod to be part of the TCP service " + serviceName)
-+		_, err = tcpJig.Run(nil)
-+		framework.ExpectNoError(err)
-+
-+		ginkgo.By("creating a pod to be part of the UDP service " + serviceName)
-+		_, err = udpJig.Run(nil)
-+		framework.ExpectNoError(err)
-+
-+		// Change the services to NodePort.
-+
-+		ginkgo.By("changing the TCP service to type=NodePort")
-+		tcpService, err = tcpJig.UpdateService(func(s *v1.Service) {
-+			s.Spec.Type = v1.ServiceTypeNodePort
-+		})
-+		framework.ExpectNoError(err)
-+		tcpNodePort := int(tcpService.Spec.Ports[0].NodePort)
-+		framework.Logf("TCP node port: %d", tcpNodePort)
-+
-+		ginkgo.By("changing the UDP service to type=NodePort")
-+		udpService, err = udpJig.UpdateService(func(s *v1.Service) {
-+			s.Spec.Type = v1.ServiceTypeNodePort
-+		})
-+		framework.ExpectNoError(err)
-+		udpNodePort := int(udpService.Spec.Ports[0].NodePort)
-+		framework.Logf("UDP node port: %d", udpNodePort)
-+
-+		ginkgo.By("hitting the TCP service's NodePort")
-+		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the UDP service's NodePort")
-+		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		// Change the services to LoadBalancer.
-+
-+		// Here we test that LoadBalancers can receive static IP addresses.  This isn't
-+		// necessary, but is an additional feature this monolithic test checks.
-+		requestedIP := ""
-+		staticIPName := ""
-+		if framework.ProviderIs("gce", "gke") {
-+			ginkgo.By("creating a static load balancer IP")
-+			staticIPName = fmt.Sprintf("e2e-external-lb-test-%s", framework.RunID)
-+			gceCloud, err := gce.GetGCECloud()
-+			framework.ExpectNoError(err, "failed to get GCE cloud provider")
-+
-+			err = gceCloud.ReserveRegionAddress(&compute.Address{Name: staticIPName}, gceCloud.Region())
-+			defer func() {
-+				if staticIPName != "" {
-+					// Release GCE static IP - this is not kube-managed and will not be automatically released.
-+					if err := gceCloud.DeleteRegionAddress(staticIPName, gceCloud.Region()); err != nil {
-+						framework.Logf("failed to release static IP %s: %v", staticIPName, err)
-+					}
-+				}
-+			}()
-+			framework.ExpectNoError(err, "failed to create region address: %s", staticIPName)
-+			reservedAddr, err := gceCloud.GetRegionAddress(staticIPName, gceCloud.Region())
-+			framework.ExpectNoError(err, "failed to get region address: %s", staticIPName)
-+
-+			requestedIP = reservedAddr.Address
-+			framework.Logf("Allocated static load balancer IP: %s", requestedIP)
-+		}
-+
-+		ginkgo.By("changing the TCP service to type=LoadBalancer")
-+		tcpService, err = tcpJig.UpdateService(func(s *v1.Service) {
-+			s.Spec.LoadBalancerIP = requestedIP // will be "" if not applicable
-+			s.Spec.Type = v1.ServiceTypeLoadBalancer
-+		})
-+		framework.ExpectNoError(err)
-+
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("changing the UDP service to type=LoadBalancer")
-+			udpService, err = udpJig.UpdateService(func(s *v1.Service) {
-+				s.Spec.Type = v1.ServiceTypeLoadBalancer
-+			})
-+			framework.ExpectNoError(err)
-+		}
-+		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(tcpService))
-+		if loadBalancerSupportsUDP {
-+			serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(udpService))
-+		}
-+
-+		ginkgo.By("waiting for the TCP service to have a load balancer")
-+		// Wait for the load balancer to be created asynchronously
-+		tcpService, err = tcpJig.WaitForLoadBalancer(loadBalancerCreateTimeout)
-+		framework.ExpectNoError(err)
-+		if int(tcpService.Spec.Ports[0].NodePort) != tcpNodePort {
-+			framework.Failf("TCP Spec.Ports[0].NodePort changed (%d -> %d) when not expected", tcpNodePort, tcpService.Spec.Ports[0].NodePort)
-+		}
-+		if requestedIP != "" && e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]) != requestedIP {
-+			framework.Failf("unexpected TCP Status.LoadBalancer.Ingress (expected %s, got %s)", requestedIP, e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
-+		}
-+		tcpIngressIP := e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0])
-+		framework.Logf("TCP load balancer: %s", tcpIngressIP)
-+
-+		if framework.ProviderIs("gce", "gke") {
-+			// Do this as early as possible, which overrides the `defer` above.
-+			// This is mostly out of fear of leaking the IP in a timeout case
-+			// (as of this writing we're not 100% sure where the leaks are
-+			// coming from, so this is first-aid rather than surgery).
-+			ginkgo.By("demoting the static IP to ephemeral")
-+			if staticIPName != "" {
-+				gceCloud, err := gce.GetGCECloud()
-+				framework.ExpectNoError(err, "failed to get GCE cloud provider")
-+				// Deleting it after it is attached "demotes" it to an
-+				// ephemeral IP, which can be auto-released.
-+				if err := gceCloud.DeleteRegionAddress(staticIPName, gceCloud.Region()); err != nil {
-+					framework.Failf("failed to release static IP %s: %v", staticIPName, err)
-+				}
-+				staticIPName = ""
-+			}
-+		}
-+
-+		var udpIngressIP string
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("waiting for the UDP service to have a load balancer")
-+			// 2nd one should be faster since they ran in parallel.
-+			udpService, err = udpJig.WaitForLoadBalancer(loadBalancerCreateTimeout)
-+			framework.ExpectNoError(err)
-+			if int(udpService.Spec.Ports[0].NodePort) != udpNodePort {
-+				framework.Failf("UDP Spec.Ports[0].NodePort changed (%d -> %d) when not expected", udpNodePort, udpService.Spec.Ports[0].NodePort)
-+			}
-+			udpIngressIP = e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0])
-+			framework.Logf("UDP load balancer: %s", udpIngressIP)
-+
-+			ginkgo.By("verifying that TCP and UDP use different load balancers")
-+			if tcpIngressIP == udpIngressIP {
-+				framework.Failf("Load balancers are not different: %s", e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
-+			}
-+		}
-+
-+		ginkgo.By("hitting the TCP service's NodePort")
-+		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the UDP service's NodePort")
-+		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the TCP service's LoadBalancer")
-+		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerLagTimeout)
-+
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("hitting the UDP service's LoadBalancer")
-+			testReachableUDP(udpIngressIP, svcPort, loadBalancerLagTimeout)
-+		}
-+
-+		// Change the services' node ports.
-+
-+		ginkgo.By("changing the TCP service's NodePort")
-+		tcpService, err = tcpJig.ChangeServiceNodePort(tcpNodePort)
-+		framework.ExpectNoError(err)
-+		tcpNodePortOld := tcpNodePort
-+		tcpNodePort = int(tcpService.Spec.Ports[0].NodePort)
-+		if tcpNodePort == tcpNodePortOld {
-+			framework.Failf("TCP Spec.Ports[0].NodePort (%d) did not change", tcpNodePort)
-+		}
-+		if e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]) != tcpIngressIP {
-+			framework.Failf("TCP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", tcpIngressIP, e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
-+		}
-+		framework.Logf("TCP node port: %d", tcpNodePort)
-+
-+		ginkgo.By("changing the UDP service's NodePort")
-+		udpService, err = udpJig.ChangeServiceNodePort(udpNodePort)
-+		framework.ExpectNoError(err)
-+		udpNodePortOld := udpNodePort
-+		udpNodePort = int(udpService.Spec.Ports[0].NodePort)
-+		if udpNodePort == udpNodePortOld {
-+			framework.Failf("UDP Spec.Ports[0].NodePort (%d) did not change", udpNodePort)
-+		}
-+		if loadBalancerSupportsUDP && e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]) != udpIngressIP {
-+			framework.Failf("UDP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", udpIngressIP, e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]))
-+		}
-+		framework.Logf("UDP node port: %d", udpNodePort)
-+
-+		ginkgo.By("hitting the TCP service's new NodePort")
-+		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the UDP service's new NodePort")
-+		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("checking the old TCP NodePort is closed")
-+		testNotReachableHTTP(nodeIP, tcpNodePortOld, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("checking the old UDP NodePort is closed")
-+		testNotReachableUDP(nodeIP, udpNodePortOld, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the TCP service's LoadBalancer")
-+		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerLagTimeout)
-+
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("hitting the UDP service's LoadBalancer")
-+			testReachableUDP(udpIngressIP, svcPort, loadBalancerLagTimeout)
-+		}
-+
-+		// Change the services' main ports.
-+
-+		ginkgo.By("changing the TCP service's port")
-+		tcpService, err = tcpJig.UpdateService(func(s *v1.Service) {
-+			s.Spec.Ports[0].Port++
-+		})
-+		framework.ExpectNoError(err)
-+		svcPortOld := svcPort
-+		svcPort = int(tcpService.Spec.Ports[0].Port)
-+		if svcPort == svcPortOld {
-+			framework.Failf("TCP Spec.Ports[0].Port (%d) did not change", svcPort)
-+		}
-+		if int(tcpService.Spec.Ports[0].NodePort) != tcpNodePort {
-+			framework.Failf("TCP Spec.Ports[0].NodePort (%d) changed", tcpService.Spec.Ports[0].NodePort)
-+		}
-+		if e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]) != tcpIngressIP {
-+			framework.Failf("TCP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", tcpIngressIP, e2eservice.GetIngressPoint(&tcpService.Status.LoadBalancer.Ingress[0]))
-+		}
-+
-+		ginkgo.By("changing the UDP service's port")
-+		udpService, err = udpJig.UpdateService(func(s *v1.Service) {
-+			s.Spec.Ports[0].Port++
-+		})
-+		framework.ExpectNoError(err)
-+		if int(udpService.Spec.Ports[0].Port) != svcPort {
-+			framework.Failf("UDP Spec.Ports[0].Port (%d) did not change", udpService.Spec.Ports[0].Port)
-+		}
-+		if int(udpService.Spec.Ports[0].NodePort) != udpNodePort {
-+			framework.Failf("UDP Spec.Ports[0].NodePort (%d) changed", udpService.Spec.Ports[0].NodePort)
-+		}
-+		if loadBalancerSupportsUDP && e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]) != udpIngressIP {
-+			framework.Failf("UDP Status.LoadBalancer.Ingress changed (%s -> %s) when not expected", udpIngressIP, e2eservice.GetIngressPoint(&udpService.Status.LoadBalancer.Ingress[0]))
-+		}
-+
-+		framework.Logf("service port (TCP and UDP): %d", svcPort)
-+
-+		ginkgo.By("hitting the TCP service's NodePort")
-+		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the UDP service's NodePort")
-+		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the TCP service's LoadBalancer")
-+		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
-+
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("hitting the UDP service's LoadBalancer")
-+			testReachableUDP(udpIngressIP, svcPort, loadBalancerCreateTimeout)
-+		}
-+
-+		ginkgo.By("Scaling the pods to 0")
-+		err = tcpJig.Scale(0)
-+		framework.ExpectNoError(err)
-+		err = udpJig.Scale(0)
-+		framework.ExpectNoError(err)
-+
-+		ginkgo.By("looking for ICMP REJECT on the TCP service's NodePort")
-+		testRejectedHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("looking for ICMP REJECT on the UDP service's NodePort")
-+		testRejectedUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("looking for ICMP REJECT on the TCP service's LoadBalancer")
-+		testRejectedHTTP(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
-+
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("looking for ICMP REJECT on the UDP service's LoadBalancer")
-+			testRejectedUDP(udpIngressIP, svcPort, loadBalancerCreateTimeout)
-+		}
-+
-+		ginkgo.By("Scaling the pods to 1")
-+		err = tcpJig.Scale(1)
-+		framework.ExpectNoError(err)
-+		err = udpJig.Scale(1)
-+		framework.ExpectNoError(err)
-+
-+		ginkgo.By("hitting the TCP service's NodePort")
-+		e2eservice.TestReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the UDP service's NodePort")
-+		testReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("hitting the TCP service's LoadBalancer")
-+		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
-+
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("hitting the UDP service's LoadBalancer")
-+			testReachableUDP(udpIngressIP, svcPort, loadBalancerCreateTimeout)
-+		}
-+
-+		// Change the services back to ClusterIP.
-+
-+		ginkgo.By("changing TCP service back to type=ClusterIP")
-+		_, err = tcpJig.UpdateService(func(s *v1.Service) {
-+			s.Spec.Type = v1.ServiceTypeClusterIP
-+			s.Spec.Ports[0].NodePort = 0
-+		})
-+		framework.ExpectNoError(err)
-+		// Wait for the load balancer to be destroyed asynchronously
-+		_, err = tcpJig.WaitForLoadBalancerDestroy(tcpIngressIP, svcPort, loadBalancerCreateTimeout)
-+		framework.ExpectNoError(err)
-+
-+		ginkgo.By("changing UDP service back to type=ClusterIP")
-+		_, err = udpJig.UpdateService(func(s *v1.Service) {
-+			s.Spec.Type = v1.ServiceTypeClusterIP
-+			s.Spec.Ports[0].NodePort = 0
-+		})
-+		framework.ExpectNoError(err)
-+		if loadBalancerSupportsUDP {
-+			// Wait for the load balancer to be destroyed asynchronously
-+			_, err = udpJig.WaitForLoadBalancerDestroy(udpIngressIP, svcPort, loadBalancerCreateTimeout)
-+			framework.ExpectNoError(err)
-+		}
-+
-+		ginkgo.By("checking the TCP NodePort is closed")
-+		testNotReachableHTTP(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("checking the UDP NodePort is closed")
-+		testNotReachableUDP(nodeIP, udpNodePort, e2eservice.KubeProxyLagTimeout)
-+
-+		ginkgo.By("checking the TCP LoadBalancer is closed")
-+		testNotReachableHTTP(tcpIngressIP, svcPort, loadBalancerLagTimeout)
-+
-+		if loadBalancerSupportsUDP {
-+			ginkgo.By("checking the UDP LoadBalancer is closed")
-+			testNotReachableUDP(udpIngressIP, svcPort, loadBalancerLagTimeout)
-+		}
-+	})
-+
-+	ginkgo.It("should be able to create an internal type load balancer [Slow]", func() {
-+		e2eskipper.SkipUnlessProviderIs("azure", "gke", "gce")
-+
-+		createTimeout := e2eservice.GetServiceLoadBalancerCreationTimeout(cs)
-+		pollInterval := framework.Poll * 10
-+
-+		namespace := f.Namespace.Name
-+		serviceName := "lb-internal"
-+		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
-+
-+		ginkgo.By("creating pod to be part of service " + serviceName)
-+		_, err := jig.Run(nil)
-+		framework.ExpectNoError(err)
-+
-+		enableILB, disableILB := enableAndDisableInternalLB()
-+
-+		isInternalEndpoint := func(lbIngress *v1.LoadBalancerIngress) bool {
-+			ingressEndpoint := e2eservice.GetIngressPoint(lbIngress)
-+			// Needs update for providers using hostname as endpoint.
-+			return strings.HasPrefix(ingressEndpoint, "10.")
-+		}
-+
-+		ginkgo.By("creating a service with type LoadBalancer and cloud specific Internal-LB annotation enabled")
-+		svc, err := jig.CreateTCPService(func(svc *v1.Service) {
-+			svc.Spec.Type = v1.ServiceTypeLoadBalancer
-+			enableILB(svc)
-+		})
-+		framework.ExpectNoError(err)
-+
-+		defer func() {
-+			ginkgo.By("Clean up loadbalancer service")
-+			e2eservice.WaitForServiceDeletedWithFinalizer(cs, svc.Namespace, svc.Name)
-+		}()
-+
-+		svc, err = jig.WaitForLoadBalancer(createTimeout)
-+		framework.ExpectNoError(err)
-+		lbIngress := &svc.Status.LoadBalancer.Ingress[0]
-+		svcPort := int(svc.Spec.Ports[0].Port)
-+		// should have an internal IP.
-+		framework.ExpectEqual(isInternalEndpoint(lbIngress), true)
-+
-+		// ILBs are not accessible from the test orchestrator, so it's necessary to use
-+		//  a pod to test the service.
-+		ginkgo.By("hitting the internal load balancer from pod")
-+		framework.Logf("creating pod with host network")
-+		hostExec := launchHostExecPod(f.ClientSet, f.Namespace.Name, "ilb-host-exec")
-+
-+		framework.Logf("Waiting up to %v for service %q's internal LB to respond to requests", createTimeout, serviceName)
-+		tcpIngressIP := e2eservice.GetIngressPoint(lbIngress)
-+		if pollErr := wait.PollImmediate(pollInterval, createTimeout, func() (bool, error) {
-+			cmd := fmt.Sprintf(`curl -m 5 'http://%v:%v/echo?msg=hello'`, tcpIngressIP, svcPort)
-+			stdout, err := framework.RunHostCmd(hostExec.Namespace, hostExec.Name, cmd)
-+			if err != nil {
-+				framework.Logf("error curling; stdout: %v. err: %v", stdout, err)
-+				return false, nil
-+			}
-+
-+			if !strings.Contains(stdout, "hello") {
-+				framework.Logf("Expected output to contain 'hello', got %q; retrying...", stdout)
-+				return false, nil
-+			}
-+
-+			framework.Logf("Successful curl; stdout: %v", stdout)
-+			return true, nil
-+		}); pollErr != nil {
-+			framework.Failf("ginkgo.Failed to hit ILB IP, err: %v", pollErr)
-+		}
-+
-+		ginkgo.By("switching to external type LoadBalancer")
-+		svc, err = jig.UpdateService(func(svc *v1.Service) {
-+			disableILB(svc)
-+		})
-+		framework.ExpectNoError(err)
-+		framework.Logf("Waiting up to %v for service %q to have an external LoadBalancer", createTimeout, serviceName)
-+		if pollErr := wait.PollImmediate(pollInterval, createTimeout, func() (bool, error) {
-+			svc, err := cs.CoreV1().Services(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
-+			if err != nil {
-+				return false, err
-+			}
-+			lbIngress = &svc.Status.LoadBalancer.Ingress[0]
-+			return !isInternalEndpoint(lbIngress), nil
-+		}); pollErr != nil {
-+			framework.Failf("Loadbalancer IP not changed to external.")
-+		}
-+		// should have an external IP.
-+		gomega.Expect(isInternalEndpoint(lbIngress)).To(gomega.BeFalse())
-+
-+		ginkgo.By("hitting the external load balancer")
-+		framework.Logf("Waiting up to %v for service %q's external LB to respond to requests", createTimeout, serviceName)
-+		tcpIngressIP = e2eservice.GetIngressPoint(lbIngress)
-+		e2eservice.TestReachableHTTP(tcpIngressIP, svcPort, e2eservice.LoadBalancerLagTimeoutDefault)
-+
-+		// GCE cannot test a specific IP because the test may not own it. This cloud specific condition
-+		// will be removed when GCP supports similar functionality.
-+		if framework.ProviderIs("azure") {
-+			ginkgo.By("switching back to interal type LoadBalancer, with static IP specified.")
-+			internalStaticIP := "10.240.11.11"
-+			svc, err = jig.UpdateService(func(svc *v1.Service) {
-+				svc.Spec.LoadBalancerIP = internalStaticIP
-+				enableILB(svc)
-+			})
-+			framework.ExpectNoError(err)
-+			framework.Logf("Waiting up to %v for service %q to have an internal LoadBalancer", createTimeout, serviceName)
-+			if pollErr := wait.PollImmediate(pollInterval, createTimeout, func() (bool, error) {
-+				svc, err := cs.CoreV1().Services(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
-+				if err != nil {
-+					return false, err
-+				}
-+				lbIngress = &svc.Status.LoadBalancer.Ingress[0]
-+				return isInternalEndpoint(lbIngress), nil
-+			}); pollErr != nil {
-+				framework.Failf("Loadbalancer IP not changed to internal.")
-+			}
-+			// should have the given static internal IP.
-+			framework.ExpectEqual(e2eservice.GetIngressPoint(lbIngress), internalStaticIP)
-+		}
-+	})
-+
-+	// This test creates a load balancer, make sure its health check interval
-+	// equals to gceHcCheckIntervalSeconds. Then the interval is manipulated
-+	// to be something else, see if the interval will be reconciled.
-+	ginkgo.It("should reconcile LB health check interval [Slow][Serial]", func() {
-+		const gceHcCheckIntervalSeconds = int64(8)
-+		// This test is for clusters on GCE.
-+		// (It restarts kube-controller-manager, which we don't support on GKE)
-+		e2eskipper.SkipUnlessProviderIs("gce")
-+		e2eskipper.SkipUnlessSSHKeyPresent()
-+
-+		clusterID, err := gce.GetClusterID(cs)
-+		if err != nil {
-+			framework.Failf("framework.GetClusterID(cs) = _, %v; want nil", err)
-+		}
-+		gceCloud, err := gce.GetGCECloud()
-+		if err != nil {
-+			framework.Failf("framework.GetGCECloud() = _, %v; want nil", err)
-+		}
-+
-+		namespace := f.Namespace.Name
-+		serviceName := "lb-hc-int"
-+		jig := e2eservice.NewTestJig(cs, namespace, serviceName)
-+
-+		ginkgo.By("create load balancer service")
-+		// Create loadbalancer service with source range from node[0] and podAccept
-+		svc, err := jig.CreateTCPService(func(svc *v1.Service) {
-+			svc.Spec.Type = v1.ServiceTypeLoadBalancer
-+		})
-+		framework.ExpectNoError(err)
-+
-+		defer func() {
-+			ginkgo.By("Clean up loadbalancer service")
-+			e2eservice.WaitForServiceDeletedWithFinalizer(cs, svc.Namespace, svc.Name)
-+		}()
-+
-+		svc, err = jig.WaitForLoadBalancer(e2eservice.GetServiceLoadBalancerCreationTimeout(cs))
-+		framework.ExpectNoError(err)
-+
-+		hcName := gcecloud.MakeNodesHealthCheckName(clusterID)
-+		hc, err := gceCloud.GetHTTPHealthCheck(hcName)
-+		if err != nil {
-+			framework.Failf("gceCloud.GetHttpHealthCheck(%q) = _, %v; want nil", hcName, err)
-+		}
-+		framework.ExpectEqual(hc.CheckIntervalSec, gceHcCheckIntervalSeconds)
-+
-+		ginkgo.By("modify the health check interval")
-+		hc.CheckIntervalSec = gceHcCheckIntervalSeconds - 1
-+		if err = gceCloud.UpdateHTTPHealthCheck(hc); err != nil {
-+			framework.Failf("gcecloud.UpdateHttpHealthCheck(%#v) = %v; want nil", hc, err)
-+		}
-+
-+		ginkgo.By("restart kube-controller-manager")
-+		if err := e2ekubesystem.RestartControllerManager(); err != nil {
-+			framework.Failf("e2ekubesystem.RestartControllerManager() = %v; want nil", err)
-+		}
-+		if err := e2ekubesystem.WaitForControllerManagerUp(); err != nil {
-+			framework.Failf("e2ekubesystem.WaitForControllerManagerUp() = %v; want nil", err)
-+		}
-+
-+		ginkgo.By("health check should be reconciled")
-+		pollInterval := framework.Poll * 10
-+		loadBalancerPropagationTimeout := e2eservice.GetServiceLoadBalancerPropagationTimeout(cs)
-+		if pollErr := wait.PollImmediate(pollInterval, loadBalancerPropagationTimeout, func() (bool, error) {
-+			hc, err := gceCloud.GetHTTPHealthCheck(hcName)
-+			if err != nil {
-+				framework.Logf("ginkgo.Failed to get HttpHealthCheck(%q): %v", hcName, err)
-+				return false, err
-+			}
-+			framework.Logf("hc.CheckIntervalSec = %v", hc.CheckIntervalSec)
-+			return hc.CheckIntervalSec == gceHcCheckIntervalSeconds, nil
-+		}); pollErr != nil {
-+			framework.Failf("Health check %q does not reconcile its check interval to %d.", hcName, gceHcCheckIntervalSeconds)
-+		}
-+	})
-+
-+	var _ = SIGDescribe("ESIPP [Slow]", func() {
-+		f := framework.NewDefaultFramework("esipp")
-+		var loadBalancerCreateTimeout time.Duration
-+
-+		var cs clientset.Interface
-+		serviceLBNames := []string{}
-+
-+		ginkgo.BeforeEach(func() {
-+			// requires cloud load-balancer support - this feature currently supported only on GCE/GKE
-+			e2eskipper.SkipUnlessProviderIs("gce", "gke")
-+
-+			cs = f.ClientSet
-+			loadBalancerCreateTimeout = e2eservice.GetServiceLoadBalancerCreationTimeout(cs)
-+		})
-+
-+		ginkgo.AfterEach(func() {
-+			if ginkgo.CurrentGinkgoTestDescription().Failed {
-+				DescribeSvc(f.Namespace.Name)
-+			}
-+			for _, lb := range serviceLBNames {
-+				framework.Logf("cleaning load balancer resource for %s", lb)
-+				e2eservice.CleanupServiceResources(cs, lb, framework.TestContext.CloudConfig.Region, framework.TestContext.CloudConfig.Zone)
-+			}
-+			//reset serviceLBNames
-+			serviceLBNames = []string{}
-+		})
-+
-+		ginkgo.It("should work for type=LoadBalancer", func() {
-+			namespace := f.Namespace.Name
-+			serviceName := "external-local-lb"
-+			jig := e2eservice.NewTestJig(cs, namespace, serviceName)
-+
-+			svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, true, nil)
-+			framework.ExpectNoError(err)
-+			serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
-+			healthCheckNodePort := int(svc.Spec.HealthCheckNodePort)
-+			if healthCheckNodePort == 0 {
-+				framework.Failf("Service HealthCheck NodePort was not allocated")
-+			}
-+			defer func() {
-+				err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
-+				framework.ExpectNoError(err)
-+
-+				// Make sure we didn't leak the health check node port.
-+				threshold := 2
-+				nodes, err := jig.GetEndpointNodes()
-+				framework.ExpectNoError(err)
-+				for _, ips := range nodes {
-+					err := TestHTTPHealthCheckNodePort(ips[0], healthCheckNodePort, "/healthz", e2eservice.KubeProxyEndpointLagTimeout, false, threshold)
-+					framework.ExpectNoError(err)
-+				}
-+				err = cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
-+				framework.ExpectNoError(err)
-+			}()
-+
-+			svcTCPPort := int(svc.Spec.Ports[0].Port)
-+			ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
-+
-+			ginkgo.By("reading clientIP using the TCP service's service port via its external VIP")
-+			content := GetHTTPContent(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout, "/clientip")
-+			clientIP := content.String()
-+			framework.Logf("ClientIP detected by target pod using VIP:SvcPort is %s", clientIP)
-+
-+			ginkgo.By("checking if Source IP is preserved")
-+			if strings.HasPrefix(clientIP, "10.") {
-+				framework.Failf("Source IP was NOT preserved")
-+			}
-+		})
-+
-+		ginkgo.It("should work for type=NodePort", func() {
-+			namespace := f.Namespace.Name
-+			serviceName := "external-local-nodeport"
-+			jig := e2eservice.NewTestJig(cs, namespace, serviceName)
-+
-+			svc, err := jig.CreateOnlyLocalNodePortService(true)
-+			framework.ExpectNoError(err)
-+			defer func() {
-+				err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
-+				framework.ExpectNoError(err)
-+			}()
-+
-+			tcpNodePort := int(svc.Spec.Ports[0].NodePort)
-+			endpointsNodeMap, err := jig.GetEndpointNodes()
-+			framework.ExpectNoError(err)
-+			path := "/clientip"
-+
-+			for nodeName, nodeIPs := range endpointsNodeMap {
-+				nodeIP := nodeIPs[0]
-+				ginkgo.By(fmt.Sprintf("reading clientIP using the TCP service's NodePort, on node %v: %v%v%v", nodeName, nodeIP, tcpNodePort, path))
-+				content := GetHTTPContent(nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout, path)
-+				clientIP := content.String()
-+				framework.Logf("ClientIP detected by target pod using NodePort is %s", clientIP)
-+				if strings.HasPrefix(clientIP, "10.") {
-+					framework.Failf("Source IP was NOT preserved")
-+				}
-+			}
-+		})
-+
-+		ginkgo.It("should only target nodes with endpoints", func() {
-+			namespace := f.Namespace.Name
-+			serviceName := "external-local-nodes"
-+			jig := e2eservice.NewTestJig(cs, namespace, serviceName)
-+			nodes, err := e2enode.GetBoundedReadySchedulableNodes(cs, e2eservice.MaxNodesForEndpointsTests)
-+			framework.ExpectNoError(err)
-+
-+			svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, false,
-+				func(svc *v1.Service) {
-+					// Change service port to avoid collision with opened hostPorts
-+					// in other tests that run in parallel.
-+					if len(svc.Spec.Ports) != 0 {
-+						svc.Spec.Ports[0].TargetPort = intstr.FromInt(int(svc.Spec.Ports[0].Port))
-+						svc.Spec.Ports[0].Port = 8081
-+					}
-+
-+				})
-+			framework.ExpectNoError(err)
-+			serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
-+			defer func() {
-+				err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
-+				framework.ExpectNoError(err)
-+				err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
-+				framework.ExpectNoError(err)
-+			}()
-+
-+			healthCheckNodePort := int(svc.Spec.HealthCheckNodePort)
-+			if healthCheckNodePort == 0 {
-+				framework.Failf("Service HealthCheck NodePort was not allocated")
-+			}
-+
-+			ips := e2enode.CollectAddresses(nodes, v1.NodeExternalIP)
-+
-+			ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
-+			svcTCPPort := int(svc.Spec.Ports[0].Port)
-+
-+			threshold := 2
-+			path := "/healthz"
-+			for i := 0; i < len(nodes.Items); i++ {
-+				endpointNodeName := nodes.Items[i].Name
-+
-+				ginkgo.By("creating a pod to be part of the service " + serviceName + " on node " + endpointNodeName)
-+				_, err = jig.Run(func(rc *v1.ReplicationController) {
-+					rc.Name = serviceName
-+					if endpointNodeName != "" {
-+						rc.Spec.Template.Spec.NodeName = endpointNodeName
-+					}
-+				})
-+				framework.ExpectNoError(err)
-+
-+				ginkgo.By(fmt.Sprintf("waiting for service endpoint on node %v", endpointNodeName))
-+				err = jig.WaitForEndpointOnNode(endpointNodeName)
-+				framework.ExpectNoError(err)
-+
-+				// HealthCheck should pass only on the node where num(endpoints) > 0
-+				// All other nodes should fail the healthcheck on the service healthCheckNodePort
-+				for n, publicIP := range ips {
-+					// Make sure the loadbalancer picked up the health check change.
-+					// Confirm traffic can reach backend through LB before checking healthcheck nodeport.
-+					e2eservice.TestReachableHTTP(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout)
-+					expectedSuccess := nodes.Items[n].Name == endpointNodeName
-+					port := strconv.Itoa(healthCheckNodePort)
-+					ipPort := net.JoinHostPort(publicIP, port)
-+					framework.Logf("Health checking %s, http://%s%s, expectedSuccess %v", nodes.Items[n].Name, ipPort, path, expectedSuccess)
-+					err := TestHTTPHealthCheckNodePort(publicIP, healthCheckNodePort, path, e2eservice.KubeProxyEndpointLagTimeout, expectedSuccess, threshold)
-+					framework.ExpectNoError(err)
-+				}
-+				framework.ExpectNoError(e2erc.DeleteRCAndWaitForGC(f.ClientSet, namespace, serviceName))
-+			}
-+		})
-+
-+		ginkgo.It("should work from pods", func() {
-+			var err error
-+			namespace := f.Namespace.Name
-+			serviceName := "external-local-pods"
-+			jig := e2eservice.NewTestJig(cs, namespace, serviceName)
-+
-+			svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, true, nil)
-+			framework.ExpectNoError(err)
-+			serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
-+			defer func() {
-+				err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
-+				framework.ExpectNoError(err)
-+				err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
-+				framework.ExpectNoError(err)
-+			}()
-+
-+			ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
-+			port := strconv.Itoa(int(svc.Spec.Ports[0].Port))
-+			ipPort := net.JoinHostPort(ingressIP, port)
-+			path := fmt.Sprintf("%s/clientip", ipPort)
-+
-+			ginkgo.By("Creating pause pod deployment to make sure, pausePods are in desired state")
-+			deployment := createPausePodDeployment(cs, "pause-pod-deployment", namespace, 1)
-+			framework.ExpectNoError(e2edeployment.WaitForDeploymentComplete(cs, deployment), "Failed to complete pause pod deployment")
-+
-+			defer func() {
-+				framework.Logf("Deleting deployment")
-+				err = cs.AppsV1().Deployments(namespace).Delete(context.TODO(), deployment.Name, metav1.DeleteOptions{})
-+				framework.ExpectNoError(err, "Failed to delete deployment %s", deployment.Name)
-+			}()
-+
-+			deployment, err = cs.AppsV1().Deployments(namespace).Get(context.TODO(), deployment.Name, metav1.GetOptions{})
-+			framework.ExpectNoError(err, "Error in retrieving pause pod deployment")
-+			labelSelector, err := metav1.LabelSelectorAsSelector(deployment.Spec.Selector)
-+			framework.ExpectNoError(err, "Error in setting LabelSelector as selector from deployment")
-+
-+			pausePods, err := cs.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{LabelSelector: labelSelector.String()})
-+			framework.ExpectNoError(err, "Error in listing pods associated with pause pod deployments")
-+
-+			pausePod := pausePods.Items[0]
-+			framework.Logf("Waiting up to %v curl %v", e2eservice.KubeProxyLagTimeout, path)
-+			cmd := fmt.Sprintf(`curl -q -s --connect-timeout 30 %v`, path)
-+
-+			var srcIP string
-+			loadBalancerPropagationTimeout := e2eservice.GetServiceLoadBalancerPropagationTimeout(cs)
-+			ginkgo.By(fmt.Sprintf("Hitting external lb %v from pod %v on node %v", ingressIP, pausePod.Name, pausePod.Spec.NodeName))
-+			if pollErr := wait.PollImmediate(framework.Poll, loadBalancerPropagationTimeout, func() (bool, error) {
-+				stdout, err := framework.RunHostCmd(pausePod.Namespace, pausePod.Name, cmd)
-+				if err != nil {
-+					framework.Logf("got err: %v, retry until timeout", err)
-+					return false, nil
-+				}
-+				srcIP = strings.TrimSpace(strings.Split(stdout, ":")[0])
-+				return srcIP == pausePod.Status.PodIP, nil
-+			}); pollErr != nil {
-+				framework.Failf("Source IP not preserved from %v, expected '%v' got '%v'", pausePod.Name, pausePod.Status.PodIP, srcIP)
-+			}
-+		})
-+
-+		// TODO: Get rid of [DisabledForLargeClusters] tag when issue #90047 is fixed.
-+		ginkgo.It("should handle updates to ExternalTrafficPolicy field [DisabledForLargeClusters]", func() {
-+			namespace := f.Namespace.Name
-+			serviceName := "external-local-update"
-+			jig := e2eservice.NewTestJig(cs, namespace, serviceName)
-+
-+			nodes, err := e2enode.GetBoundedReadySchedulableNodes(cs, e2eservice.MaxNodesForEndpointsTests)
-+			framework.ExpectNoError(err)
-+			if len(nodes.Items) < 2 {
-+				framework.Failf("Need at least 2 nodes to verify source ip from a node without endpoint")
-+			}
-+
-+			svc, err := jig.CreateOnlyLocalLoadBalancerService(loadBalancerCreateTimeout, true, nil)
-+			framework.ExpectNoError(err)
-+			serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc))
-+			defer func() {
-+				err = jig.ChangeServiceType(v1.ServiceTypeClusterIP, loadBalancerCreateTimeout)
-+				framework.ExpectNoError(err)
-+				err := cs.CoreV1().Services(svc.Namespace).Delete(context.TODO(), svc.Name, metav1.DeleteOptions{})
-+				framework.ExpectNoError(err)
-+			}()
-+
-+			// save the health check node port because it disappears when ESIPP is turned off.
-+			healthCheckNodePort := int(svc.Spec.HealthCheckNodePort)
-+
-+			ginkgo.By("turning ESIPP off")
-+			svc, err = jig.UpdateService(func(svc *v1.Service) {
-+				svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster
-+			})
-+			framework.ExpectNoError(err)
-+			if svc.Spec.HealthCheckNodePort > 0 {
-+				framework.Failf("Service HealthCheck NodePort still present")
-+			}
-+
-+			endpointNodeMap, err := jig.GetEndpointNodes()
-+			framework.ExpectNoError(err)
-+			noEndpointNodeMap := map[string][]string{}
-+			for _, n := range nodes.Items {
-+				if _, ok := endpointNodeMap[n.Name]; ok {
-+					continue
-+				}
-+				noEndpointNodeMap[n.Name] = e2enode.GetAddresses(&n, v1.NodeExternalIP)
-+			}
-+
-+			svcTCPPort := int(svc.Spec.Ports[0].Port)
-+			svcNodePort := int(svc.Spec.Ports[0].NodePort)
-+			ingressIP := e2eservice.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
-+			path := "/clientip"
-+
-+			ginkgo.By(fmt.Sprintf("endpoints present on nodes %v, absent on nodes %v", endpointNodeMap, noEndpointNodeMap))
-+			for nodeName, nodeIPs := range noEndpointNodeMap {
-+				ginkgo.By(fmt.Sprintf("Checking %v (%v:%v%v) proxies to endpoints on another node", nodeName, nodeIPs[0], svcNodePort, path))
-+				GetHTTPContent(nodeIPs[0], svcNodePort, e2eservice.KubeProxyLagTimeout, path)
-+			}
-+
-+			for nodeName, nodeIPs := range endpointNodeMap {
-+				ginkgo.By(fmt.Sprintf("checking kube-proxy health check fails on node with endpoint (%s), public IP %s", nodeName, nodeIPs[0]))
-+				var body bytes.Buffer
-+				pollfn := func() (bool, error) {
-+					result := e2enetwork.PokeHTTP(nodeIPs[0], healthCheckNodePort, "/healthz", nil)
-+					if result.Code == 0 {
-+						return true, nil
-+					}
-+					body.Reset()
-+					body.Write(result.Body)
-+					return false, nil
-+				}
-+				if pollErr := wait.PollImmediate(framework.Poll, e2eservice.TestTimeout, pollfn); pollErr != nil {
-+					framework.Failf("Kube-proxy still exposing health check on node %v:%v, after ESIPP was turned off. body %s",
-+						nodeName, healthCheckNodePort, body.String())
-+				}
-+			}
-+
-+			// Poll till kube-proxy re-adds the MASQUERADE rule on the node.
-+			ginkgo.By(fmt.Sprintf("checking source ip is NOT preserved through loadbalancer %v", ingressIP))
-+			var clientIP string
-+			pollErr := wait.PollImmediate(framework.Poll, e2eservice.KubeProxyLagTimeout, func() (bool, error) {
-+				content := GetHTTPContent(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout, "/clientip")
-+				clientIP = content.String()
-+				if strings.HasPrefix(clientIP, "10.") {
-+					return true, nil
-+				}
-+				return false, nil
-+			})
-+			if pollErr != nil {
-+				framework.Failf("Source IP WAS preserved even after ESIPP turned off. Got %v, expected a ten-dot cluster ip.", clientIP)
-+			}
-+
-+			// TODO: We need to attempt to create another service with the previously
-+			// allocated healthcheck nodePort. If the health check nodePort has been
-+			// freed, the new service creation will succeed, upon which we cleanup.
-+			// If the health check nodePort has NOT been freed, the new service
-+			// creation will fail.
-+
-+			ginkgo.By("setting ExternalTraffic field back to OnlyLocal")
-+			svc, err = jig.UpdateService(func(svc *v1.Service) {
-+				svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal
-+				// Request the same healthCheckNodePort as before, to test the user-requested allocation path
-+				svc.Spec.HealthCheckNodePort = int32(healthCheckNodePort)
-+			})
-+			framework.ExpectNoError(err)
-+			pollErr = wait.PollImmediate(framework.Poll, e2eservice.KubeProxyLagTimeout, func() (bool, error) {
-+				content := GetHTTPContent(ingressIP, svcTCPPort, e2eservice.KubeProxyLagTimeout, path)
-+				clientIP = content.String()
-+				ginkgo.By(fmt.Sprintf("Endpoint %v:%v%v returned client ip %v", ingressIP, svcTCPPort, path, clientIP))
-+				if !strings.HasPrefix(clientIP, "10.") {
-+					return true, nil
-+				}
-+				return false, nil
-+			})
-+			if pollErr != nil {
-+				framework.Failf("Source IP (%v) is not the client IP even after ESIPP turned on, expected a public IP.", clientIP)
-+			}
-+		})
-+	})
-+})
-diff --git a/test/e2e/node/recreate_node.go b/test/e2e/node/recreate_node.go
-index da3fc974485..b403fa7f737 100644
---- a/test/e2e/node/recreate_node.go
-+++ b/test/e2e/node/recreate_node.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2019 The Kubernetes Authors.
- 
-diff --git a/test/e2e/scheduling/nvidia-gpus.go b/test/e2e/scheduling/nvidia-gpus.go
-index 313e773b8e2..bbf66b59aac 100644
---- a/test/e2e/scheduling/nvidia-gpus.go
-+++ b/test/e2e/scheduling/nvidia-gpus.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/scheduling/ubernetes_lite_volumes.go b/test/e2e/scheduling/ubernetes_lite_volumes.go
-index 513ed07543f..78c0f081990 100644
---- a/test/e2e/scheduling/ubernetes_lite_volumes.go
-+++ b/test/e2e/scheduling/ubernetes_lite_volumes.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/storage/drivers/in_tree.go b/test/e2e/storage/drivers/in_tree.go
-index a866266c1f1..28e26a10c35 100644
---- a/test/e2e/storage/drivers/in_tree.go
-+++ b/test/e2e/storage/drivers/in_tree.go
-@@ -38,10 +38,8 @@ package drivers
- import (
- 	"context"
- 	"fmt"
--	"os/exec"
- 	"strconv"
- 	"strings"
--	"time"
- 
- 	"github.com/onsi/ginkgo"
- 	v1 "k8s.io/api/core/v1"
-@@ -57,13 +55,11 @@ import (
- 	e2eauth "k8s.io/kubernetes/test/e2e/framework/auth"
- 	e2enode "k8s.io/kubernetes/test/e2e/framework/node"
- 	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
--	e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
- 	e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
- 	e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
- 	"k8s.io/kubernetes/test/e2e/storage/testpatterns"
- 	"k8s.io/kubernetes/test/e2e/storage/testsuites"
- 	"k8s.io/kubernetes/test/e2e/storage/utils"
--	vspheretest "k8s.io/kubernetes/test/e2e/storage/vsphere"
- 	imageutils "k8s.io/kubernetes/test/utils/image"
- )
- 
-@@ -1044,734 +1040,6 @@ func (e *emptydirDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTes
- 	}, func() {}
- }
- 
--// Cinder
--// This driver assumes that OpenStack client tools are installed
--// (/usr/bin/nova, /usr/bin/cinder and /usr/bin/keystone)
--// and that the usual OpenStack authentication env. variables are set
--// (OS_USERNAME, OS_PASSWORD, OS_TENANT_NAME at least).
--type cinderDriver struct {
--	driverInfo testsuites.DriverInfo
--}
--
--type cinderVolume struct {
--	volumeName string
--	volumeID   string
--}
--
--var _ testsuites.TestDriver = &cinderDriver{}
--var _ testsuites.PreprovisionedVolumeTestDriver = &cinderDriver{}
--var _ testsuites.InlineVolumeTestDriver = &cinderDriver{}
--var _ testsuites.PreprovisionedPVTestDriver = &cinderDriver{}
--var _ testsuites.DynamicPVTestDriver = &cinderDriver{}
--
--// InitCinderDriver returns cinderDriver that implements TestDriver interface
--func InitCinderDriver() testsuites.TestDriver {
--	return &cinderDriver{
--		driverInfo: testsuites.DriverInfo{
--			Name:             "cinder",
--			InTreePluginName: "kubernetes.io/cinder",
--			MaxFileSize:      testpatterns.FileSizeMedium,
--			SupportedSizeRange: e2evolume.SizeRange{
--				Min: "5Gi",
--			},
--			SupportedFsType: sets.NewString(
--				"", // Default fsType
--				"ext3",
--			),
--			TopologyKeys: []string{v1.LabelZoneFailureDomain},
--			Capabilities: map[testsuites.Capability]bool{
--				testsuites.CapPersistence: true,
--				testsuites.CapFsGroup:     true,
--				testsuites.CapExec:        true,
--				testsuites.CapBlock:       true,
--				// Cinder supports volume limits, but the test creates large
--				// number of volumes and times out test suites.
--				testsuites.CapVolumeLimits: false,
--				testsuites.CapTopology:     true,
--			},
--		},
--	}
--}
--
--func (c *cinderDriver) GetDriverInfo() *testsuites.DriverInfo {
--	return &c.driverInfo
--}
--
--func (c *cinderDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
--	e2eskipper.SkipUnlessProviderIs("openstack")
--}
--
--func (c *cinderDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
--	cv, ok := e2evolume.(*cinderVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to Cinder test volume")
--
--	volSource := v1.VolumeSource{
--		Cinder: &v1.CinderVolumeSource{
--			VolumeID: cv.volumeID,
--			ReadOnly: readOnly,
--		},
--	}
--	if fsType != "" {
--		volSource.Cinder.FSType = fsType
--	}
--	return &volSource
--}
--
--func (c *cinderDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
--	cv, ok := e2evolume.(*cinderVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to Cinder test volume")
--
--	pvSource := v1.PersistentVolumeSource{
--		Cinder: &v1.CinderPersistentVolumeSource{
--			VolumeID: cv.volumeID,
--			ReadOnly: readOnly,
--		},
--	}
--	if fsType != "" {
--		pvSource.Cinder.FSType = fsType
--	}
--	return &pvSource, nil
--}
--
--func (c *cinderDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
--	provisioner := "kubernetes.io/cinder"
--	parameters := map[string]string{}
--	if fsType != "" {
--		parameters["fsType"] = fsType
--	}
--	ns := config.Framework.Namespace.Name
--	suffix := fmt.Sprintf("%s-sc", c.driverInfo.Name)
--
--	return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
--}
--
--func (c *cinderDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
--	return &testsuites.PerTestConfig{
--		Driver:    c,
--		Prefix:    "cinder",
--		Framework: f,
--	}, func() {}
--}
--
--func (c *cinderDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
--	f := config.Framework
--	ns := f.Namespace
--
--	// We assume that namespace.Name is a random string
--	volumeName := ns.Name
--	ginkgo.By("creating a test Cinder volume")
--	output, err := exec.Command("cinder", "create", "--display-name="+volumeName, "1").CombinedOutput()
--	outputString := string(output[:])
--	framework.Logf("cinder output:\n%s", outputString)
--	framework.ExpectNoError(err)
--
--	// Parse 'id'' from stdout. Expected format:
--	// |     attachments     |                  []                  |
--	// |  availability_zone  |                 nova                 |
--	// ...
--	// |          id         | 1d6ff08f-5d1c-41a4-ad72-4ef872cae685 |
--	volumeID := ""
--	for _, line := range strings.Split(outputString, "\n") {
--		fields := strings.Fields(line)
--		if len(fields) != 5 {
--			continue
--		}
--		if fields[1] != "id" {
--			continue
--		}
--		volumeID = fields[3]
--		break
--	}
--	framework.Logf("Volume ID: %s", volumeID)
--	framework.ExpectNotEqual(volumeID, "")
--	return &cinderVolume{
--		volumeName: volumeName,
--		volumeID:   volumeID,
--	}
--}
--
--func (v *cinderVolume) DeleteVolume() {
--	name := v.volumeName
--
--	// Try to delete the volume for several seconds - it takes
--	// a while for the plugin to detach it.
--	var output []byte
--	var err error
--	timeout := time.Second * 120
--
--	framework.Logf("Waiting up to %v for removal of cinder volume %s", timeout, name)
--	for start := time.Now(); time.Since(start) < timeout; time.Sleep(5 * time.Second) {
--		output, err = exec.Command("cinder", "delete", name).CombinedOutput()
--		if err == nil {
--			framework.Logf("Cinder volume %s deleted", name)
--			return
--		}
--		framework.Logf("Failed to delete volume %s: %v", name, err)
--	}
--	framework.Logf("Giving up deleting volume %s: %v\n%s", name, err, string(output[:]))
--}
--
--// GCE
--type gcePdDriver struct {
--	driverInfo testsuites.DriverInfo
--}
--
--type gcePdVolume struct {
--	volumeName string
--}
--
--var _ testsuites.TestDriver = &gcePdDriver{}
--var _ testsuites.PreprovisionedVolumeTestDriver = &gcePdDriver{}
--var _ testsuites.InlineVolumeTestDriver = &gcePdDriver{}
--var _ testsuites.PreprovisionedPVTestDriver = &gcePdDriver{}
--var _ testsuites.DynamicPVTestDriver = &gcePdDriver{}
--
--// InitGcePdDriver returns gcePdDriver that implements TestDriver interface
--func InitGcePdDriver() testsuites.TestDriver {
--	// In current test structure, it first initialize the driver and then set up
--	// the new framework, so we cannot get the correct OS here. So here set to
--	// support all fs types including both linux and windows. We have code to check Node OS later
--	// during test.
--	supportedTypes := sets.NewString(
--		"", // Default fsType
--		"ext2",
--		"ext3",
--		"ext4",
--		"xfs",
--		"ntfs",
--	)
--	return &gcePdDriver{
--		driverInfo: testsuites.DriverInfo{
--			Name:             "gcepd",
--			InTreePluginName: "kubernetes.io/gce-pd",
--			MaxFileSize:      testpatterns.FileSizeMedium,
--			SupportedSizeRange: e2evolume.SizeRange{
--				Min: "5Gi",
--			},
--			SupportedFsType:      supportedTypes,
--			SupportedMountOption: sets.NewString("debug", "nouid32"),
--			TopologyKeys:         []string{v1.LabelZoneFailureDomain},
--			Capabilities: map[testsuites.Capability]bool{
--				testsuites.CapPersistence:         true,
--				testsuites.CapFsGroup:             true,
--				testsuites.CapBlock:               true,
--				testsuites.CapExec:                true,
--				testsuites.CapMultiPODs:           true,
--				testsuites.CapControllerExpansion: true,
--				testsuites.CapNodeExpansion:       true,
--				// GCE supports volume limits, but the test creates large
--				// number of volumes and times out test suites.
--				testsuites.CapVolumeLimits: false,
--				testsuites.CapTopology:     true,
--			},
--		},
--	}
--}
--
--func (g *gcePdDriver) GetDriverInfo() *testsuites.DriverInfo {
--	return &g.driverInfo
--}
--
--func (g *gcePdDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
--	e2eskipper.SkipUnlessProviderIs("gce", "gke")
--	if pattern.FeatureTag == "[sig-windows]" {
--		e2eskipper.SkipUnlessNodeOSDistroIs("windows")
--	}
--}
--
--func (g *gcePdDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
--	gv, ok := e2evolume.(*gcePdVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to GCE PD test volume")
--	volSource := v1.VolumeSource{
--		GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
--			PDName:   gv.volumeName,
--			ReadOnly: readOnly,
--		},
--	}
--	if fsType != "" {
--		volSource.GCEPersistentDisk.FSType = fsType
--	}
--	return &volSource
--}
--
--func (g *gcePdDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
--	gv, ok := e2evolume.(*gcePdVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to GCE PD test volume")
--	pvSource := v1.PersistentVolumeSource{
--		GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
--			PDName:   gv.volumeName,
--			ReadOnly: readOnly,
--		},
--	}
--	if fsType != "" {
--		pvSource.GCEPersistentDisk.FSType = fsType
--	}
--	return &pvSource, nil
--}
--
--func (g *gcePdDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
--	provisioner := "kubernetes.io/gce-pd"
--	parameters := map[string]string{}
--	if fsType != "" {
--		parameters["fsType"] = fsType
--	}
--	ns := config.Framework.Namespace.Name
--	suffix := fmt.Sprintf("%s-sc", g.driverInfo.Name)
--	delayedBinding := storagev1.VolumeBindingWaitForFirstConsumer
--
--	return testsuites.GetStorageClass(provisioner, parameters, &delayedBinding, ns, suffix)
--}
--
--func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
--	config := &testsuites.PerTestConfig{
--		Driver:    g,
--		Prefix:    "gcepd",
--		Framework: f,
--	}
--
--	if framework.NodeOSDistroIs("windows") {
--		config.ClientNodeSelection = e2epod.NodeSelection{
--			Selector: map[string]string{
--				"kubernetes.io/os": "windows",
--			},
--		}
--	}
--	return config, func() {}
--
--}
--
--func (g *gcePdDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
--	zone := getInlineVolumeZone(config.Framework)
--	if volType == testpatterns.InlineVolume {
--		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
--		// so pods should be also scheduled there.
--		config.ClientNodeSelection = e2epod.NodeSelection{
--			Selector: map[string]string{
--				v1.LabelZoneFailureDomain: zone,
--			},
--		}
--	}
--	ginkgo.By("creating a test gce pd volume")
--	vname, err := e2epv.CreatePDWithRetryAndZone(zone)
--	framework.ExpectNoError(err)
--	return &gcePdVolume{
--		volumeName: vname,
--	}
--}
--
--func (v *gcePdVolume) DeleteVolume() {
--	e2epv.DeletePDWithRetry(v.volumeName)
--}
--
--// vSphere
--type vSphereDriver struct {
--	driverInfo testsuites.DriverInfo
--}
--
--type vSphereVolume struct {
--	volumePath string
--	nodeInfo   *vspheretest.NodeInfo
--}
--
--var _ testsuites.TestDriver = &vSphereDriver{}
--var _ testsuites.PreprovisionedVolumeTestDriver = &vSphereDriver{}
--var _ testsuites.InlineVolumeTestDriver = &vSphereDriver{}
--var _ testsuites.PreprovisionedPVTestDriver = &vSphereDriver{}
--var _ testsuites.DynamicPVTestDriver = &vSphereDriver{}
--
--// InitVSphereDriver returns vSphereDriver that implements TestDriver interface
--func InitVSphereDriver() testsuites.TestDriver {
--	return &vSphereDriver{
--		driverInfo: testsuites.DriverInfo{
--			Name:             "vsphere",
--			InTreePluginName: "kubernetes.io/vsphere-volume",
--			MaxFileSize:      testpatterns.FileSizeMedium,
--			SupportedSizeRange: e2evolume.SizeRange{
--				Min: "5Gi",
--			},
--			SupportedFsType: sets.NewString(
--				"", // Default fsType
--				"ext4",
--			),
--			TopologyKeys: []string{v1.LabelZoneFailureDomain},
--			Capabilities: map[testsuites.Capability]bool{
--				testsuites.CapPersistence: true,
--				testsuites.CapFsGroup:     true,
--				testsuites.CapExec:        true,
--				testsuites.CapMultiPODs:   true,
--				testsuites.CapTopology:    true,
--			},
--		},
--	}
--}
--func (v *vSphereDriver) GetDriverInfo() *testsuites.DriverInfo {
--	return &v.driverInfo
--}
--
--func (v *vSphereDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
--	e2eskipper.SkipUnlessProviderIs("vsphere")
--}
--
--func (v *vSphereDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
--	vsv, ok := e2evolume.(*vSphereVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to vSphere test volume")
--
--	// vSphere driver doesn't seem to support readOnly volume
--	// TODO: check if it is correct
--	if readOnly {
--		return nil
--	}
--	volSource := v1.VolumeSource{
--		VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{
--			VolumePath: vsv.volumePath,
--		},
--	}
--	if fsType != "" {
--		volSource.VsphereVolume.FSType = fsType
--	}
--	return &volSource
--}
--
--func (v *vSphereDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
--	vsv, ok := e2evolume.(*vSphereVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to vSphere test volume")
--
--	// vSphere driver doesn't seem to support readOnly volume
--	// TODO: check if it is correct
--	if readOnly {
--		return nil, nil
--	}
--	pvSource := v1.PersistentVolumeSource{
--		VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{
--			VolumePath: vsv.volumePath,
--		},
--	}
--	if fsType != "" {
--		pvSource.VsphereVolume.FSType = fsType
--	}
--	return &pvSource, nil
--}
--
--func (v *vSphereDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
--	provisioner := "kubernetes.io/vsphere-volume"
--	parameters := map[string]string{}
--	if fsType != "" {
--		parameters["fsType"] = fsType
--	}
--	ns := config.Framework.Namespace.Name
--	suffix := fmt.Sprintf("%s-sc", v.driverInfo.Name)
--
--	return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
--}
--
--func (v *vSphereDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
--	return &testsuites.PerTestConfig{
--		Driver:    v,
--		Prefix:    "vsphere",
--		Framework: f,
--	}, func() {}
--}
--
--func (v *vSphereDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
--	f := config.Framework
--	vspheretest.Bootstrap(f)
--	nodeInfo := vspheretest.GetReadySchedulableRandomNodeInfo()
--	volumePath, err := nodeInfo.VSphere.CreateVolume(&vspheretest.VolumeOptions{}, nodeInfo.DataCenterRef)
--	framework.ExpectNoError(err)
--	return &vSphereVolume{
--		volumePath: volumePath,
--		nodeInfo:   nodeInfo,
--	}
--}
--
--func (v *vSphereVolume) DeleteVolume() {
--	v.nodeInfo.VSphere.DeleteVolume(v.volumePath, v.nodeInfo.DataCenterRef)
--}
--
--// Azure Disk
--type azureDiskDriver struct {
--	driverInfo testsuites.DriverInfo
--}
--
--type azureDiskVolume struct {
--	volumeName string
--}
--
--var _ testsuites.TestDriver = &azureDiskDriver{}
--var _ testsuites.PreprovisionedVolumeTestDriver = &azureDiskDriver{}
--var _ testsuites.InlineVolumeTestDriver = &azureDiskDriver{}
--var _ testsuites.PreprovisionedPVTestDriver = &azureDiskDriver{}
--var _ testsuites.DynamicPVTestDriver = &azureDiskDriver{}
--
--// InitAzureDiskDriver returns azureDiskDriver that implements TestDriver interface
--func InitAzureDiskDriver() testsuites.TestDriver {
--	return &azureDiskDriver{
--		driverInfo: testsuites.DriverInfo{
--			Name:             "azure-disk",
--			InTreePluginName: "kubernetes.io/azure-disk",
--			MaxFileSize:      testpatterns.FileSizeMedium,
--			SupportedSizeRange: e2evolume.SizeRange{
--				Min: "5Gi",
--			},
--			SupportedFsType: sets.NewString(
--				"", // Default fsType
--				"ext3",
--				"ext4",
--				"xfs",
--			),
--			TopologyKeys: []string{v1.LabelZoneFailureDomain},
--			Capabilities: map[testsuites.Capability]bool{
--				testsuites.CapPersistence: true,
--				testsuites.CapFsGroup:     true,
--				testsuites.CapBlock:       true,
--				testsuites.CapExec:        true,
--				testsuites.CapMultiPODs:   true,
--				// Azure supports volume limits, but the test creates large
--				// number of volumes and times out test suites.
--				testsuites.CapVolumeLimits: false,
--				testsuites.CapTopology:     true,
--			},
--		},
--	}
--}
--
--func (a *azureDiskDriver) GetDriverInfo() *testsuites.DriverInfo {
--	return &a.driverInfo
--}
--
--func (a *azureDiskDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
--	e2eskipper.SkipUnlessProviderIs("azure")
--}
--
--func (a *azureDiskDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
--	av, ok := e2evolume.(*azureDiskVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to Azure test volume")
--	diskName := av.volumeName[(strings.LastIndex(av.volumeName, "/") + 1):]
--
--	kind := v1.AzureManagedDisk
--	volSource := v1.VolumeSource{
--		AzureDisk: &v1.AzureDiskVolumeSource{
--			DiskName:    diskName,
--			DataDiskURI: av.volumeName,
--			Kind:        &kind,
--			ReadOnly:    &readOnly,
--		},
--	}
--	if fsType != "" {
--		volSource.AzureDisk.FSType = &fsType
--	}
--	return &volSource
--}
--
--func (a *azureDiskDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
--	av, ok := e2evolume.(*azureDiskVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to Azure test volume")
--
--	diskName := av.volumeName[(strings.LastIndex(av.volumeName, "/") + 1):]
--
--	kind := v1.AzureManagedDisk
--	pvSource := v1.PersistentVolumeSource{
--		AzureDisk: &v1.AzureDiskVolumeSource{
--			DiskName:    diskName,
--			DataDiskURI: av.volumeName,
--			Kind:        &kind,
--			ReadOnly:    &readOnly,
--		},
--	}
--	if fsType != "" {
--		pvSource.AzureDisk.FSType = &fsType
--	}
--	return &pvSource, nil
--}
--
--func (a *azureDiskDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
--	provisioner := "kubernetes.io/azure-disk"
--	parameters := map[string]string{}
--	if fsType != "" {
--		parameters["fsType"] = fsType
--	}
--	ns := config.Framework.Namespace.Name
--	suffix := fmt.Sprintf("%s-sc", a.driverInfo.Name)
--	delayedBinding := storagev1.VolumeBindingWaitForFirstConsumer
--
--	return testsuites.GetStorageClass(provisioner, parameters, &delayedBinding, ns, suffix)
--}
--
--func (a *azureDiskDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
--	return &testsuites.PerTestConfig{
--		Driver:    a,
--		Prefix:    "azure",
--		Framework: f,
--	}, func() {}
--}
--
--func (a *azureDiskDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
--	ginkgo.By("creating a test azure disk volume")
--	zone := getInlineVolumeZone(config.Framework)
--	if volType == testpatterns.InlineVolume {
--		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
--		// so pods should be also scheduled there.
--		config.ClientNodeSelection = e2epod.NodeSelection{
--			Selector: map[string]string{
--				v1.LabelZoneFailureDomain: zone,
--			},
--		}
--	}
--	volumeName, err := e2epv.CreatePDWithRetryAndZone(zone)
--	framework.ExpectNoError(err)
--	return &azureDiskVolume{
--		volumeName: volumeName,
--	}
--}
--
--func (v *azureDiskVolume) DeleteVolume() {
--	e2epv.DeletePDWithRetry(v.volumeName)
--}
--
--// AWS
--type awsDriver struct {
--	driverInfo testsuites.DriverInfo
--}
--
--type awsVolume struct {
--	volumeName string
--}
--
--var _ testsuites.TestDriver = &awsDriver{}
--
--var _ testsuites.PreprovisionedVolumeTestDriver = &awsDriver{}
--var _ testsuites.InlineVolumeTestDriver = &awsDriver{}
--var _ testsuites.PreprovisionedPVTestDriver = &awsDriver{}
--var _ testsuites.DynamicPVTestDriver = &awsDriver{}
--
--// InitAwsDriver returns awsDriver that implements TestDriver interface
--func InitAwsDriver() testsuites.TestDriver {
--	return &awsDriver{
--		driverInfo: testsuites.DriverInfo{
--			Name:             "aws",
--			InTreePluginName: "kubernetes.io/aws-ebs",
--			MaxFileSize:      testpatterns.FileSizeMedium,
--			SupportedSizeRange: e2evolume.SizeRange{
--				Min: "5Gi",
--			},
--			SupportedFsType: sets.NewString(
--				"", // Default fsType
--				"ext2",
--				"ext3",
--				"ext4",
--				"xfs",
--				"ntfs",
--			),
--			SupportedMountOption: sets.NewString("debug", "nouid32"),
--			TopologyKeys:         []string{v1.LabelZoneFailureDomain},
--			Capabilities: map[testsuites.Capability]bool{
--				testsuites.CapPersistence:         true,
--				testsuites.CapFsGroup:             true,
--				testsuites.CapBlock:               true,
--				testsuites.CapExec:                true,
--				testsuites.CapMultiPODs:           true,
--				testsuites.CapControllerExpansion: true,
--				testsuites.CapNodeExpansion:       true,
--				// AWS supports volume limits, but the test creates large
--				// number of volumes and times out test suites.
--				testsuites.CapVolumeLimits: false,
--				testsuites.CapTopology:     true,
--			},
--		},
--	}
--}
--
--func (a *awsDriver) GetDriverInfo() *testsuites.DriverInfo {
--	return &a.driverInfo
--}
--
--func (a *awsDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
--	e2eskipper.SkipUnlessProviderIs("aws")
--}
--
--func (a *awsDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
--	av, ok := e2evolume.(*awsVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to AWS test volume")
--	volSource := v1.VolumeSource{
--		AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
--			VolumeID: av.volumeName,
--			ReadOnly: readOnly,
--		},
--	}
--	if fsType != "" {
--		volSource.AWSElasticBlockStore.FSType = fsType
--	}
--	return &volSource
--}
--
--func (a *awsDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
--	av, ok := e2evolume.(*awsVolume)
--	framework.ExpectEqual(ok, true, "Failed to cast test volume to AWS test volume")
--	pvSource := v1.PersistentVolumeSource{
--		AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
--			VolumeID: av.volumeName,
--			ReadOnly: readOnly,
--		},
--	}
--	if fsType != "" {
--		pvSource.AWSElasticBlockStore.FSType = fsType
--	}
--	return &pvSource, nil
--}
--
--func (a *awsDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
--	provisioner := "kubernetes.io/aws-ebs"
--	parameters := map[string]string{}
--	if fsType != "" {
--		parameters["fsType"] = fsType
--	}
--	ns := config.Framework.Namespace.Name
--	suffix := fmt.Sprintf("%s-sc", a.driverInfo.Name)
--	delayedBinding := storagev1.VolumeBindingWaitForFirstConsumer
--
--	return testsuites.GetStorageClass(provisioner, parameters, &delayedBinding, ns, suffix)
--}
--
--func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
--	config := &testsuites.PerTestConfig{
--		Driver:    a,
--		Prefix:    "aws",
--		Framework: f,
--	}
--
--	if framework.NodeOSDistroIs("windows") {
--		config.ClientNodeSelection = e2epod.NodeSelection{
--			Selector: map[string]string{
--				"kubernetes.io/os": "windows",
--			},
--		}
--	}
--	return config, func() {}
--}
--
--func (a *awsDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
--	zone := getInlineVolumeZone(config.Framework)
--	if volType == testpatterns.InlineVolume {
--		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
--		// so pods should be also scheduled there.
--		config.ClientNodeSelection = e2epod.NodeSelection{
--			Selector: map[string]string{
--				v1.LabelZoneFailureDomain: zone,
--			},
--		}
--	}
--	ginkgo.By("creating a test aws volume")
--	vname, err := e2epv.CreatePDWithRetryAndZone(zone)
--	framework.ExpectNoError(err)
--	return &awsVolume{
--		volumeName: vname,
--	}
--}
--
--func (v *awsVolume) DeleteVolume() {
--	e2epv.DeletePDWithRetry(v.volumeName)
--}
--
- // local
- type localDriver struct {
- 	driverInfo testsuites.DriverInfo
-diff --git a/test/e2e/storage/drivers/in_tree_providers.go b/test/e2e/storage/drivers/in_tree_providers.go
-new file mode 100644
-index 00000000000..c7f5dd3052e
---- /dev/null
-+++ b/test/e2e/storage/drivers/in_tree_providers.go
-@@ -0,0 +1,751 @@
-+// +build !providerless
-+
-+package drivers
-+
-+import (
-+	"fmt"
-+	"os/exec"
-+	"strings"
-+	"time"
-+
-+	"github.com/onsi/ginkgo"
-+	v1 "k8s.io/api/core/v1"
-+	storagev1 "k8s.io/api/storage/v1"
-+	"k8s.io/apimachinery/pkg/util/sets"
-+	"k8s.io/kubernetes/test/e2e/framework"
-+	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
-+	e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
-+	e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
-+	e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
-+	"k8s.io/kubernetes/test/e2e/storage/testpatterns"
-+	"k8s.io/kubernetes/test/e2e/storage/testsuites"
-+	vspheretest "k8s.io/kubernetes/test/e2e/storage/vsphere"
-+)
-+
-+// Cinder
-+// This driver assumes that OpenStack client tools are installed
-+// (/usr/bin/nova, /usr/bin/cinder and /usr/bin/keystone)
-+// and that the usual OpenStack authentication env. variables are set
-+// (OS_USERNAME, OS_PASSWORD, OS_TENANT_NAME at least).
-+type cinderDriver struct {
-+	driverInfo testsuites.DriverInfo
-+}
-+
-+type cinderVolume struct {
-+	volumeName string
-+	volumeID   string
-+}
-+
-+var _ testsuites.TestDriver = &cinderDriver{}
-+var _ testsuites.PreprovisionedVolumeTestDriver = &cinderDriver{}
-+var _ testsuites.InlineVolumeTestDriver = &cinderDriver{}
-+var _ testsuites.PreprovisionedPVTestDriver = &cinderDriver{}
-+var _ testsuites.DynamicPVTestDriver = &cinderDriver{}
-+
-+// InitCinderDriver returns cinderDriver that implements TestDriver interface
-+func InitCinderDriver() testsuites.TestDriver {
-+	return &cinderDriver{
-+		driverInfo: testsuites.DriverInfo{
-+			Name:             "cinder",
-+			InTreePluginName: "kubernetes.io/cinder",
-+			MaxFileSize:      testpatterns.FileSizeMedium,
-+			SupportedSizeRange: e2evolume.SizeRange{
-+				Min: "5Gi",
-+			},
-+			SupportedFsType: sets.NewString(
-+				"", // Default fsType
-+				"ext3",
-+			),
-+			TopologyKeys: []string{v1.LabelZoneFailureDomain},
-+			Capabilities: map[testsuites.Capability]bool{
-+				testsuites.CapPersistence: true,
-+				testsuites.CapFsGroup:     true,
-+				testsuites.CapExec:        true,
-+				testsuites.CapBlock:       true,
-+				// Cinder supports volume limits, but the test creates large
-+				// number of volumes and times out test suites.
-+				testsuites.CapVolumeLimits: false,
-+				testsuites.CapTopology:     true,
-+			},
-+		},
-+	}
-+}
-+
-+func (c *cinderDriver) GetDriverInfo() *testsuites.DriverInfo {
-+	return &c.driverInfo
-+}
-+
-+func (c *cinderDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
-+	e2eskipper.SkipUnlessProviderIs("openstack")
-+}
-+
-+func (c *cinderDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
-+	cv, ok := e2evolume.(*cinderVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to Cinder test volume")
-+
-+	volSource := v1.VolumeSource{
-+		Cinder: &v1.CinderVolumeSource{
-+			VolumeID: cv.volumeID,
-+			ReadOnly: readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		volSource.Cinder.FSType = fsType
-+	}
-+	return &volSource
-+}
-+
-+func (c *cinderDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
-+	cv, ok := e2evolume.(*cinderVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to Cinder test volume")
-+
-+	pvSource := v1.PersistentVolumeSource{
-+		Cinder: &v1.CinderPersistentVolumeSource{
-+			VolumeID: cv.volumeID,
-+			ReadOnly: readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		pvSource.Cinder.FSType = fsType
-+	}
-+	return &pvSource, nil
-+}
-+
-+func (c *cinderDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
-+	provisioner := "kubernetes.io/cinder"
-+	parameters := map[string]string{}
-+	if fsType != "" {
-+		parameters["fsType"] = fsType
-+	}
-+	ns := config.Framework.Namespace.Name
-+	suffix := fmt.Sprintf("%s-sc", c.driverInfo.Name)
-+
-+	return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
-+}
-+
-+func (c *cinderDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
-+	return &testsuites.PerTestConfig{
-+		Driver:    c,
-+		Prefix:    "cinder",
-+		Framework: f,
-+	}, func() {}
-+}
-+
-+func (c *cinderDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
-+	f := config.Framework
-+	ns := f.Namespace
-+
-+	// We assume that namespace.Name is a random string
-+	volumeName := ns.Name
-+	ginkgo.By("creating a test Cinder volume")
-+	output, err := exec.Command("cinder", "create", "--display-name="+volumeName, "1").CombinedOutput()
-+	outputString := string(output[:])
-+	framework.Logf("cinder output:\n%s", outputString)
-+	framework.ExpectNoError(err)
-+
-+	// Parse 'id'' from stdout. Expected format:
-+	// |     attachments     |                  []                  |
-+	// |  availability_zone  |                 nova                 |
-+	// ...
-+	// |          id         | 1d6ff08f-5d1c-41a4-ad72-4ef872cae685 |
-+	volumeID := ""
-+	for _, line := range strings.Split(outputString, "\n") {
-+		fields := strings.Fields(line)
-+		if len(fields) != 5 {
-+			continue
-+		}
-+		if fields[1] != "id" {
-+			continue
-+		}
-+		volumeID = fields[3]
-+		break
-+	}
-+	framework.Logf("Volume ID: %s", volumeID)
-+	framework.ExpectNotEqual(volumeID, "")
-+	return &cinderVolume{
-+		volumeName: volumeName,
-+		volumeID:   volumeID,
-+	}
-+}
-+
-+func (v *cinderVolume) DeleteVolume() {
-+	name := v.volumeName
-+
-+	// Try to delete the volume for several seconds - it takes
-+	// a while for the plugin to detach it.
-+	var output []byte
-+	var err error
-+	timeout := time.Second * 120
-+
-+	framework.Logf("Waiting up to %v for removal of cinder volume %s", timeout, name)
-+	for start := time.Now(); time.Since(start) < timeout; time.Sleep(5 * time.Second) {
-+		output, err = exec.Command("cinder", "delete", name).CombinedOutput()
-+		if err == nil {
-+			framework.Logf("Cinder volume %s deleted", name)
-+			return
-+		}
-+		framework.Logf("Failed to delete volume %s: %v", name, err)
-+	}
-+	framework.Logf("Giving up deleting volume %s: %v\n%s", name, err, string(output[:]))
-+}
-+
-+// GCE
-+type gcePdDriver struct {
-+	driverInfo testsuites.DriverInfo
-+}
-+
-+type gcePdVolume struct {
-+	volumeName string
-+}
-+
-+var _ testsuites.TestDriver = &gcePdDriver{}
-+var _ testsuites.PreprovisionedVolumeTestDriver = &gcePdDriver{}
-+var _ testsuites.InlineVolumeTestDriver = &gcePdDriver{}
-+var _ testsuites.PreprovisionedPVTestDriver = &gcePdDriver{}
-+var _ testsuites.DynamicPVTestDriver = &gcePdDriver{}
-+
-+// InitGcePdDriver returns gcePdDriver that implements TestDriver interface
-+func InitGcePdDriver() testsuites.TestDriver {
-+	// In current test structure, it first initialize the driver and then set up
-+	// the new framework, so we cannot get the correct OS here. So here set to
-+	// support all fs types including both linux and windows. We have code to check Node OS later
-+	// during test.
-+	supportedTypes := sets.NewString(
-+		"", // Default fsType
-+		"ext2",
-+		"ext3",
-+		"ext4",
-+		"xfs",
-+		"ntfs",
-+	)
-+	return &gcePdDriver{
-+		driverInfo: testsuites.DriverInfo{
-+			Name:             "gcepd",
-+			InTreePluginName: "kubernetes.io/gce-pd",
-+			MaxFileSize:      testpatterns.FileSizeMedium,
-+			SupportedSizeRange: e2evolume.SizeRange{
-+				Min: "5Gi",
-+			},
-+			SupportedFsType:      supportedTypes,
-+			SupportedMountOption: sets.NewString("debug", "nouid32"),
-+			TopologyKeys:         []string{v1.LabelZoneFailureDomain},
-+			Capabilities: map[testsuites.Capability]bool{
-+				testsuites.CapPersistence:         true,
-+				testsuites.CapFsGroup:             true,
-+				testsuites.CapBlock:               true,
-+				testsuites.CapExec:                true,
-+				testsuites.CapMultiPODs:           true,
-+				testsuites.CapControllerExpansion: true,
-+				testsuites.CapNodeExpansion:       true,
-+				// GCE supports volume limits, but the test creates large
-+				// number of volumes and times out test suites.
-+				testsuites.CapVolumeLimits: false,
-+				testsuites.CapTopology:     true,
-+			},
-+		},
-+	}
-+}
-+
-+func (g *gcePdDriver) GetDriverInfo() *testsuites.DriverInfo {
-+	return &g.driverInfo
-+}
-+
-+func (g *gcePdDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
-+	e2eskipper.SkipUnlessProviderIs("gce", "gke")
-+	if pattern.FeatureTag == "[sig-windows]" {
-+		e2eskipper.SkipUnlessNodeOSDistroIs("windows")
-+	}
-+}
-+
-+func (g *gcePdDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
-+	gv, ok := e2evolume.(*gcePdVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to GCE PD test volume")
-+	volSource := v1.VolumeSource{
-+		GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
-+			PDName:   gv.volumeName,
-+			ReadOnly: readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		volSource.GCEPersistentDisk.FSType = fsType
-+	}
-+	return &volSource
-+}
-+
-+func (g *gcePdDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
-+	gv, ok := e2evolume.(*gcePdVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to GCE PD test volume")
-+	pvSource := v1.PersistentVolumeSource{
-+		GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
-+			PDName:   gv.volumeName,
-+			ReadOnly: readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		pvSource.GCEPersistentDisk.FSType = fsType
-+	}
-+	return &pvSource, nil
-+}
-+
-+func (g *gcePdDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
-+	provisioner := "kubernetes.io/gce-pd"
-+	parameters := map[string]string{}
-+	if fsType != "" {
-+		parameters["fsType"] = fsType
-+	}
-+	ns := config.Framework.Namespace.Name
-+	suffix := fmt.Sprintf("%s-sc", g.driverInfo.Name)
-+	delayedBinding := storagev1.VolumeBindingWaitForFirstConsumer
-+
-+	return testsuites.GetStorageClass(provisioner, parameters, &delayedBinding, ns, suffix)
-+}
-+
-+func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
-+	config := &testsuites.PerTestConfig{
-+		Driver:    g,
-+		Prefix:    "gcepd",
-+		Framework: f,
-+	}
-+
-+	if framework.NodeOSDistroIs("windows") {
-+		config.ClientNodeSelection = e2epod.NodeSelection{
-+			Selector: map[string]string{
-+				"kubernetes.io/os": "windows",
-+			},
-+		}
-+	}
-+	return config, func() {}
-+
-+}
-+
-+func (g *gcePdDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
-+	zone := getInlineVolumeZone(config.Framework)
-+	if volType == testpatterns.InlineVolume {
-+		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
-+		// so pods should be also scheduled there.
-+		config.ClientNodeSelection = e2epod.NodeSelection{
-+			Selector: map[string]string{
-+				v1.LabelZoneFailureDomain: zone,
-+			},
-+		}
-+	}
-+	ginkgo.By("creating a test gce pd volume")
-+	vname, err := e2epv.CreatePDWithRetryAndZone(zone)
-+	framework.ExpectNoError(err)
-+	return &gcePdVolume{
-+		volumeName: vname,
-+	}
-+}
-+
-+func (v *gcePdVolume) DeleteVolume() {
-+	e2epv.DeletePDWithRetry(v.volumeName)
-+}
-+
-+// vSphere
-+type vSphereDriver struct {
-+	driverInfo testsuites.DriverInfo
-+}
-+
-+type vSphereVolume struct {
-+	volumePath string
-+	nodeInfo   *vspheretest.NodeInfo
-+}
-+
-+var _ testsuites.TestDriver = &vSphereDriver{}
-+var _ testsuites.PreprovisionedVolumeTestDriver = &vSphereDriver{}
-+var _ testsuites.InlineVolumeTestDriver = &vSphereDriver{}
-+var _ testsuites.PreprovisionedPVTestDriver = &vSphereDriver{}
-+var _ testsuites.DynamicPVTestDriver = &vSphereDriver{}
-+
-+// InitVSphereDriver returns vSphereDriver that implements TestDriver interface
-+func InitVSphereDriver() testsuites.TestDriver {
-+	return &vSphereDriver{
-+		driverInfo: testsuites.DriverInfo{
-+			Name:             "vsphere",
-+			InTreePluginName: "kubernetes.io/vsphere-volume",
-+			MaxFileSize:      testpatterns.FileSizeMedium,
-+			SupportedSizeRange: e2evolume.SizeRange{
-+				Min: "5Gi",
-+			},
-+			SupportedFsType: sets.NewString(
-+				"", // Default fsType
-+				"ext4",
-+			),
-+			TopologyKeys: []string{v1.LabelZoneFailureDomain},
-+			Capabilities: map[testsuites.Capability]bool{
-+				testsuites.CapPersistence: true,
-+				testsuites.CapFsGroup:     true,
-+				testsuites.CapExec:        true,
-+				testsuites.CapMultiPODs:   true,
-+				testsuites.CapTopology:    true,
-+			},
-+		},
-+	}
-+}
-+func (v *vSphereDriver) GetDriverInfo() *testsuites.DriverInfo {
-+	return &v.driverInfo
-+}
-+
-+func (v *vSphereDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
-+	e2eskipper.SkipUnlessProviderIs("vsphere")
-+}
-+
-+func (v *vSphereDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
-+	vsv, ok := e2evolume.(*vSphereVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to vSphere test volume")
-+
-+	// vSphere driver doesn't seem to support readOnly volume
-+	// TODO: check if it is correct
-+	if readOnly {
-+		return nil
-+	}
-+	volSource := v1.VolumeSource{
-+		VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{
-+			VolumePath: vsv.volumePath,
-+		},
-+	}
-+	if fsType != "" {
-+		volSource.VsphereVolume.FSType = fsType
-+	}
-+	return &volSource
-+}
-+
-+func (v *vSphereDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
-+	vsv, ok := e2evolume.(*vSphereVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to vSphere test volume")
-+
-+	// vSphere driver doesn't seem to support readOnly volume
-+	// TODO: check if it is correct
-+	if readOnly {
-+		return nil, nil
-+	}
-+	pvSource := v1.PersistentVolumeSource{
-+		VsphereVolume: &v1.VsphereVirtualDiskVolumeSource{
-+			VolumePath: vsv.volumePath,
-+		},
-+	}
-+	if fsType != "" {
-+		pvSource.VsphereVolume.FSType = fsType
-+	}
-+	return &pvSource, nil
-+}
-+
-+func (v *vSphereDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
-+	provisioner := "kubernetes.io/vsphere-volume"
-+	parameters := map[string]string{}
-+	if fsType != "" {
-+		parameters["fsType"] = fsType
-+	}
-+	ns := config.Framework.Namespace.Name
-+	suffix := fmt.Sprintf("%s-sc", v.driverInfo.Name)
-+
-+	return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
-+}
-+
-+func (v *vSphereDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
-+	return &testsuites.PerTestConfig{
-+		Driver:    v,
-+		Prefix:    "vsphere",
-+		Framework: f,
-+	}, func() {}
-+}
-+
-+func (v *vSphereDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
-+	f := config.Framework
-+	vspheretest.Bootstrap(f)
-+	nodeInfo := vspheretest.GetReadySchedulableRandomNodeInfo()
-+	volumePath, err := nodeInfo.VSphere.CreateVolume(&vspheretest.VolumeOptions{}, nodeInfo.DataCenterRef)
-+	framework.ExpectNoError(err)
-+	return &vSphereVolume{
-+		volumePath: volumePath,
-+		nodeInfo:   nodeInfo,
-+	}
-+}
-+
-+func (v *vSphereVolume) DeleteVolume() {
-+	v.nodeInfo.VSphere.DeleteVolume(v.volumePath, v.nodeInfo.DataCenterRef)
-+}
-+
-+// Azure Disk
-+type azureDiskDriver struct {
-+	driverInfo testsuites.DriverInfo
-+}
-+
-+type azureDiskVolume struct {
-+	volumeName string
-+}
-+
-+var _ testsuites.TestDriver = &azureDiskDriver{}
-+var _ testsuites.PreprovisionedVolumeTestDriver = &azureDiskDriver{}
-+var _ testsuites.InlineVolumeTestDriver = &azureDiskDriver{}
-+var _ testsuites.PreprovisionedPVTestDriver = &azureDiskDriver{}
-+var _ testsuites.DynamicPVTestDriver = &azureDiskDriver{}
-+
-+// InitAzureDiskDriver returns azureDiskDriver that implements TestDriver interface
-+func InitAzureDiskDriver() testsuites.TestDriver {
-+	return &azureDiskDriver{
-+		driverInfo: testsuites.DriverInfo{
-+			Name:             "azure-disk",
-+			InTreePluginName: "kubernetes.io/azure-disk",
-+			MaxFileSize:      testpatterns.FileSizeMedium,
-+			SupportedSizeRange: e2evolume.SizeRange{
-+				Min: "5Gi",
-+			},
-+			SupportedFsType: sets.NewString(
-+				"", // Default fsType
-+				"ext3",
-+				"ext4",
-+				"xfs",
-+			),
-+			TopologyKeys: []string{v1.LabelZoneFailureDomain},
-+			Capabilities: map[testsuites.Capability]bool{
-+				testsuites.CapPersistence: true,
-+				testsuites.CapFsGroup:     true,
-+				testsuites.CapBlock:       true,
-+				testsuites.CapExec:        true,
-+				testsuites.CapMultiPODs:   true,
-+				// Azure supports volume limits, but the test creates large
-+				// number of volumes and times out test suites.
-+				testsuites.CapVolumeLimits: false,
-+				testsuites.CapTopology:     true,
-+			},
-+		},
-+	}
-+}
-+
-+func (a *azureDiskDriver) GetDriverInfo() *testsuites.DriverInfo {
-+	return &a.driverInfo
-+}
-+
-+func (a *azureDiskDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
-+	e2eskipper.SkipUnlessProviderIs("azure")
-+}
-+
-+func (a *azureDiskDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
-+	av, ok := e2evolume.(*azureDiskVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to Azure test volume")
-+	diskName := av.volumeName[(strings.LastIndex(av.volumeName, "/") + 1):]
-+
-+	kind := v1.AzureManagedDisk
-+	volSource := v1.VolumeSource{
-+		AzureDisk: &v1.AzureDiskVolumeSource{
-+			DiskName:    diskName,
-+			DataDiskURI: av.volumeName,
-+			Kind:        &kind,
-+			ReadOnly:    &readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		volSource.AzureDisk.FSType = &fsType
-+	}
-+	return &volSource
-+}
-+
-+func (a *azureDiskDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
-+	av, ok := e2evolume.(*azureDiskVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to Azure test volume")
-+
-+	diskName := av.volumeName[(strings.LastIndex(av.volumeName, "/") + 1):]
-+
-+	kind := v1.AzureManagedDisk
-+	pvSource := v1.PersistentVolumeSource{
-+		AzureDisk: &v1.AzureDiskVolumeSource{
-+			DiskName:    diskName,
-+			DataDiskURI: av.volumeName,
-+			Kind:        &kind,
-+			ReadOnly:    &readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		pvSource.AzureDisk.FSType = &fsType
-+	}
-+	return &pvSource, nil
-+}
-+
-+func (a *azureDiskDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
-+	provisioner := "kubernetes.io/azure-disk"
-+	parameters := map[string]string{}
-+	if fsType != "" {
-+		parameters["fsType"] = fsType
-+	}
-+	ns := config.Framework.Namespace.Name
-+	suffix := fmt.Sprintf("%s-sc", a.driverInfo.Name)
-+	delayedBinding := storagev1.VolumeBindingWaitForFirstConsumer
-+
-+	return testsuites.GetStorageClass(provisioner, parameters, &delayedBinding, ns, suffix)
-+}
-+
-+func (a *azureDiskDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
-+	return &testsuites.PerTestConfig{
-+		Driver:    a,
-+		Prefix:    "azure",
-+		Framework: f,
-+	}, func() {}
-+}
-+
-+func (a *azureDiskDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
-+	ginkgo.By("creating a test azure disk volume")
-+	zone := getInlineVolumeZone(config.Framework)
-+	if volType == testpatterns.InlineVolume {
-+		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
-+		// so pods should be also scheduled there.
-+		config.ClientNodeSelection = e2epod.NodeSelection{
-+			Selector: map[string]string{
-+				v1.LabelZoneFailureDomain: zone,
-+			},
-+		}
-+	}
-+	volumeName, err := e2epv.CreatePDWithRetryAndZone(zone)
-+	framework.ExpectNoError(err)
-+	return &azureDiskVolume{
-+		volumeName: volumeName,
-+	}
-+}
-+
-+func (v *azureDiskVolume) DeleteVolume() {
-+	e2epv.DeletePDWithRetry(v.volumeName)
-+}
-+
-+// AWS
-+type awsDriver struct {
-+	driverInfo testsuites.DriverInfo
-+}
-+
-+type awsVolume struct {
-+	volumeName string
-+}
-+
-+var _ testsuites.TestDriver = &awsDriver{}
-+
-+var _ testsuites.PreprovisionedVolumeTestDriver = &awsDriver{}
-+var _ testsuites.InlineVolumeTestDriver = &awsDriver{}
-+var _ testsuites.PreprovisionedPVTestDriver = &awsDriver{}
-+var _ testsuites.DynamicPVTestDriver = &awsDriver{}
-+
-+// InitAwsDriver returns awsDriver that implements TestDriver interface
-+func InitAwsDriver() testsuites.TestDriver {
-+	return &awsDriver{
-+		driverInfo: testsuites.DriverInfo{
-+			Name:             "aws",
-+			InTreePluginName: "kubernetes.io/aws-ebs",
-+			MaxFileSize:      testpatterns.FileSizeMedium,
-+			SupportedSizeRange: e2evolume.SizeRange{
-+				Min: "5Gi",
-+			},
-+			SupportedFsType: sets.NewString(
-+				"", // Default fsType
-+				"ext2",
-+				"ext3",
-+				"ext4",
-+				"xfs",
-+				"ntfs",
-+			),
-+			SupportedMountOption: sets.NewString("debug", "nouid32"),
-+			TopologyKeys:         []string{v1.LabelZoneFailureDomain},
-+			Capabilities: map[testsuites.Capability]bool{
-+				testsuites.CapPersistence:         true,
-+				testsuites.CapFsGroup:             true,
-+				testsuites.CapBlock:               true,
-+				testsuites.CapExec:                true,
-+				testsuites.CapMultiPODs:           true,
-+				testsuites.CapControllerExpansion: true,
-+				testsuites.CapNodeExpansion:       true,
-+				// AWS supports volume limits, but the test creates large
-+				// number of volumes and times out test suites.
-+				testsuites.CapVolumeLimits: false,
-+				testsuites.CapTopology:     true,
-+			},
-+		},
-+	}
-+}
-+
-+func (a *awsDriver) GetDriverInfo() *testsuites.DriverInfo {
-+	return &a.driverInfo
-+}
-+
-+func (a *awsDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
-+	e2eskipper.SkipUnlessProviderIs("aws")
-+}
-+
-+func (a *awsDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) *v1.VolumeSource {
-+	av, ok := e2evolume.(*awsVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to AWS test volume")
-+	volSource := v1.VolumeSource{
-+		AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
-+			VolumeID: av.volumeName,
-+			ReadOnly: readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		volSource.AWSElasticBlockStore.FSType = fsType
-+	}
-+	return &volSource
-+}
-+
-+func (a *awsDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2evolume testsuites.TestVolume) (*v1.PersistentVolumeSource, *v1.VolumeNodeAffinity) {
-+	av, ok := e2evolume.(*awsVolume)
-+	framework.ExpectEqual(ok, true, "Failed to cast test volume to AWS test volume")
-+	pvSource := v1.PersistentVolumeSource{
-+		AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
-+			VolumeID: av.volumeName,
-+			ReadOnly: readOnly,
-+		},
-+	}
-+	if fsType != "" {
-+		pvSource.AWSElasticBlockStore.FSType = fsType
-+	}
-+	return &pvSource, nil
-+}
-+
-+func (a *awsDriver) GetDynamicProvisionStorageClass(config *testsuites.PerTestConfig, fsType string) *storagev1.StorageClass {
-+	provisioner := "kubernetes.io/aws-ebs"
-+	parameters := map[string]string{}
-+	if fsType != "" {
-+		parameters["fsType"] = fsType
-+	}
-+	ns := config.Framework.Namespace.Name
-+	suffix := fmt.Sprintf("%s-sc", a.driverInfo.Name)
-+	delayedBinding := storagev1.VolumeBindingWaitForFirstConsumer
-+
-+	return testsuites.GetStorageClass(provisioner, parameters, &delayedBinding, ns, suffix)
-+}
-+
-+func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConfig, func()) {
-+	config := &testsuites.PerTestConfig{
-+		Driver:    a,
-+		Prefix:    "aws",
-+		Framework: f,
-+	}
-+
-+	if framework.NodeOSDistroIs("windows") {
-+		config.ClientNodeSelection = e2epod.NodeSelection{
-+			Selector: map[string]string{
-+				"kubernetes.io/os": "windows",
-+			},
-+		}
-+	}
-+	return config, func() {}
-+}
-+
-+func (a *awsDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
-+	zone := getInlineVolumeZone(config.Framework)
-+	if volType == testpatterns.InlineVolume {
-+		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
-+		// so pods should be also scheduled there.
-+		config.ClientNodeSelection = e2epod.NodeSelection{
-+			Selector: map[string]string{
-+				v1.LabelZoneFailureDomain: zone,
-+			},
-+		}
-+	}
-+	ginkgo.By("creating a test aws volume")
-+	vname, err := e2epv.CreatePDWithRetryAndZone(zone)
-+	framework.ExpectNoError(err)
-+	return &awsVolume{
-+		volumeName: vname,
-+	}
-+}
-+
-+func (v *awsVolume) DeleteVolume() {
-+	e2epv.DeletePDWithRetry(v.volumeName)
-+}
-diff --git a/test/e2e/storage/in_tree_volumes.go b/test/e2e/storage/in_tree_volumes.go
-index 19372062407..8322db743cd 100644
---- a/test/e2e/storage/in_tree_volumes.go
-+++ b/test/e2e/storage/in_tree_volumes.go
-@@ -33,11 +33,6 @@ var testDrivers = []func() testsuites.TestDriver{
- 	drivers.InitHostPathDriver,
- 	drivers.InitHostPathSymlinkDriver,
- 	drivers.InitEmptydirDriver,
--	drivers.InitCinderDriver,
--	drivers.InitGcePdDriver,
--	drivers.InitVSphereDriver,
--	drivers.InitAzureDiskDriver,
--	drivers.InitAwsDriver,
- 	drivers.InitLocalDriverWithVolumeType(utils.LocalVolumeDirectory),
- 	drivers.InitLocalDriverWithVolumeType(utils.LocalVolumeDirectoryLink),
- 	drivers.InitLocalDriverWithVolumeType(utils.LocalVolumeDirectoryBindMounted),
-diff --git a/test/e2e/storage/in_tree_volumes_providers.go b/test/e2e/storage/in_tree_volumes_providers.go
-new file mode 100644
-index 00000000000..d6a5dbca191
---- /dev/null
-+++ b/test/e2e/storage/in_tree_volumes_providers.go
-@@ -0,0 +1,46 @@
-+// +build !providerless
-+
-+/*
-+Copyright 2020 The Kubernetes Authors.
-+
-+Licensed under the Apache License, Version 2.0 (the "License");
-+you may not use this file except in compliance with the License.
-+You may obtain a copy of the License at
-+
-+    http://www.apache.org/licenses/LICENSE-2.0
-+
-+Unless required by applicable law or agreed to in writing, software
-+distributed under the License is distributed on an "AS IS" BASIS,
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+See the License for the specific language governing permissions and
-+limitations under the License.
-+*/
-+
-+package storage
-+
-+import (
-+	"github.com/onsi/ginkgo"
-+	"k8s.io/kubernetes/test/e2e/storage/drivers"
-+	"k8s.io/kubernetes/test/e2e/storage/testsuites"
-+	"k8s.io/kubernetes/test/e2e/storage/utils"
-+)
-+
-+// List of testDrivers to be executed in below loop
-+var testDriversProviders = []func() testsuites.TestDriver{
-+	drivers.InitCinderDriver,
-+	drivers.InitGcePdDriver,
-+	drivers.InitVSphereDriver,
-+	drivers.InitAzureDiskDriver,
-+	drivers.InitAwsDriver,
-+}
-+
-+// This executes testSuites for in-tree volumes.
-+var _ = utils.SIGDescribe("In-tree Volumes for Cloud Providers", func() {
-+	for _, initDriver := range testDriversProviders {
-+		curDriver := initDriver()
-+
-+		ginkgo.Context(testsuites.GetDriverNameWithFeatureTags(curDriver), func() {
-+			testsuites.DefineTestSuite(curDriver, testsuites.BaseSuites)
-+		})
-+	}
-+})
-diff --git a/test/e2e/storage/nfs_persistent_volume-disruptive.go b/test/e2e/storage/nfs_persistent_volume-disruptive.go
-index 5afebb5e903..b197eee99a6 100644
---- a/test/e2e/storage/nfs_persistent_volume-disruptive.go
-+++ b/test/e2e/storage/nfs_persistent_volume-disruptive.go
-@@ -91,7 +91,7 @@ var _ = utils.SIGDescribe("NFSPersistentVolumes[Disruptive][Flaky]", func() {
- 
- 	ginkgo.BeforeEach(func() {
- 		// To protect the NFS volume pod from the kubelet restart, we isolate it on its own node.
--		e2eskipper.SkipUnlessNodeCountIsAtLeast(minNodes)
-+		e2eskipper.SkipUnlessNodeCountIsAtLeast(2)
- 		e2eskipper.SkipIfProviderIs("local")
- 
- 		c = f.ClientSet
-diff --git a/test/e2e/storage/pd.go b/test/e2e/storage/pd.go
-index f5b6060a834..addd304147c 100644
---- a/test/e2e/storage/pd.go
-+++ b/test/e2e/storage/pd.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2015 The Kubernetes Authors.
- 
-diff --git a/test/e2e/storage/persistent_volumes-gce.go b/test/e2e/storage/persistent_volumes-gce.go
-index b8bc887384e..f572754c5e8 100644
---- a/test/e2e/storage/persistent_volumes-gce.go
-+++ b/test/e2e/storage/persistent_volumes-gce.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2017 The Kubernetes Authors.
- 
-diff --git a/test/e2e/storage/regional_pd.go b/test/e2e/storage/regional_pd.go
-index 7763afaf6b1..a042dcc9d4a 100644
---- a/test/e2e/storage/regional_pd.go
-+++ b/test/e2e/storage/regional_pd.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2016 The Kubernetes Authors.
- 
-@@ -18,6 +20,7 @@ package storage
- 
- import (
- 	"context"
-+
- 	"github.com/onsi/ginkgo"
- 	"github.com/onsi/gomega"
- 
-diff --git a/test/e2e/storage/utils/BUILD b/test/e2e/storage/utils/BUILD
-index bdc78982dcb..c57ff325f76 100644
---- a/test/e2e/storage/utils/BUILD
-+++ b/test/e2e/storage/utils/BUILD
-@@ -7,7 +7,6 @@ go_library(
-     srcs = [
-         "create.go",
-         "deployment.go",
--        "ebs.go",
-         "framework.go",
-         "host_exec.go",
-         "local.go",
-@@ -37,8 +36,6 @@ go_library(
-         "//test/e2e/framework/ssh:go_default_library",
-         "//test/e2e/framework/testfiles:go_default_library",
-         "//test/utils/image:go_default_library",
--        "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library",
--        "//vendor/github.com/aws/aws-sdk-go/service/ec2:go_default_library",
-         "//vendor/github.com/onsi/ginkgo:go_default_library",
-         "//vendor/github.com/onsi/gomega:go_default_library",
-         "//vendor/github.com/pkg/errors:go_default_library",
-diff --git a/test/e2e/storage/utils/ebs.go b/test/e2e/storage/utils/ebs.go
-index 39e223f36aa..55065ea07b7 100644
---- a/test/e2e/storage/utils/ebs.go
-+++ b/test/e2e/storage/utils/ebs.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2020 The Kubernetes Authors.
- 
-diff --git a/test/e2e/storage/volume_provisioning.go b/test/e2e/storage/volume_provisioning.go
-index a8b494eb3ac..c070a81283c 100644
---- a/test/e2e/storage/volume_provisioning.go
-+++ b/test/e2e/storage/volume_provisioning.go
-@@ -24,11 +24,6 @@ import (
- 	"time"
- 
- 	"github.com/onsi/ginkgo"
--	"github.com/onsi/gomega"
--
--	"github.com/aws/aws-sdk-go/aws"
--	"github.com/aws/aws-sdk-go/aws/session"
--	"github.com/aws/aws-sdk-go/service/ec2"
- 
- 	v1 "k8s.io/api/core/v1"
- 	rbacv1 "k8s.io/api/rbac/v1"
-@@ -37,9 +32,7 @@ import (
- 	apierrors "k8s.io/apimachinery/pkg/api/errors"
- 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- 	"k8s.io/apimachinery/pkg/runtime/schema"
--	"k8s.io/apimachinery/pkg/types"
- 	"k8s.io/apimachinery/pkg/util/rand"
--	"k8s.io/apimachinery/pkg/util/sets"
- 	"k8s.io/apimachinery/pkg/util/wait"
- 	"k8s.io/apiserver/pkg/authentication/serviceaccount"
- 	clientset "k8s.io/client-go/kubernetes"
-@@ -48,7 +41,6 @@ import (
- 	e2eauth "k8s.io/kubernetes/test/e2e/framework/auth"
- 	e2enode "k8s.io/kubernetes/test/e2e/framework/node"
- 	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
--	"k8s.io/kubernetes/test/e2e/framework/providers/gce"
- 	e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
- 	e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
- 	"k8s.io/kubernetes/test/e2e/storage/testsuites"
-@@ -61,80 +53,6 @@ const (
- 	externalPluginName = "example.com/nfs"
- )
- 
--// checkAWSEBS checks properties of an AWS EBS. Test framework does not
--// instantiate full AWS provider, therefore we need use ec2 API directly.
--func checkAWSEBS(volume *v1.PersistentVolume, volumeType string, encrypted bool) error {
--	diskName := volume.Spec.AWSElasticBlockStore.VolumeID
--
--	var client *ec2.EC2
--
--	tokens := strings.Split(diskName, "/")
--	volumeID := tokens[len(tokens)-1]
--
--	zone := framework.TestContext.CloudConfig.Zone
--
--	awsSession, err := session.NewSession()
--	if err != nil {
--		return fmt.Errorf("error creating session: %v", err)
--	}
--
--	if len(zone) > 0 {
--		region := zone[:len(zone)-1]
--		cfg := aws.Config{Region: &region}
--		framework.Logf("using region %s", region)
--		client = ec2.New(awsSession, &cfg)
--	} else {
--		framework.Logf("no region configured")
--		client = ec2.New(awsSession)
--	}
--
--	request := &ec2.DescribeVolumesInput{
--		VolumeIds: []*string{&volumeID},
--	}
--	info, err := client.DescribeVolumes(request)
--	if err != nil {
--		return fmt.Errorf("error querying ec2 for volume %q: %v", volumeID, err)
--	}
--	if len(info.Volumes) == 0 {
--		return fmt.Errorf("no volumes found for volume %q", volumeID)
--	}
--	if len(info.Volumes) > 1 {
--		return fmt.Errorf("multiple volumes found for volume %q", volumeID)
--	}
--
--	awsVolume := info.Volumes[0]
--	if awsVolume.VolumeType == nil {
--		return fmt.Errorf("expected volume type %q, got nil", volumeType)
--	}
--	if *awsVolume.VolumeType != volumeType {
--		return fmt.Errorf("expected volume type %q, got %q", volumeType, *awsVolume.VolumeType)
--	}
--	if encrypted && awsVolume.Encrypted == nil {
--		return fmt.Errorf("expected encrypted volume, got no encryption")
--	}
--	if encrypted && !*awsVolume.Encrypted {
--		return fmt.Errorf("expected encrypted volume, got %v", *awsVolume.Encrypted)
--	}
--	return nil
--}
--
--func checkGCEPD(volume *v1.PersistentVolume, volumeType string) error {
--	cloud, err := gce.GetGCECloud()
--	if err != nil {
--		return err
--	}
--	diskName := volume.Spec.GCEPersistentDisk.PDName
--	disk, err := cloud.GetDiskByNameUnknownZone(diskName)
--	if err != nil {
--		return err
--	}
--
--	if !strings.HasSuffix(disk.Type, volumeType) {
--		return fmt.Errorf("unexpected disk type %q, expected suffix %q", disk.Type, volumeType)
--	}
--	return nil
--}
--
- var _ = utils.SIGDescribe("Dynamic Provisioning", func() {
- 	f := framework.NewDefaultFramework("volume-provisioning")
- 
-@@ -147,451 +65,6 @@ var _ = utils.SIGDescribe("Dynamic Provisioning", func() {
- 		ns = f.Namespace.Name
- 	})
- 
--	ginkgo.Describe("DynamicProvisioner [Slow]", func() {
--		ginkgo.It("should provision storage with different parameters", func() {
--
--			// This test checks that dynamic provisioning can provision a volume
--			// that can be used to persist data among pods.
--			tests := []testsuites.StorageClassTest{
--				// GCE/GKE
--				{
--					Name:           "SSD PD on GCE/GKE",
--					CloudProviders: []string{"gce", "gke"},
--					Provisioner:    "kubernetes.io/gce-pd",
--					Parameters: map[string]string{
--						"type": "pd-ssd",
--						"zone": getRandomClusterZone(c),
--					},
--					ClaimSize:    "1.5Gi",
--					ExpectedSize: "2Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--						err := checkGCEPD(volume, "pd-ssd")
--						framework.ExpectNoError(err, "checkGCEPD pd-ssd")
--					},
--				},
--				{
--					Name:           "HDD PD on GCE/GKE",
--					CloudProviders: []string{"gce", "gke"},
--					Provisioner:    "kubernetes.io/gce-pd",
--					Parameters: map[string]string{
--						"type": "pd-standard",
--					},
--					ClaimSize:    "1.5Gi",
--					ExpectedSize: "2Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--						err := checkGCEPD(volume, "pd-standard")
--						framework.ExpectNoError(err, "checkGCEPD pd-standard")
--					},
--				},
--				// AWS
--				{
--					Name:           "gp2 EBS on AWS",
--					CloudProviders: []string{"aws"},
--					Provisioner:    "kubernetes.io/aws-ebs",
--					Parameters: map[string]string{
--						"type": "gp2",
--						"zone": getRandomClusterZone(c),
--					},
--					ClaimSize:    "1.5Gi",
--					ExpectedSize: "2Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--						err := checkAWSEBS(volume, "gp2", false)
--						framework.ExpectNoError(err, "checkAWSEBS gp2")
--					},
--				},
--				{
--					Name:           "io1 EBS on AWS",
--					CloudProviders: []string{"aws"},
--					Provisioner:    "kubernetes.io/aws-ebs",
--					Parameters: map[string]string{
--						"type":      "io1",
--						"iopsPerGB": "50",
--					},
--					ClaimSize:    "3.5Gi",
--					ExpectedSize: "4Gi", // 4 GiB is minimum for io1
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--						err := checkAWSEBS(volume, "io1", false)
--						framework.ExpectNoError(err, "checkAWSEBS io1")
--					},
--				},
--				{
--					Name:           "sc1 EBS on AWS",
--					CloudProviders: []string{"aws"},
--					Provisioner:    "kubernetes.io/aws-ebs",
--					Parameters: map[string]string{
--						"type": "sc1",
--					},
--					ClaimSize:    "500Gi", // minimum for sc1
--					ExpectedSize: "500Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--						err := checkAWSEBS(volume, "sc1", false)
--						framework.ExpectNoError(err, "checkAWSEBS sc1")
--					},
--				},
--				{
--					Name:           "st1 EBS on AWS",
--					CloudProviders: []string{"aws"},
--					Provisioner:    "kubernetes.io/aws-ebs",
--					Parameters: map[string]string{
--						"type": "st1",
--					},
--					ClaimSize:    "500Gi", // minimum for st1
--					ExpectedSize: "500Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--						err := checkAWSEBS(volume, "st1", false)
--						framework.ExpectNoError(err, "checkAWSEBS st1")
--					},
--				},
--				{
--					Name:           "encrypted EBS on AWS",
--					CloudProviders: []string{"aws"},
--					Provisioner:    "kubernetes.io/aws-ebs",
--					Parameters: map[string]string{
--						"encrypted": "true",
--					},
--					ClaimSize:    "1Gi",
--					ExpectedSize: "1Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--						err := checkAWSEBS(volume, "gp2", true)
--						framework.ExpectNoError(err, "checkAWSEBS gp2 encrypted")
--					},
--				},
--				// OpenStack generic tests (works on all OpenStack deployments)
--				{
--					Name:           "generic Cinder volume on OpenStack",
--					CloudProviders: []string{"openstack"},
--					Provisioner:    "kubernetes.io/cinder",
--					Parameters:     map[string]string{},
--					ClaimSize:      "1.5Gi",
--					ExpectedSize:   "2Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--					},
--				},
--				{
--					Name:           "Cinder volume with empty volume type and zone on OpenStack",
--					CloudProviders: []string{"openstack"},
--					Provisioner:    "kubernetes.io/cinder",
--					Parameters: map[string]string{
--						"type":         "",
--						"availability": "",
--					},
--					ClaimSize:    "1.5Gi",
--					ExpectedSize: "2Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--					},
--				},
--				// vSphere generic test
--				{
--					Name:           "generic vSphere volume",
--					CloudProviders: []string{"vsphere"},
--					Provisioner:    "kubernetes.io/vsphere-volume",
--					Parameters:     map[string]string{},
--					ClaimSize:      "1.5Gi",
--					ExpectedSize:   "1.5Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--					},
--				},
--				// Azure
--				{
--					Name:           "Azure disk volume with empty sku and location",
--					CloudProviders: []string{"azure"},
--					Provisioner:    "kubernetes.io/azure-disk",
--					Parameters:     map[string]string{},
--					ClaimSize:      "1Gi",
--					ExpectedSize:   "1Gi",
--					PvCheck: func(claim *v1.PersistentVolumeClaim) {
--						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--					},
--				},
--			}
--
--			var betaTest *testsuites.StorageClassTest
--			for i, t := range tests {
--				// Beware of clojure, use local variables instead of those from
--				// outer scope
--				test := t
--
--				if !framework.ProviderIs(test.CloudProviders...) {
--					framework.Logf("Skipping %q: cloud providers is not %v", test.Name, test.CloudProviders)
--					continue
--				}
--
--				// Remember the last supported test for subsequent test of beta API
--				betaTest = &test
--
--				ginkgo.By("Testing " + test.Name)
--				suffix := fmt.Sprintf("%d", i)
--				test.Client = c
--				test.Class = newStorageClass(test, ns, suffix)
--				test.Claim = e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
--					ClaimSize:        test.ClaimSize,
--					StorageClassName: &test.Class.Name,
--					VolumeMode:       &test.VolumeMode,
--				}, ns)
--				test.TestDynamicProvisioning()
--			}
--
--			// Run the last test with storage.k8s.io/v1beta1 on pvc
--			if betaTest != nil {
--				ginkgo.By("Testing " + betaTest.Name + " with beta volume provisioning")
--				class := newBetaStorageClass(*betaTest, "beta")
--				// we need to create the class manually, testDynamicProvisioning does not accept beta class
--				class, err := c.StorageV1beta1().StorageClasses().Create(context.TODO(), class, metav1.CreateOptions{})
--				framework.ExpectNoError(err)
--				defer deleteStorageClass(c, class.Name)
--
--				betaTest.Client = c
--				betaTest.Class = nil
--				betaTest.Claim = e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
--					ClaimSize:        betaTest.ClaimSize,
--					StorageClassName: &class.Name,
--					VolumeMode:       &betaTest.VolumeMode,
--				}, ns)
--				betaTest.Claim.Spec.StorageClassName = &(class.Name)
--				(*betaTest).TestDynamicProvisioning()
--			}
--		})
--
--		ginkgo.It("should provision storage with non-default reclaim policy Retain", func() {
--			e2eskipper.SkipUnlessProviderIs("gce", "gke")
--
--			test := testsuites.StorageClassTest{
--				Client:         c,
--				Name:           "HDD PD on GCE/GKE",
--				CloudProviders: []string{"gce", "gke"},
--				Provisioner:    "kubernetes.io/gce-pd",
--				Parameters: map[string]string{
--					"type": "pd-standard",
--				},
--				ClaimSize:    "1Gi",
--				ExpectedSize: "1Gi",
--				PvCheck: func(claim *v1.PersistentVolumeClaim) {
--					volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
--					gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
--
--					err := checkGCEPD(volume, "pd-standard")
--					framework.ExpectNoError(err, "checkGCEPD")
--				},
--			}
--			test.Class = newStorageClass(test, ns, "reclaimpolicy")
--			retain := v1.PersistentVolumeReclaimRetain
--			test.Class.ReclaimPolicy = &retain
--			test.Claim = e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
--				ClaimSize:        test.ClaimSize,
--				StorageClassName: &test.Class.Name,
--				VolumeMode:       &test.VolumeMode,
--			}, ns)
--			pv := test.TestDynamicProvisioning()
--
--			ginkgo.By(fmt.Sprintf("waiting for the provisioned PV %q to enter phase %s", pv.Name, v1.VolumeReleased))
--			framework.ExpectNoError(e2epv.WaitForPersistentVolumePhase(v1.VolumeReleased, c, pv.Name, 1*time.Second, 30*time.Second))
--
--			ginkgo.By(fmt.Sprintf("deleting the storage asset backing the PV %q", pv.Name))
--			framework.ExpectNoError(e2epv.DeletePDWithRetry(pv.Spec.GCEPersistentDisk.PDName))
--
--			ginkgo.By(fmt.Sprintf("deleting the PV %q", pv.Name))
--			framework.ExpectNoError(e2epv.DeletePersistentVolume(c, pv.Name), "Failed to delete PV ", pv.Name)
--			framework.ExpectNoError(e2epv.WaitForPersistentVolumeDeleted(c, pv.Name, 1*time.Second, 30*time.Second))
--		})
--
--		ginkgo.It("should not provision a volume in an unmanaged GCE zone.", func() {
--			e2eskipper.SkipUnlessProviderIs("gce", "gke")
--			var suffix string = "unmananged"
--
--			ginkgo.By("Discovering an unmanaged zone")
--			allZones := sets.NewString() // all zones in the project
--
--			gceCloud, err := gce.GetGCECloud()
--			framework.ExpectNoError(err)
--
--			// Get all k8s managed zones (same as zones with nodes in them for test)
--			managedZones, err := gceCloud.GetAllZonesFromCloudProvider()
--			framework.ExpectNoError(err)
--
--			// Get a list of all zones in the project
--			zones, err := gceCloud.ComputeServices().GA.Zones.List(framework.TestContext.CloudConfig.ProjectID).Do()
--			framework.ExpectNoError(err)
--			for _, z := range zones.Items {
--				allZones.Insert(z.Name)
--			}
--
--			// Get the subset of zones not managed by k8s
--			var unmanagedZone string
--			var popped bool
--			unmanagedZones := allZones.Difference(managedZones)
--			// And select one of them at random.
--			if unmanagedZone, popped = unmanagedZones.PopAny(); !popped {
--				e2eskipper.Skipf("No unmanaged zones found.")
--			}
--
--			ginkgo.By("Creating a StorageClass for the unmanaged zone")
--			test := testsuites.StorageClassTest{
--				Name:        "unmanaged_zone",
--				Provisioner: "kubernetes.io/gce-pd",
--				Parameters:  map[string]string{"zone": unmanagedZone},
--				ClaimSize:   "1Gi",
--			}
--			sc := newStorageClass(test, ns, suffix)
--			sc, err = c.StorageV1().StorageClasses().Create(context.TODO(), sc, metav1.CreateOptions{})
--			framework.ExpectNoError(err)
--			defer deleteStorageClass(c, sc.Name)
--
--			ginkgo.By("Creating a claim and expecting it to timeout")
--			pvc := e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
--				ClaimSize:        test.ClaimSize,
--				StorageClassName: &sc.Name,
--				VolumeMode:       &test.VolumeMode,
--			}, ns)
--			pvc, err = c.CoreV1().PersistentVolumeClaims(ns).Create(context.TODO(), pvc, metav1.CreateOptions{})
--			framework.ExpectNoError(err)
--			defer func() {
--				framework.ExpectNoError(e2epv.DeletePersistentVolumeClaim(c, pvc.Name, ns), "Failed to delete PVC ", pvc.Name)
--			}()
--
--			// The claim should timeout phase:Pending
--			err = e2epv.WaitForPersistentVolumeClaimPhase(v1.ClaimBound, c, ns, pvc.Name, 2*time.Second, framework.ClaimProvisionShortTimeout)
--			framework.ExpectError(err)
--			framework.Logf(err.Error())
--		})
--
--		ginkgo.It("should test that deleting a claim before the volume is provisioned deletes the volume.", func() {
--			// This case tests for the regressions of a bug fixed by PR #21268
--			// REGRESSION: Deleting the PVC before the PV is provisioned can result in the PV
--			// not being deleted.
--			// NOTE:  Polls until no PVs are detected, times out at 5 minutes.
--
--			e2eskipper.SkipUnlessProviderIs("openstack", "gce", "aws", "gke", "vsphere", "azure")
--
--			const raceAttempts int = 100
--			var residualPVs []*v1.PersistentVolume
--			ginkgo.By(fmt.Sprintf("Creating and deleting PersistentVolumeClaims %d times", raceAttempts))
--			test := testsuites.StorageClassTest{
--				Name:        "deletion race",
--				Provisioner: "", // Use a native one based on current cloud provider
--				ClaimSize:   "1Gi",
--			}
--
--			class := newStorageClass(test, ns, "race")
--			class, err := c.StorageV1().StorageClasses().Create(context.TODO(), class, metav1.CreateOptions{})
--			framework.ExpectNoError(err)
--			defer deleteStorageClass(c, class.Name)
--
--			// To increase chance of detection, attempt multiple iterations
--			for i := 0; i < raceAttempts; i++ {
--				prefix := fmt.Sprintf("race-%d", i)
--				claim := e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
--					NamePrefix:       prefix,
--					ClaimSize:        test.ClaimSize,
--					StorageClassName: &class.Name,
--					VolumeMode:       &test.VolumeMode,
--				}, ns)
--				tmpClaim, err := e2epv.CreatePVC(c, ns, claim)
--				framework.ExpectNoError(err)
--				framework.ExpectNoError(e2epv.DeletePersistentVolumeClaim(c, tmpClaim.Name, ns))
--			}
--
--			ginkgo.By(fmt.Sprintf("Checking for residual PersistentVolumes associated with StorageClass %s", class.Name))
--			residualPVs, err = waitForProvisionedVolumesDeleted(c, class.Name)
--			// Cleanup the test resources before breaking
--			defer deleteProvisionedVolumesAndDisks(c, residualPVs)
--			framework.ExpectNoError(err, "PersistentVolumes were not deleted as expected. %d remain", len(residualPVs))
--
--			framework.Logf("0 PersistentVolumes remain.")
--		})
--
--		ginkgo.It("deletion should be idempotent", func() {
--			// This test ensures that deletion of a volume is idempotent.
--			// It creates a PV with Retain policy, deletes underlying AWS / GCE
--			// volume and changes the reclaim policy to Delete.
--			// PV controller should delete the PV even though the underlying volume
--			// is already deleted.
--			e2eskipper.SkipUnlessProviderIs("gce", "gke", "aws")
--			ginkgo.By("creating PD")
--			diskName, err := e2epv.CreatePDWithRetry()
--			framework.ExpectNoError(err)
--
--			ginkgo.By("creating PV")
--			pv := e2epv.MakePersistentVolume(e2epv.PersistentVolumeConfig{
--				NamePrefix: "volume-idempotent-delete-",
--				// Use Retain to keep the PV, the test will change it to Delete
--				// when the time comes.
--				ReclaimPolicy: v1.PersistentVolumeReclaimRetain,
--				AccessModes: []v1.PersistentVolumeAccessMode{
--					v1.ReadWriteOnce,
--				},
--				Capacity: "1Gi",
--				// PV is bound to non-existing PVC, so it's reclaim policy is
--				// executed immediately
--				Prebind: &v1.PersistentVolumeClaim{
--					ObjectMeta: metav1.ObjectMeta{
--						Name:      "dummy-claim-name",
--						Namespace: ns,
--						UID:       types.UID("01234567890"),
--					},
--				},
--			})
--			switch framework.TestContext.Provider {
--			case "aws":
--				pv.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
--					AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
--						VolumeID: diskName,
--					},
--				}
--			case "gce", "gke":
--				pv.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
--					GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
--						PDName: diskName,
--					},
--				}
--			}
--			pv, err = c.CoreV1().PersistentVolumes().Create(context.TODO(), pv, metav1.CreateOptions{})
--			framework.ExpectNoError(err)
--
--			ginkgo.By("waiting for the PV to get Released")
--			err = e2epv.WaitForPersistentVolumePhase(v1.VolumeReleased, c, pv.Name, 2*time.Second, e2epv.PVReclaimingTimeout)
--			framework.ExpectNoError(err)
--
--			ginkgo.By("deleting the PD")
--			err = e2epv.DeletePVSource(&pv.Spec.PersistentVolumeSource)
--			framework.ExpectNoError(err)
--
--			ginkgo.By("changing the PV reclaim policy")
--			pv, err = c.CoreV1().PersistentVolumes().Get(context.TODO(), pv.Name, metav1.GetOptions{})
--			framework.ExpectNoError(err)
--			pv.Spec.PersistentVolumeReclaimPolicy = v1.PersistentVolumeReclaimDelete
--			pv, err = c.CoreV1().PersistentVolumes().Update(context.TODO(), pv, metav1.UpdateOptions{})
--			framework.ExpectNoError(err)
--
--			ginkgo.By("waiting for the PV to get deleted")
--			err = e2epv.WaitForPersistentVolumeDeleted(c, pv.Name, 5*time.Second, e2epv.PVDeletingTimeout)
--			framework.ExpectNoError(err)
--		})
--	})
--
- 	ginkgo.Describe("DynamicProvisioner External", func() {
- 		ginkgo.It("should let an external dynamic provisioner create and delete persistent volumes [Slow]", func() {
- 			// external dynamic provisioner pods need additional permissions provided by the
-diff --git a/test/e2e/storage/volume_provisioning_providers.go b/test/e2e/storage/volume_provisioning_providers.go
-new file mode 100644
-index 00000000000..932c644af7a
---- /dev/null
-+++ b/test/e2e/storage/volume_provisioning_providers.go
-@@ -0,0 +1,577 @@
-+// +build !providerless
-+
-+/*
-+Copyright 2016 The Kubernetes Authors.
-+
-+Licensed under the Apache License, Version 2.0 (the "License");
-+you may not use this file except in compliance with the License.
-+You may obtain a copy of the License at
-+
-+    http://www.apache.org/licenses/LICENSE-2.0
-+
-+Unless required by applicable law or agreed to in writing, software
-+distributed under the License is distributed on an "AS IS" BASIS,
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+See the License for the specific language governing permissions and
-+limitations under the License.
-+*/
-+
-+package storage
-+
-+import (
-+	"context"
-+	"fmt"
-+	"strings"
-+	"time"
-+
-+	"github.com/aws/aws-sdk-go/aws"
-+	"github.com/aws/aws-sdk-go/aws/session"
-+	"github.com/aws/aws-sdk-go/service/ec2"
-+	"github.com/onsi/ginkgo"
-+	"github.com/onsi/gomega"
-+
-+	v1 "k8s.io/api/core/v1"
-+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-+	"k8s.io/apimachinery/pkg/types"
-+	"k8s.io/apimachinery/pkg/util/sets"
-+	clientset "k8s.io/client-go/kubernetes"
-+	"k8s.io/kubernetes/test/e2e/framework"
-+	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
-+	"k8s.io/kubernetes/test/e2e/framework/providers/gce"
-+	e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
-+	e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
-+	"k8s.io/kubernetes/test/e2e/storage/testsuites"
-+	"k8s.io/kubernetes/test/e2e/storage/utils"
-+)
-+
-+// checkAWSEBS checks properties of an AWS EBS. Test framework does not
-+// instantiate full AWS provider, therefore we need use ec2 API directly.
-+func checkAWSEBS(volume *v1.PersistentVolume, volumeType string, encrypted bool) error {
-+	diskName := volume.Spec.AWSElasticBlockStore.VolumeID
-+
-+	var client *ec2.EC2
-+
-+	tokens := strings.Split(diskName, "/")
-+	volumeID := tokens[len(tokens)-1]
-+
-+	zone := framework.TestContext.CloudConfig.Zone
-+
-+	awsSession, err := session.NewSession()
-+	if err != nil {
-+		return fmt.Errorf("error creating session: %v", err)
-+	}
-+
-+	if len(zone) > 0 {
-+		region := zone[:len(zone)-1]
-+		cfg := aws.Config{Region: &region}
-+		framework.Logf("using region %s", region)
-+		client = ec2.New(awsSession, &cfg)
-+	} else {
-+		framework.Logf("no region configured")
-+		client = ec2.New(awsSession)
-+	}
-+
-+	request := &ec2.DescribeVolumesInput{
-+		VolumeIds: []*string{&volumeID},
-+	}
-+	info, err := client.DescribeVolumes(request)
-+	if err != nil {
-+		return fmt.Errorf("error querying ec2 for volume %q: %v", volumeID, err)
-+	}
-+	if len(info.Volumes) == 0 {
-+		return fmt.Errorf("no volumes found for volume %q", volumeID)
-+	}
-+	if len(info.Volumes) > 1 {
-+		return fmt.Errorf("multiple volumes found for volume %q", volumeID)
-+	}
-+
-+	awsVolume := info.Volumes[0]
-+	if awsVolume.VolumeType == nil {
-+		return fmt.Errorf("expected volume type %q, got nil", volumeType)
-+	}
-+	if *awsVolume.VolumeType != volumeType {
-+		return fmt.Errorf("expected volume type %q, got %q", volumeType, *awsVolume.VolumeType)
-+	}
-+	if encrypted && awsVolume.Encrypted == nil {
-+		return fmt.Errorf("expected encrypted volume, got no encryption")
-+	}
-+	if encrypted && !*awsVolume.Encrypted {
-+		return fmt.Errorf("expected encrypted volume, got %v", *awsVolume.Encrypted)
-+	}
-+	return nil
-+}
-+
-+func checkGCEPD(volume *v1.PersistentVolume, volumeType string) error {
-+	cloud, err := gce.GetGCECloud()
-+	if err != nil {
-+		return err
-+	}
-+	diskName := volume.Spec.GCEPersistentDisk.PDName
-+	disk, err := cloud.GetDiskByNameUnknownZone(diskName)
-+	if err != nil {
-+		return err
-+	}
-+
-+	if !strings.HasSuffix(disk.Type, volumeType) {
-+		return fmt.Errorf("unexpected disk type %q, expected suffix %q", disk.Type, volumeType)
-+	}
-+	return nil
-+}
-+
-+var _ = utils.SIGDescribe("Dynamic Provisioning with cloud providers", func() {
-+	f := framework.NewDefaultFramework("volume-provisioning")
-+
-+	// filled in BeforeEach
-+	var c clientset.Interface
-+	var ns string
-+
-+	ginkgo.BeforeEach(func() {
-+		c = f.ClientSet
-+		ns = f.Namespace.Name
-+	})
-+
-+	ginkgo.Describe("DynamicProvisioner [Slow]", func() {
-+		ginkgo.It("should provision storage with different parameters", func() {
-+
-+			// This test checks that dynamic provisioning can provision a volume
-+			// that can be used to persist data among pods.
-+			tests := []testsuites.StorageClassTest{
-+				// GCE/GKE
-+				{
-+					Name:           "SSD PD on GCE/GKE",
-+					CloudProviders: []string{"gce", "gke"},
-+					Provisioner:    "kubernetes.io/gce-pd",
-+					Parameters: map[string]string{
-+						"type": "pd-ssd",
-+						"zone": getRandomClusterZone(c),
-+					},
-+					ClaimSize:    "1.5Gi",
-+					ExpectedSize: "2Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+						err := checkGCEPD(volume, "pd-ssd")
-+						framework.ExpectNoError(err, "checkGCEPD pd-ssd")
-+					},
-+				},
-+				{
-+					Name:           "HDD PD on GCE/GKE",
-+					CloudProviders: []string{"gce", "gke"},
-+					Provisioner:    "kubernetes.io/gce-pd",
-+					Parameters: map[string]string{
-+						"type": "pd-standard",
-+					},
-+					ClaimSize:    "1.5Gi",
-+					ExpectedSize: "2Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+						err := checkGCEPD(volume, "pd-standard")
-+						framework.ExpectNoError(err, "checkGCEPD pd-standard")
-+					},
-+				},
-+				// AWS
-+				{
-+					Name:           "gp2 EBS on AWS",
-+					CloudProviders: []string{"aws"},
-+					Provisioner:    "kubernetes.io/aws-ebs",
-+					Parameters: map[string]string{
-+						"type": "gp2",
-+						"zone": getRandomClusterZone(c),
-+					},
-+					ClaimSize:    "1.5Gi",
-+					ExpectedSize: "2Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+						err := checkAWSEBS(volume, "gp2", false)
-+						framework.ExpectNoError(err, "checkAWSEBS gp2")
-+					},
-+				},
-+				{
-+					Name:           "io1 EBS on AWS",
-+					CloudProviders: []string{"aws"},
-+					Provisioner:    "kubernetes.io/aws-ebs",
-+					Parameters: map[string]string{
-+						"type":      "io1",
-+						"iopsPerGB": "50",
-+					},
-+					ClaimSize:    "3.5Gi",
-+					ExpectedSize: "4Gi", // 4 GiB is minimum for io1
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+						err := checkAWSEBS(volume, "io1", false)
-+						framework.ExpectNoError(err, "checkAWSEBS io1")
-+					},
-+				},
-+				{
-+					Name:           "sc1 EBS on AWS",
-+					CloudProviders: []string{"aws"},
-+					Provisioner:    "kubernetes.io/aws-ebs",
-+					Parameters: map[string]string{
-+						"type": "sc1",
-+					},
-+					ClaimSize:    "500Gi", // minimum for sc1
-+					ExpectedSize: "500Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+						err := checkAWSEBS(volume, "sc1", false)
-+						framework.ExpectNoError(err, "checkAWSEBS sc1")
-+					},
-+				},
-+				{
-+					Name:           "st1 EBS on AWS",
-+					CloudProviders: []string{"aws"},
-+					Provisioner:    "kubernetes.io/aws-ebs",
-+					Parameters: map[string]string{
-+						"type": "st1",
-+					},
-+					ClaimSize:    "500Gi", // minimum for st1
-+					ExpectedSize: "500Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+						err := checkAWSEBS(volume, "st1", false)
-+						framework.ExpectNoError(err, "checkAWSEBS st1")
-+					},
-+				},
-+				{
-+					Name:           "encrypted EBS on AWS",
-+					CloudProviders: []string{"aws"},
-+					Provisioner:    "kubernetes.io/aws-ebs",
-+					Parameters: map[string]string{
-+						"encrypted": "true",
-+					},
-+					ClaimSize:    "1Gi",
-+					ExpectedSize: "1Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+						gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+						err := checkAWSEBS(volume, "gp2", true)
-+						framework.ExpectNoError(err, "checkAWSEBS gp2 encrypted")
-+					},
-+				},
-+				// OpenStack generic tests (works on all OpenStack deployments)
-+				{
-+					Name:           "generic Cinder volume on OpenStack",
-+					CloudProviders: []string{"openstack"},
-+					Provisioner:    "kubernetes.io/cinder",
-+					Parameters:     map[string]string{},
-+					ClaimSize:      "1.5Gi",
-+					ExpectedSize:   "2Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+					},
-+				},
-+				{
-+					Name:           "Cinder volume with empty volume type and zone on OpenStack",
-+					CloudProviders: []string{"openstack"},
-+					Provisioner:    "kubernetes.io/cinder",
-+					Parameters: map[string]string{
-+						"type":         "",
-+						"availability": "",
-+					},
-+					ClaimSize:    "1.5Gi",
-+					ExpectedSize: "2Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+					},
-+				},
-+				// vSphere generic test
-+				{
-+					Name:           "generic vSphere volume",
-+					CloudProviders: []string{"vsphere"},
-+					Provisioner:    "kubernetes.io/vsphere-volume",
-+					Parameters:     map[string]string{},
-+					ClaimSize:      "1.5Gi",
-+					ExpectedSize:   "1.5Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+					},
-+				},
-+				// Azure
-+				{
-+					Name:           "Azure disk volume with empty sku and location",
-+					CloudProviders: []string{"azure"},
-+					Provisioner:    "kubernetes.io/azure-disk",
-+					Parameters:     map[string]string{},
-+					ClaimSize:      "1Gi",
-+					ExpectedSize:   "1Gi",
-+					PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+						testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+					},
-+				},
-+			}
-+
-+			var betaTest *testsuites.StorageClassTest
-+			for i, t := range tests {
-+				// Beware of clojure, use local variables instead of those from
-+				// outer scope
-+				test := t
-+
-+				if !framework.ProviderIs(test.CloudProviders...) {
-+					framework.Logf("Skipping %q: cloud providers is not %v", test.Name, test.CloudProviders)
-+					continue
-+				}
-+
-+				// Remember the last supported test for subsequent test of beta API
-+				betaTest = &test
-+
-+				ginkgo.By("Testing " + test.Name)
-+				suffix := fmt.Sprintf("%d", i)
-+				test.Client = c
-+				test.Class = newStorageClass(test, ns, suffix)
-+				test.Claim = e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
-+					ClaimSize:        test.ClaimSize,
-+					StorageClassName: &test.Class.Name,
-+					VolumeMode:       &test.VolumeMode,
-+				}, ns)
-+				test.TestDynamicProvisioning()
-+			}
-+
-+			// Run the last test with storage.k8s.io/v1beta1 on pvc
-+			if betaTest != nil {
-+				ginkgo.By("Testing " + betaTest.Name + " with beta volume provisioning")
-+				class := newBetaStorageClass(*betaTest, "beta")
-+				// we need to create the class manually, testDynamicProvisioning does not accept beta class
-+				class, err := c.StorageV1beta1().StorageClasses().Create(context.TODO(), class, metav1.CreateOptions{})
-+				framework.ExpectNoError(err)
-+				defer deleteStorageClass(c, class.Name)
-+
-+				betaTest.Client = c
-+				betaTest.Class = nil
-+				betaTest.Claim = e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
-+					ClaimSize:        betaTest.ClaimSize,
-+					StorageClassName: &class.Name,
-+					VolumeMode:       &betaTest.VolumeMode,
-+				}, ns)
-+				betaTest.Claim.Spec.StorageClassName = &(class.Name)
-+				(*betaTest).TestDynamicProvisioning()
-+			}
-+		})
-+
-+		ginkgo.It("should provision storage with non-default reclaim policy Retain", func() {
-+			e2eskipper.SkipUnlessProviderIs("gce", "gke")
-+
-+			test := testsuites.StorageClassTest{
-+				Client:         c,
-+				Name:           "HDD PD on GCE/GKE",
-+				CloudProviders: []string{"gce", "gke"},
-+				Provisioner:    "kubernetes.io/gce-pd",
-+				Parameters: map[string]string{
-+					"type": "pd-standard",
-+				},
-+				ClaimSize:    "1Gi",
-+				ExpectedSize: "1Gi",
-+				PvCheck: func(claim *v1.PersistentVolumeClaim) {
-+					volume := testsuites.PVWriteReadSingleNodeCheck(c, claim, e2epod.NodeSelection{})
-+					gomega.Expect(volume).NotTo(gomega.BeNil(), "get bound PV")
-+
-+					err := checkGCEPD(volume, "pd-standard")
-+					framework.ExpectNoError(err, "checkGCEPD")
-+				},
-+			}
-+			test.Class = newStorageClass(test, ns, "reclaimpolicy")
-+			retain := v1.PersistentVolumeReclaimRetain
-+			test.Class.ReclaimPolicy = &retain
-+			test.Claim = e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
-+				ClaimSize:        test.ClaimSize,
-+				StorageClassName: &test.Class.Name,
-+				VolumeMode:       &test.VolumeMode,
-+			}, ns)
-+			pv := test.TestDynamicProvisioning()
-+
-+			ginkgo.By(fmt.Sprintf("waiting for the provisioned PV %q to enter phase %s", pv.Name, v1.VolumeReleased))
-+			framework.ExpectNoError(e2epv.WaitForPersistentVolumePhase(v1.VolumeReleased, c, pv.Name, 1*time.Second, 30*time.Second))
-+
-+			ginkgo.By(fmt.Sprintf("deleting the storage asset backing the PV %q", pv.Name))
-+			framework.ExpectNoError(e2epv.DeletePDWithRetry(pv.Spec.GCEPersistentDisk.PDName))
-+
-+			ginkgo.By(fmt.Sprintf("deleting the PV %q", pv.Name))
-+			framework.ExpectNoError(e2epv.DeletePersistentVolume(c, pv.Name), "Failed to delete PV ", pv.Name)
-+			framework.ExpectNoError(e2epv.WaitForPersistentVolumeDeleted(c, pv.Name, 1*time.Second, 30*time.Second))
-+		})
-+
-+		ginkgo.It("should not provision a volume in an unmanaged GCE zone.", func() {
-+			e2eskipper.SkipUnlessProviderIs("gce", "gke")
-+			var suffix string = "unmananged"
-+
-+			ginkgo.By("Discovering an unmanaged zone")
-+			allZones := sets.NewString() // all zones in the project
-+
-+			gceCloud, err := gce.GetGCECloud()
-+			framework.ExpectNoError(err)
-+
-+			// Get all k8s managed zones (same as zones with nodes in them for test)
-+			managedZones, err := gceCloud.GetAllZonesFromCloudProvider()
-+			framework.ExpectNoError(err)
-+
-+			// Get a list of all zones in the project
-+			zones, err := gceCloud.ComputeServices().GA.Zones.List(framework.TestContext.CloudConfig.ProjectID).Do()
-+			framework.ExpectNoError(err)
-+			for _, z := range zones.Items {
-+				allZones.Insert(z.Name)
-+			}
-+
-+			// Get the subset of zones not managed by k8s
-+			var unmanagedZone string
-+			var popped bool
-+			unmanagedZones := allZones.Difference(managedZones)
-+			// And select one of them at random.
-+			if unmanagedZone, popped = unmanagedZones.PopAny(); !popped {
-+				e2eskipper.Skipf("No unmanaged zones found.")
-+			}
-+
-+			ginkgo.By("Creating a StorageClass for the unmanaged zone")
-+			test := testsuites.StorageClassTest{
-+				Name:        "unmanaged_zone",
-+				Provisioner: "kubernetes.io/gce-pd",
-+				Parameters:  map[string]string{"zone": unmanagedZone},
-+				ClaimSize:   "1Gi",
-+			}
-+			sc := newStorageClass(test, ns, suffix)
-+			sc, err = c.StorageV1().StorageClasses().Create(context.TODO(), sc, metav1.CreateOptions{})
-+			framework.ExpectNoError(err)
-+			defer deleteStorageClass(c, sc.Name)
-+
-+			ginkgo.By("Creating a claim and expecting it to timeout")
-+			pvc := e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
-+				ClaimSize:        test.ClaimSize,
-+				StorageClassName: &sc.Name,
-+				VolumeMode:       &test.VolumeMode,
-+			}, ns)
-+			pvc, err = c.CoreV1().PersistentVolumeClaims(ns).Create(context.TODO(), pvc, metav1.CreateOptions{})
-+			framework.ExpectNoError(err)
-+			defer func() {
-+				framework.ExpectNoError(e2epv.DeletePersistentVolumeClaim(c, pvc.Name, ns), "Failed to delete PVC ", pvc.Name)
-+			}()
-+
-+			// The claim should timeout phase:Pending
-+			err = e2epv.WaitForPersistentVolumeClaimPhase(v1.ClaimBound, c, ns, pvc.Name, 2*time.Second, framework.ClaimProvisionShortTimeout)
-+			framework.ExpectError(err)
-+			framework.Logf(err.Error())
-+		})
-+
-+		ginkgo.It("should test that deleting a claim before the volume is provisioned deletes the volume.", func() {
-+			// This case tests for the regressions of a bug fixed by PR #21268
-+			// REGRESSION: Deleting the PVC before the PV is provisioned can result in the PV
-+			// not being deleted.
-+			// NOTE:  Polls until no PVs are detected, times out at 5 minutes.
-+
-+			e2eskipper.SkipUnlessProviderIs("openstack", "gce", "aws", "gke", "vsphere", "azure")
-+
-+			const raceAttempts int = 100
-+			var residualPVs []*v1.PersistentVolume
-+			ginkgo.By(fmt.Sprintf("Creating and deleting PersistentVolumeClaims %d times", raceAttempts))
-+			test := testsuites.StorageClassTest{
-+				Name:        "deletion race",
-+				Provisioner: "", // Use a native one based on current cloud provider
-+				ClaimSize:   "1Gi",
-+			}
-+
-+			class := newStorageClass(test, ns, "race")
-+			class, err := c.StorageV1().StorageClasses().Create(context.TODO(), class, metav1.CreateOptions{})
-+			framework.ExpectNoError(err)
-+			defer deleteStorageClass(c, class.Name)
-+
-+			// To increase chance of detection, attempt multiple iterations
-+			for i := 0; i < raceAttempts; i++ {
-+				prefix := fmt.Sprintf("race-%d", i)
-+				claim := e2epv.MakePersistentVolumeClaim(e2epv.PersistentVolumeClaimConfig{
-+					NamePrefix:       prefix,
-+					ClaimSize:        test.ClaimSize,
-+					StorageClassName: &class.Name,
-+					VolumeMode:       &test.VolumeMode,
-+				}, ns)
-+				tmpClaim, err := e2epv.CreatePVC(c, ns, claim)
-+				framework.ExpectNoError(err)
-+				framework.ExpectNoError(e2epv.DeletePersistentVolumeClaim(c, tmpClaim.Name, ns))
-+			}
-+
-+			ginkgo.By(fmt.Sprintf("Checking for residual PersistentVolumes associated with StorageClass %s", class.Name))
-+			residualPVs, err = waitForProvisionedVolumesDeleted(c, class.Name)
-+			// Cleanup the test resources before breaking
-+			defer deleteProvisionedVolumesAndDisks(c, residualPVs)
-+			framework.ExpectNoError(err, "PersistentVolumes were not deleted as expected. %d remain", len(residualPVs))
-+
-+			framework.Logf("0 PersistentVolumes remain.")
-+		})
-+
-+		ginkgo.It("deletion should be idempotent", func() {
-+			// This test ensures that deletion of a volume is idempotent.
-+			// It creates a PV with Retain policy, deletes underlying AWS / GCE
-+			// volume and changes the reclaim policy to Delete.
-+			// PV controller should delete the PV even though the underlying volume
-+			// is already deleted.
-+			e2eskipper.SkipUnlessProviderIs("gce", "gke", "aws")
-+			ginkgo.By("creating PD")
-+			diskName, err := e2epv.CreatePDWithRetry()
-+			framework.ExpectNoError(err)
-+
-+			ginkgo.By("creating PV")
-+			pv := e2epv.MakePersistentVolume(e2epv.PersistentVolumeConfig{
-+				NamePrefix: "volume-idempotent-delete-",
-+				// Use Retain to keep the PV, the test will change it to Delete
-+				// when the time comes.
-+				ReclaimPolicy: v1.PersistentVolumeReclaimRetain,
-+				AccessModes: []v1.PersistentVolumeAccessMode{
-+					v1.ReadWriteOnce,
-+				},
-+				Capacity: "1Gi",
-+				// PV is bound to non-existing PVC, so it's reclaim policy is
-+				// executed immediately
-+				Prebind: &v1.PersistentVolumeClaim{
-+					ObjectMeta: metav1.ObjectMeta{
-+						Name:      "dummy-claim-name",
-+						Namespace: ns,
-+						UID:       types.UID("01234567890"),
-+					},
-+				},
-+			})
-+			switch framework.TestContext.Provider {
-+			case "aws":
-+				pv.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
-+					AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
-+						VolumeID: diskName,
-+					},
-+				}
-+			case "gce", "gke":
-+				pv.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
-+					GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
-+						PDName: diskName,
-+					},
-+				}
-+			}
-+			pv, err = c.CoreV1().PersistentVolumes().Create(context.TODO(), pv, metav1.CreateOptions{})
-+			framework.ExpectNoError(err)
-+
-+			ginkgo.By("waiting for the PV to get Released")
-+			err = e2epv.WaitForPersistentVolumePhase(v1.VolumeReleased, c, pv.Name, 2*time.Second, e2epv.PVReclaimingTimeout)
-+			framework.ExpectNoError(err)
-+
-+			ginkgo.By("deleting the PD")
-+			err = e2epv.DeletePVSource(&pv.Spec.PersistentVolumeSource)
-+			framework.ExpectNoError(err)
-+
-+			ginkgo.By("changing the PV reclaim policy")
-+			pv, err = c.CoreV1().PersistentVolumes().Get(context.TODO(), pv.Name, metav1.GetOptions{})
-+			framework.ExpectNoError(err)
-+			pv.Spec.PersistentVolumeReclaimPolicy = v1.PersistentVolumeReclaimDelete
-+			pv, err = c.CoreV1().PersistentVolumes().Update(context.TODO(), pv, metav1.UpdateOptions{})
-+			framework.ExpectNoError(err)
-+
-+			ginkgo.By("waiting for the PV to get deleted")
-+			err = e2epv.WaitForPersistentVolumeDeleted(c, pv.Name, 5*time.Second, e2epv.PVDeletingTimeout)
-+			framework.ExpectNoError(err)
-+		})
-+	})
-+})
-diff --git a/test/e2e/upgrades/nvidia-gpu.go b/test/e2e/upgrades/nvidia-gpu.go
-index cf3b8c0cda3..30515197ef7 100644
---- a/test/e2e/upgrades/nvidia-gpu.go
-+++ b/test/e2e/upgrades/nvidia-gpu.go
-@@ -1,3 +1,5 @@
-+// +build !providerless
-+
- /*
- Copyright 2018 The Kubernetes Authors.
- 
--- 
-2.26.2
-
diff --git a/third_party/go/patches/k8s-fix-paths.patch b/third_party/go/patches/k8s-fix-paths.patch
deleted file mode 100644
index ba39a43..0000000
--- a/third_party/go/patches/k8s-fix-paths.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From db9ab831cd17f9be540917a77bbb3e0551f4fb4f Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@brun.one>
-Date: Mon, 25 Jan 2021 15:08:20 +0100
-Subject: [PATCH] Make DeviceManager socket relative to RootDir
-
----
- pkg/kubelet/cm/container_manager_linux.go | 2 +-
- pkg/kubelet/cm/devicemanager/manager.go   | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go
-index 57110ed7745..15cf010074e 100644
---- a/pkg/kubelet/cm/container_manager_linux.go
-+++ b/pkg/kubelet/cm/container_manager_linux.go
-@@ -315,7 +315,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I
- 
- 	klog.Infof("Creating device plugin manager: %t", devicePluginEnabled)
- 	if devicePluginEnabled {
--		cm.deviceManager, err = devicemanager.NewManagerImpl(numaNodeInfo, cm.topologyManager)
-+		cm.deviceManager, err = devicemanager.NewManagerImpl(numaNodeInfo, cm.topologyManager, nodeConfig.KubeletRootDir)
- 		cm.topologyManager.AddHintProvider(cm.deviceManager)
- 	} else {
- 		cm.deviceManager, err = devicemanager.NewManagerStub()
-diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go
-index 5d1925f9458..bfff3c50fcc 100644
---- a/pkg/kubelet/cm/devicemanager/manager.go
-+++ b/pkg/kubelet/cm/devicemanager/manager.go
-@@ -124,8 +124,8 @@ func (s *sourcesReadyStub) AddSource(source string) {}
- func (s *sourcesReadyStub) AllReady() bool          { return true }
- 
- // NewManagerImpl creates a new manager.
--func NewManagerImpl(numaNodeInfo cputopology.NUMANodeInfo, topologyAffinityStore topologymanager.Store) (*ManagerImpl, error) {
--	return newManagerImpl(pluginapi.KubeletSocket, numaNodeInfo, topologyAffinityStore)
-+func NewManagerImpl(numaNodeInfo cputopology.NUMANodeInfo, topologyAffinityStore topologymanager.Store, kubeletRootDir string) (*ManagerImpl, error) {
-+	return newManagerImpl(filepath.Join(kubeletRootDir, "device-plugins/kubelet.sock"), numaNodeInfo, topologyAffinityStore)
- }
- 
- func newManagerImpl(socketPath string, numaNodeInfo cputopology.NUMANodeInfo, topologyAffinityStore topologymanager.Store) (*ManagerImpl, error) {
--- 
-2.25.1
-
diff --git a/third_party/go/patches/k8s-infra-bzl4-compat.patch b/third_party/go/patches/k8s-infra-bzl4-compat.patch
deleted file mode 100644
index 4be0fe8..0000000
--- a/third_party/go/patches/k8s-infra-bzl4-compat.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 6313aef65ed37aa971737058af391f5be1ae976c Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@nexantic.com>
-Date: Wed, 3 Feb 2021 18:11:03 +0100
-Subject: [PATCH] Don't use run_shell with list as cmd
-
-Going upstream at https://github.com/kubernetes/repo-infra/pull/225
----
- defs/go.bzl | 26 ++++++++++++++------------
- 1 file changed, 14 insertions(+), 12 deletions(-)
-
-diff --git a/defs/go.bzl b/defs/go.bzl
-index 21cffdd..f4617e1 100644
---- a/defs/go.bzl
-+++ b/defs/go.bzl
-@@ -63,16 +63,7 @@ def _go_genrule_impl(ctx):
- 
-     srcs = [src for srcs in ctx.attr.srcs for src in srcs.files.to_list()]
- 
--    deps = depset(
--        gopath_files + srcs,
--        transitive =
--            # tools
--            [dep.files for dep in ctx.attr.tools] +
--            # go toolchain
--            [depset(go.sdk.libs + go.sdk.srcs + go.sdk.tools + [go.sdk.go])],
--    )
--
--    _, cmd, _ = ctx.resolve_command(
-+    inputs, cmd, input_manifests = ctx.resolve_command(
-         command = ctx.attr.cmd,
-         attribute = "cmd",
-         expand_locations = True,
-@@ -83,6 +74,15 @@ def _go_genrule_impl(ctx):
-         tools = ctx.attr.tools,
-     )
- 
-+    deps = depset(
-+        gopath_files + srcs + inputs,
-+        transitive =
-+            # tools
-+            [dep.files for dep in ctx.attr.tools] +
-+            # go toolchain
-+            [depset(go.sdk.libs + go.sdk.srcs + go.sdk.tools + [go.sdk.go])],
-+    )
-+
-     env = dict()
-     env.update(ctx.configuration.default_shell_env)
-     env.update(go.env)
-@@ -92,11 +92,13 @@ def _go_genrule_impl(ctx):
-         "GOROOT": paths.dirname(go.sdk.root_file.path),
-     })
- 
--    ctx.actions.run_shell(
-+    ctx.actions.run(
-         inputs = deps,
-         outputs = ctx.outputs.outs,
-         env = env,
--        command = cmd,
-+        executable = cmd[0],
-+        arguments = cmd[1:],
-+        input_manifests = input_manifests,
-         progress_message = "%s %s" % (ctx.attr.message, ctx),
-         mnemonic = "GoGenrule",
-     )
--- 
-2.25.1
-
diff --git a/third_party/go/patches/k8s-infra-fix-go116.patch b/third_party/go/patches/k8s-infra-fix-go116.patch
deleted file mode 100644
index bf35938..0000000
--- a/third_party/go/patches/k8s-infra-fix-go116.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 5cf776eb8f872f78cf7325c39fbfe1777f702407 Mon Sep 17 00:00:00 2001
-From: Mike Danese <mikedanese@google.com>
-Date: Fri, 26 Feb 2021 13:39:16 -0800
-Subject: [PATCH] fix go_genrule for 1.16
-
----
- defs/go.bzl | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/defs/go.bzl b/defs/go.bzl
-index f4617e1..8873253 100644
---- a/defs/go.bzl
-+++ b/defs/go.bzl
-@@ -90,6 +90,9 @@ def _go_genrule_impl(ctx):
-         "PATH": ctx.configuration.host_path_separator.join(["/usr/local/bin", "/bin", "/usr/bin"]),
-         "GOPATH": paths.dirname(gopath_placeholder.path),
-         "GOROOT": paths.dirname(go.sdk.root_file.path),
-+        # hack to tie us over until we fix this to use modules or stop using
-+        # it.
-+        "GO111MODULE": "off",
-     })
- 
-     ctx.actions.run(
diff --git a/third_party/go/patches/k8s-jose-semver-fix.patch b/third_party/go/patches/k8s-jose-semver-fix.patch
new file mode 100644
index 0000000..423485a
--- /dev/null
+++ b/third_party/go/patches/k8s-jose-semver-fix.patch
@@ -0,0 +1,34 @@
+From b0b42e86e834a1d02fe83f7be3663d19f6a1ee80 Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Thu, 17 Mar 2022 16:56:29 +0100
+Subject: [PATCH] Fix for semver breakage in go-jose
+
+---
+ pkg/serviceaccount/claims.go | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/pkg/serviceaccount/claims.go b/pkg/serviceaccount/claims.go
+index 1e1475c779f..06620f7a420 100644
+--- a/pkg/serviceaccount/claims.go
++++ b/pkg/serviceaccount/claims.go
+@@ -50,7 +50,7 @@ type kubernetes struct {
+ 	Svcacct   ref             `json:"serviceaccount,omitempty"`
+ 	Pod       *ref            `json:"pod,omitempty"`
+ 	Secret    *ref            `json:"secret,omitempty"`
+-	WarnAfter jwt.NumericDate `json:"warnafter,omitempty"`
++	WarnAfter *jwt.NumericDate `json:"warnafter,omitempty"`
+ }
+ 
+ type ref struct {
+@@ -198,7 +198,7 @@ func (v *validator) Validate(ctx context.Context, _ string, public *jwt.Claims,
+ 
+ 	// Check special 'warnafter' field for projected service account token transition.
+ 	warnafter := private.Kubernetes.WarnAfter
+-	if warnafter != 0 {
++	if warnafter != nil {
+ 		if nowTime.After(warnafter.Time()) {
+ 			secondsAfterWarn := nowTime.Unix() - warnafter.Time().Unix()
+ 			auditInfo := fmt.Sprintf("subject: %s, seconds after warning threshold: %d", public.Subject, secondsAfterWarn)
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/k8s-kubernetes-build.patch b/third_party/go/patches/k8s-kubernetes-build.patch
deleted file mode 100644
index 7debfda..0000000
--- a/third_party/go/patches/k8s-kubernetes-build.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-This patch updates BUILD files to reflect changes in Go sources. This only needs to be applied because Gazelle applies patches after BUILDfile generation.
-
-diff -ur io_k8s_kubernetes.orig/cmd/kubelet/app/plugins.go io_k8s_kubernetes/cmd/kubelet/app/plugins.go
---- io_k8s_kubernetes.orig/cmd/kubelet/app/BUILD 13:43:57.827669732 +0200
-+++ io_k8s_kubernetes/cmd/kubelet/app/BUILD 15:12:22.682316924 +0200
-@@ -45,8 +45,6 @@
-         "//pkg/capabilities:go_default_library",
-         "//pkg/cloudprovider/providers:go_default_library",
-         "//pkg/credentialprovider:go_default_library",
--        "//pkg/credentialprovider/aws:go_default_library",
--        "//pkg/credentialprovider/azure:go_default_library",
-         "//pkg/credentialprovider/gcp:go_default_library",
-         "//pkg/features:go_default_library",
-         "//pkg/kubelet:go_default_library",
-@@ -78,25 +76,13 @@
-         "//pkg/util/oom:go_default_library",
-         "//pkg/util/rlimit:go_default_library",
-         "//pkg/volume:go_default_library",
--        "//pkg/volume/cephfs:go_default_library",
-         "//pkg/volume/configmap:go_default_library",
-         "//pkg/volume/csi:go_default_library",
-         "//pkg/volume/downwardapi:go_default_library",
-         "//pkg/volume/emptydir:go_default_library",
--        "//pkg/volume/fc:go_default_library",
-         "//pkg/volume/flexvolume:go_default_library",
--        "//pkg/volume/flocker:go_default_library",
--        "//pkg/volume/git_repo:go_default_library",
--        "//pkg/volume/glusterfs:go_default_library",
-         "//pkg/volume/hostpath:go_default_library",
--        "//pkg/volume/iscsi:go_default_library",
-         "//pkg/volume/local:go_default_library",
--        "//pkg/volume/nfs:go_default_library",
--        "//pkg/volume/portworx:go_default_library",
-         "//pkg/volume/projected:go_default_library",
--        "//pkg/volume/quobyte:go_default_library",
--        "//pkg/volume/rbd:go_default_library",
--        "//pkg/volume/scaleio:go_default_library",
-         "//pkg/volume/secret:go_default_library",
--        "//pkg/volume/storageos:go_default_library",
-         "//pkg/volume/util/hostutil:go_default_library",
---- io_k8s_kubernetes.orig/cmd/kubelet/app/options/BUILD 13:43:57.827669732 +0200
-+++ io_k8s_kubernetes/cmd/kubelet/app/options/BUILD 15:12:22.682316924 +0200
-@@ -20,8 +20,6 @@
-     importpath = "k8s.io/kubernetes/cmd/kubelet/app/options",
-     deps = [
-         "//pkg/apis/core:go_default_library",
--        "//pkg/credentialprovider/azure:go_default_library",
--        "//pkg/credentialprovider/gcp:go_default_library",
-         "//pkg/features:go_default_library",
-         "//pkg/kubelet/apis:go_default_library",
-         "//pkg/kubelet/apis/config:go_default_library",
---- io_k8s_kubernetes.orig/pkg/kubelet/cadvisor/BUILD 13:43:57.827669732 +0200
-+++ io_k8s_kubernetes/pkg/kubelet/cadvisor/BUILD 15:12:22.682316924 +0200
-@@ -37,8 +37,6 @@
-             "@com_github_google_cadvisor//container/systemd/install:go_default_library",
-             "@com_github_google_cadvisor//fs:go_default_library",
-             "@com_github_google_cadvisor//manager:go_default_library",
--            "@com_github_google_cadvisor//utils/cloudinfo/aws:go_default_library",
--            "@com_github_google_cadvisor//utils/cloudinfo/azure:go_default_library",
-             "@com_github_google_cadvisor//utils/cloudinfo/gce:go_default_library",
-             "@com_github_google_cadvisor//utils/sysfs:go_default_library",
-             "@io_k8s_klog//:go_default_library",
-@@ -52,8 +50,6 @@
-             "@com_github_google_cadvisor//container/systemd/install:go_default_library",
-             "@com_github_google_cadvisor//fs:go_default_library",
-             "@com_github_google_cadvisor//manager:go_default_library",
--            "@com_github_google_cadvisor//utils/cloudinfo/aws:go_default_library",
--            "@com_github_google_cadvisor//utils/cloudinfo/azure:go_default_library",
-             "@com_github_google_cadvisor//utils/cloudinfo/gce:go_default_library",
-             "@com_github_google_cadvisor//utils/sysfs:go_default_library",
-             "@io_k8s_klog//:go_default_library",
---- io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/BUILD 13:43:57.827669732 +0200
-+++ io_k8s_kubernetes/cmd/kube-controller-manager/app/BUILD 15:12:22.682316924 +0200
-@@ -90,19 +90,9 @@
-         "//pkg/volume:go_default_library",
-         "//pkg/volume/csi:go_default_library",
-         "//pkg/volume/csimigration:go_default_library",
--        "//pkg/volume/fc:go_default_library",
-         "//pkg/volume/flexvolume:go_default_library",
--        "//pkg/volume/flocker:go_default_library",
--        "//pkg/volume/glusterfs:go_default_library",
-         "//pkg/volume/hostpath:go_default_library",
--        "//pkg/volume/iscsi:go_default_library",
-         "//pkg/volume/local:go_default_library",
--        "//pkg/volume/nfs:go_default_library",
--        "//pkg/volume/portworx:go_default_library",
--        "//pkg/volume/quobyte:go_default_library",
--        "//pkg/volume/rbd:go_default_library",
--        "//pkg/volume/scaleio:go_default_library",
--        "//pkg/volume/storageos:go_default_library",
-         "//pkg/volume/util:go_default_library",
-         "@com_github_spf13_cobra//:go_default_library",
-         "@io_k8s_api//core/v1:go_default_library",
diff --git a/third_party/go/patches/k8s-kubernetes.patch b/third_party/go/patches/k8s-kubernetes.patch
deleted file mode 100644
index 0efaa37..0000000
--- a/third_party/go/patches/k8s-kubernetes.patch
+++ /dev/null
@@ -1,399 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-This fixes OpenAPI codegen for when included from the Monogon workspace. It basically undoes vendorification.
-
-diff -ur io_k8s_kubernetes.orig/build/code_generation.bzl io_k8s_kubernetes/build/code_generation.bzl
---- io_k8s_kubernetes.orig/build/code_generation.bzl	2021-01-26 12:10:52.593725692 +0100
-+++ io_k8s_kubernetes/build/code_generation.bzl	2021-01-26 12:11:04.571786562 +0100
-@@ -27,6 +27,12 @@
-         ...
-     )
-     """
-+    if pkg.startswith('staging/src/k8s.io/'):
-+        parts = pkg.split('/', 4)
-+        project = parts[3]
-+        project = project.replace('-', '_')
-+        path = parts[4]
-+        return "@io_k8s_%s//%s:go_default_library" % (project, path)
-     return "//%s:go_default_library" % pkg
- 
- def go_pkg(pkg):
-@@ -42,6 +48,8 @@
-         ...
-     )
-     """
-+    if pkg.startswith('staging/src/'):
-+        return pkg[len('staging/src/'):]
-     for prefix in ["staging/src", "vendor"]:
-         if pkg.startswith(prefix):
-             return paths.relativize(pkg, prefix)
-@@ -49,8 +57,8 @@
- 
- def openapi_deps():
-     deps = [
--        "//vendor/github.com/go-openapi/spec:go_default_library",
--        "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
-+        "@com_github_go_openapi_spec//:go_default_library",
-+        "@io_k8s_kube_openapi//pkg/common:go_default_library",
-     ]
-     deps.extend([bazel_go_library(pkg) for pkg in tags_values_pkgs["openapi-gen"]["true"]])
-     return deps
-@@ -76,7 +84,7 @@
-         # the generator must run from the repo root inside the generated GOPATH.
-         # All of bazel's $(location)s are relative to the original working directory, however.
-         cmd = " ".join([
--            "$(location //vendor/k8s.io/kube-openapi/cmd/openapi-gen)",
-+            "$(location @io_k8s_kube_openapi//cmd/openapi-gen)",
-             "--v 1",
-             "--logtostderr",
-             "--go-header-file $(location //" + openapi_vendor_prefix + "hack/boilerplate:boilerplate.generatego.txt)",
-@@ -88,6 +96,6 @@
-             "&& rm tmp_api_violations.report",
-         ]),
-         go_deps = openapi_deps(),
--        tools = ["//vendor/k8s.io/kube-openapi/cmd/openapi-gen"],
-+        tools = ["@io_k8s_kube_openapi//cmd/openapi-gen"],
-         message = "GenOpenAPI",
-     )
-diff -ur io_k8s_kubernetes.orig/cmd/kube-apiserver/app/options/globalflags.go io_k8s_kubernetes/cmd/kube-apiserver/app/options/globalflags.go
---- io_k8s_kubernetes.orig/cmd/kube-apiserver/app/options/globalflags.go	2021-01-26 12:10:52.605725751 +0100
-+++ io_k8s_kubernetes/cmd/kube-apiserver/app/options/globalflags.go	2021-01-26 12:11:04.572786567 +0100
-@@ -32,9 +32,6 @@
- func AddCustomGlobalFlags(fs *pflag.FlagSet) {
- 	// Lookup flags in global flag set and re-register the values with our flagset.
- 
--	// Adds flags from k8s.io/kubernetes/pkg/cloudprovider/providers.
--	registerLegacyGlobalFlags(fs)
--
- 	// Adds flags from k8s.io/apiserver/pkg/admission.
- 	globalflag.Register(fs, "default-not-ready-toleration-seconds")
- 	globalflag.Register(fs, "default-unreachable-toleration-seconds")
-diff -ur io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/controllermanager.go io_k8s_kubernetes/cmd/kube-controller-manager/app/controllermanager.go
---- io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/controllermanager.go	2021-01-26 12:10:52.605725751 +0100
-+++ io_k8s_kubernetes/cmd/kube-controller-manager/app/controllermanager.go	2021-01-26 12:11:04.572786567 +0100
-@@ -140,7 +140,6 @@
- 	namedFlagSets := s.Flags(KnownControllers(), ControllersDisabledByDefault.List())
- 	verflag.AddFlags(namedFlagSets.FlagSet("global"))
- 	globalflag.AddGlobalFlags(namedFlagSets.FlagSet("global"), cmd.Name())
--	registerLegacyGlobalFlags(namedFlagSets)
- 	for _, f := range namedFlagSets.FlagSets {
- 		fs.AddFlagSet(f)
- 	}
-Only in io_k8s_kubernetes/cmd/kube-controller-manager/app: controllermanager.go.orig
-diff -ur io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/plugins.go io_k8s_kubernetes/cmd/kube-controller-manager/app/plugins.go
---- io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/plugins.go	2021-01-26 12:10:52.606725757 +0100
-+++ io_k8s_kubernetes/cmd/kube-controller-manager/app/plugins.go	2021-01-26 12:11:04.572786567 +0100
-@@ -32,19 +32,9 @@
- 	// Volume plugins
- 	"k8s.io/kubernetes/pkg/volume"
- 	"k8s.io/kubernetes/pkg/volume/csi"
--	"k8s.io/kubernetes/pkg/volume/fc"
- 	"k8s.io/kubernetes/pkg/volume/flexvolume"
--	"k8s.io/kubernetes/pkg/volume/flocker"
--	"k8s.io/kubernetes/pkg/volume/glusterfs"
- 	"k8s.io/kubernetes/pkg/volume/hostpath"
--	"k8s.io/kubernetes/pkg/volume/iscsi"
- 	"k8s.io/kubernetes/pkg/volume/local"
--	"k8s.io/kubernetes/pkg/volume/nfs"
--	"k8s.io/kubernetes/pkg/volume/portworx"
--	"k8s.io/kubernetes/pkg/volume/quobyte"
--	"k8s.io/kubernetes/pkg/volume/rbd"
--	"k8s.io/kubernetes/pkg/volume/scaleio"
--	"k8s.io/kubernetes/pkg/volume/storageos"
- 	volumeutil "k8s.io/kubernetes/pkg/volume/util"
- 
- 	utilfeature "k8s.io/apiserver/pkg/util/feature"
-@@ -58,18 +48,7 @@
- // The list of plugins is manually compiled. This code and the plugin
- // initialization code for kubelet really, really need a through refactor.
- func ProbeAttachableVolumePlugins() ([]volume.VolumePlugin, error) {
--	var err error
- 	allPlugins := []volume.VolumePlugin{}
--	allPlugins, err = appendAttachableLegacyProviderVolumes(allPlugins, utilfeature.DefaultFeatureGate)
--	if err != nil {
--		return allPlugins, err
--	}
--	allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
- 	return allPlugins, nil
- }
-@@ -83,18 +62,7 @@
- 
- // ProbeExpandableVolumePlugins returns volume plugins which are expandable
- func ProbeExpandableVolumePlugins(config persistentvolumeconfig.VolumeConfiguration) ([]volume.VolumePlugin, error) {
--	var err error
- 	allPlugins := []volume.VolumePlugin{}
--	allPlugins, err = appendExpandableLegacyProviderVolumes(allPlugins, utilfeature.DefaultFeatureGate)
--	if err != nil {
--		return allPlugins, err
--	}
--	allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
- 	return allPlugins, nil
- }
- 
-@@ -124,30 +92,7 @@
- 	}
- 	allPlugins = append(allPlugins, hostpath.ProbeVolumePlugins(hostPathConfig)...)
- 
--	nfsConfig := volume.VolumeConfig{
--		RecyclerMinimumTimeout:   int(config.PersistentVolumeRecyclerConfiguration.MinimumTimeoutNFS),
--		RecyclerTimeoutIncrement: int(config.PersistentVolumeRecyclerConfiguration.IncrementTimeoutNFS),
--		RecyclerPodTemplate:      volume.NewPersistentVolumeRecyclerPodTemplate(),
--	}
--	if err := AttemptToLoadRecycler(config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, &nfsConfig); err != nil {
--		klog.Fatalf("Could not create NFS recycler pod from file %s: %+v", config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, err)
--	}
--	allPlugins = append(allPlugins, nfs.ProbeVolumePlugins(nfsConfig)...)
--	allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
--	// add rbd provisioner
--	allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, quobyte.ProbeVolumePlugins()...)
--	var err error
--	allPlugins, err = appendExpandableLegacyProviderVolumes(allPlugins, utilfeature.DefaultFeatureGate)
--	if err != nil {
--		return allPlugins, err
--	}
--
--	allPlugins = append(allPlugins, flocker.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, local.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
- 
- 	if utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) {
- 		allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
-diff -ur io_k8s_kubernetes.orig/cmd/kubectl/BUILD io_k8s_kubernetes/cmd/kubectl/BUILD
---- io_k8s_kubernetes.orig/cmd/kubectl/BUILD	2021-01-26 12:10:52.616725807 +0100
-+++ io_k8s_kubernetes/cmd/kubectl/BUILD	2021-01-26 12:11:04.572786567 +0100
-@@ -3,7 +3,7 @@
-     "go_binary",
-     "go_library",
- )
--load("//staging/src/k8s.io/component-base/version:def.bzl", "version_x_defs")
-+load("@//third_party/go:kubernetes_version_def.bzl", "version_x_defs")
- 
- go_binary(
-     name = "kubectl",
-diff -ur io_k8s_kubernetes.orig/cmd/kubelet/app/options/globalflags.go io_k8s_kubernetes/cmd/kubelet/app/options/globalflags.go
---- io_k8s_kubernetes.orig/cmd/kubelet/app/options/globalflags.go	2021-01-26 12:10:52.617725812 +0100
-+++ io_k8s_kubernetes/cmd/kubelet/app/options/globalflags.go	2021-01-26 12:12:03.724087183 +0100
-@@ -28,10 +28,6 @@
- 	"k8s.io/component-base/logs"
- 	"k8s.io/component-base/version/verflag"
- 	"k8s.io/klog/v2"
--
--	// ensure libs have a chance to globally register their flags
--	_ "k8s.io/kubernetes/pkg/credentialprovider/azure"
--	_ "k8s.io/kubernetes/pkg/credentialprovider/gcp"
- )
- 
- // AddGlobalFlags explicitly registers flags that libraries (glog, verflag, etc.) register
-@@ -80,12 +76,8 @@
- 
- // addCredentialProviderFlags adds flags from k8s.io/kubernetes/pkg/credentialprovider
- func addCredentialProviderFlags(fs *pflag.FlagSet) {
--	// lookup flags in global flag set and re-register the values with our flagset
--	global := pflag.CommandLine
- 	local := pflag.NewFlagSet(os.Args[0], pflag.ExitOnError)
- 
--	addLegacyCloudProviderCredentialProviderFlags(global, local)
--
- 	fs.AddFlagSet(local)
- }
- 
-diff -ur io_k8s_kubernetes.orig/cmd/kubelet/app/plugins.go io_k8s_kubernetes/cmd/kubelet/app/plugins.go
---- io_k8s_kubernetes.orig/cmd/kubelet/app/plugins.go	2021-01-26 12:10:52.617725812 +0100
-+++ io_k8s_kubernetes/cmd/kubelet/app/plugins.go	2021-01-26 12:11:04.573786572 +0100
-@@ -19,8 +19,6 @@
- // This file exists to force the desired plugin implementations to be linked.
- import (
- 	// Credential providers
--	_ "k8s.io/kubernetes/pkg/credentialprovider/aws"
--	_ "k8s.io/kubernetes/pkg/credentialprovider/azure"
- 	_ "k8s.io/kubernetes/pkg/credentialprovider/gcp"
- 
- 	"k8s.io/component-base/featuregate"
-@@ -28,27 +26,15 @@
- 
- 	// Volume plugins
- 	"k8s.io/kubernetes/pkg/volume"
--	"k8s.io/kubernetes/pkg/volume/cephfs"
- 	"k8s.io/kubernetes/pkg/volume/configmap"
- 	"k8s.io/kubernetes/pkg/volume/csi"
- 	"k8s.io/kubernetes/pkg/volume/downwardapi"
- 	"k8s.io/kubernetes/pkg/volume/emptydir"
--	"k8s.io/kubernetes/pkg/volume/fc"
- 	"k8s.io/kubernetes/pkg/volume/flexvolume"
--	"k8s.io/kubernetes/pkg/volume/flocker"
--	"k8s.io/kubernetes/pkg/volume/git_repo"
--	"k8s.io/kubernetes/pkg/volume/glusterfs"
- 	"k8s.io/kubernetes/pkg/volume/hostpath"
--	"k8s.io/kubernetes/pkg/volume/iscsi"
- 	"k8s.io/kubernetes/pkg/volume/local"
--	"k8s.io/kubernetes/pkg/volume/nfs"
--	"k8s.io/kubernetes/pkg/volume/portworx"
- 	"k8s.io/kubernetes/pkg/volume/projected"
--	"k8s.io/kubernetes/pkg/volume/quobyte"
--	"k8s.io/kubernetes/pkg/volume/rbd"
--	"k8s.io/kubernetes/pkg/volume/scaleio"
- 	"k8s.io/kubernetes/pkg/volume/secret"
--	"k8s.io/kubernetes/pkg/volume/storageos"
- 
- 	// Cloud providers
- 	_ "k8s.io/kubernetes/pkg/cloudprovider/providers"
-@@ -64,30 +50,13 @@
- 	//
- 	// Kubelet does not currently need to configure volume plugins.
- 	// If/when it does, see kube-controller-manager/app/plugins.go for example of using volume.VolumeConfig
--	var err error
--	allPlugins, err = appendLegacyProviderVolumes(allPlugins, featureGate)
--	if err != nil {
--		return allPlugins, err
--	}
- 	allPlugins = append(allPlugins, emptydir.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, git_repo.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, hostpath.ProbeVolumePlugins(volume.VolumeConfig{})...)
--	allPlugins = append(allPlugins, nfs.ProbeVolumePlugins(volume.VolumeConfig{})...)
- 	allPlugins = append(allPlugins, secret.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, quobyte.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, cephfs.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, downwardapi.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, flocker.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, configmap.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, projected.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, local.ProbeVolumePlugins()...)
--	allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
- 	allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
- 	return allPlugins, nil
- }
-diff -ur io_k8s_kubernetes.orig/cmd/kubelet/BUILD io_k8s_kubernetes/cmd/kubelet/BUILD
---- io_k8s_kubernetes.orig/cmd/kubelet/BUILD	2021-01-26 12:10:52.616725807 +0100
-+++ io_k8s_kubernetes/cmd/kubelet/BUILD	2021-01-26 12:11:04.573786572 +0100
-@@ -5,7 +5,7 @@
-     go_binary = "go_binary_conditional_pure",
- )
- load("@io_bazel_rules_go//go:def.bzl", "go_library")
--load("//staging/src/k8s.io/component-base/version:def.bzl", "version_x_defs")
-+load("@//third_party/go:kubernetes_version_def.bzl", "version_x_defs")
- 
- go_binary(
-     name = "kubelet",
-diff -ur io_k8s_kubernetes.orig/pkg/controller/nodeipam/ipam/cidr_allocator.go io_k8s_kubernetes/pkg/controller/nodeipam/ipam/cidr_allocator.go
---- io_k8s_kubernetes.orig/pkg/controller/nodeipam/ipam/cidr_allocator.go	2021-01-26 12:10:52.664726051 +0100
-+++ io_k8s_kubernetes/pkg/controller/nodeipam/ipam/cidr_allocator.go	2021-01-26 12:11:04.573786572 +0100
-@@ -112,8 +112,6 @@
- 	switch allocatorType {
- 	case RangeAllocatorType:
- 		return NewCIDRRangeAllocator(kubeClient, nodeInformer, allocatorParams, nodeList)
--	case CloudAllocatorType:
--		return NewCloudCIDRAllocator(kubeClient, cloud, nodeInformer)
- 	default:
- 		return nil, fmt.Errorf("invalid CIDR allocator type: %v", allocatorType)
- 	}
-Only in io_k8s_kubernetes/pkg/controller/nodeipam/ipam: cidr_allocator.go.orig
-diff -ur io_k8s_kubernetes.orig/pkg/controller/nodeipam/nolegacyprovider.go io_k8s_kubernetes/pkg/controller/nodeipam/nolegacyprovider.go
---- io_k8s_kubernetes.orig/pkg/controller/nodeipam/nolegacyprovider.go	2021-01-26 12:10:52.665726056 +0100
-+++ io_k8s_kubernetes/pkg/controller/nodeipam/nolegacyprovider.go	2021-01-26 12:11:04.573786572 +0100
-@@ -1,5 +1,3 @@
--// +build providerless
--
- /*
- Copyright 2019 The Kubernetes Authors.
- 
-diff -ur io_k8s_kubernetes.orig/pkg/kubelet/cadvisor/cadvisor_linux.go io_k8s_kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go
---- io_k8s_kubernetes.orig/pkg/kubelet/cadvisor/cadvisor_linux.go	2021-01-26 12:10:52.676726112 +0100
-+++ io_k8s_kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go	2021-01-26 12:11:04.573786572 +0100
-@@ -33,8 +33,6 @@
- 
- 	// Register cloud info providers.
- 	// TODO(#68522): Remove this in 1.20+ once the cAdvisor endpoints are removed.
--	_ "github.com/google/cadvisor/utils/cloudinfo/aws"
--	_ "github.com/google/cadvisor/utils/cloudinfo/azure"
- 	_ "github.com/google/cadvisor/utils/cloudinfo/gce"
- 
- 	"github.com/google/cadvisor/cache/memory"
-Only in io_k8s_kubernetes/pkg/kubelet/cadvisor: cadvisor_linux.go.orig
-diff -ur io_k8s_kubernetes.orig/test/e2e/BUILD io_k8s_kubernetes/test/e2e/BUILD
---- io_k8s_kubernetes.orig/test/e2e/BUILD	2021-01-26 12:10:52.736726417 +0100
-+++ io_k8s_kubernetes/test/e2e/BUILD	2021-01-26 12:11:04.573786572 +0100
-@@ -5,7 +5,7 @@
-     go_test = "go_test_conditional_pure",
- )
- load("@io_bazel_rules_go//go:def.bzl", "go_library")
--load("//staging/src/k8s.io/component-base/version:def.bzl", "version_x_defs")
-+load("@//third_party/go:kubernetes_version_def.bzl", "version_x_defs")
- 
- go_test(
-     name = "go_default_test",
-diff -ur io_k8s_kubernetes.orig/test/e2e/generated/BUILD io_k8s_kubernetes/test/e2e/generated/BUILD
---- io_k8s_kubernetes.orig/test/e2e/generated/BUILD	2021-01-26 12:10:52.743726453 +0100
-+++ io_k8s_kubernetes/test/e2e/generated/BUILD	2021-01-26 12:11:04.573786572 +0100
-@@ -4,23 +4,24 @@
-     "@io_bazel_rules_go//go:def.bzl",
-     "go_library",
- )
--load("//build:bindata.bzl", "go_bindata")
-+load("@dev_source_monogon//build/bindata:bindata.bzl", "bindata")
- 
- go_library(
-     name = "go_default_library",
-     srcs = [
--        "bindata.go",
-         "gobindata_util.go",
-         "main.go",
-     ],
-+    embed = [
-+        ":bindata",
-+    ],
-     importpath = "k8s.io/kubernetes/test/e2e/generated",
-     deps = [
-         "@io_k8s_klog_v2//:go_default_library",
-     ],
- )
- 
--# IMPORTANT: if you make any changes here, you must also update hack/generate-bindata.sh.
--go_bindata(
-+bindata(
-     name = "bindata",
-     srcs = [
-         "//test/conformance/testdata:all-srcs",
-@@ -29,9 +30,7 @@
-         "//test/fixtures:all-srcs",
-         "//test/images:all-srcs",
-     ],
--    outs = ["bindata.go"],
--    compress = True,
--    include_metadata = False,
-+    package = "generated",
- )
- 
- filegroup(
diff --git a/third_party/go/patches/k8s-native-metrics.patch b/third_party/go/patches/k8s-native-metrics.patch
index 859ee74..2edc60d 100644
--- a/third_party/go/patches/k8s-native-metrics.patch
+++ b/third_party/go/patches/k8s-native-metrics.patch
@@ -1,59 +1,15 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From b16e57cc52a437465bbd12c24fb05fe5790afe1d Mon Sep 17 00:00:00 2001
+From e3b5a31bff00c89fc95f85212bf0943d46692616 Mon Sep 17 00:00:00 2001
 From: Lorenz Brun <lorenz@brun.one>
 Date: Tue, 17 Mar 2020 21:41:08 +0100
-Subject: [PATCH 2/3] Add a native volume metrics implementation
+Subject: [PATCH 2/2] Add a native volume metrics implementation
 
 ---
- pkg/volume/BUILD                  |   3 +
  pkg/volume/metrics_native.go      | 101 +++++++++++++++++++++++++++++
  pkg/volume/metrics_native_test.go | 102 ++++++++++++++++++++++++++++++
- 3 files changed, 206 insertions(+)
+ 2 files changed, 203 insertions(+)
  create mode 100644 pkg/volume/metrics_native.go
  create mode 100644 pkg/volume/metrics_native_test.go
 
-diff --git a/pkg/volume/BUILD b/pkg/volume/BUILD
-index 720b13406dc..b6e4b7e6d6f 100644
---- a/pkg/volume/BUILD
-+++ b/pkg/volume/BUILD
-@@ -7,6 +7,7 @@ go_library(
-         "metrics_cached.go",
-         "metrics_du.go",
-         "metrics_errors.go",
-+        "metrics_native.go",
-         "metrics_nil.go",
-         "metrics_statfs.go",
-         "noop_expandable_plugin.go",
-@@ -35,6 +36,7 @@ go_library(
-         "@io_k8s_client_go//tools/cache:go_default_library",
-         "@io_k8s_client_go//tools/record:go_default_library",
-         "@io_k8s_cloud_provider//:go_default_library",
-+        "@org_golang_x_sys//unix:go_default_library",
-         "@io_k8s_klog_v2//:go_default_library",
-         "@io_k8s_utils//exec:go_default_library",
-         "@io_k8s_utils//mount:go_default_library",
-@@ -55,6 +57,7 @@ go_test(
-     name = "go_default_test",
-     srcs = [
-         "metrics_du_test.go",
-+        "metrics_native_test.go",
-         "metrics_nil_test.go",
-         "metrics_statfs_test.go",
-         "plugins_test.go",
 diff --git a/pkg/volume/metrics_native.go b/pkg/volume/metrics_native.go
 new file mode 100644
 index 00000000000..3934b946f2e
diff --git a/third_party/go/patches/k8s-native-mounter.patch b/third_party/go/patches/k8s-native-mounter.patch
index 2f754b6..a5ced4d 100644
--- a/third_party/go/patches/k8s-native-mounter.patch
+++ b/third_party/go/patches/k8s-native-mounter.patch
@@ -1,69 +1,33 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 8335005ed1983ca5ac036af15dd04b8717898c35 Mon Sep 17 00:00:00 2001
+From 6c346b4fbfd800af47ffa2ec24456f9f58a1b0f2 Mon Sep 17 00:00:00 2001
 From: Lorenz Brun <lorenz@brun.one>
 Date: Mon, 16 Mar 2020 22:13:08 +0100
-Subject: [PATCH 1/3] Provide native mounter implementation for Linux
+Subject: [PATCH 1/7] Provide native mounter implementation for Linux
 
 ---
- BUILD.bazel          |   2 +
- mount/mount_linux.go | 141 ++++++++++++++++++++++-
- 2 files changed, 139 insertions(+), 4 deletions(-)
+ mount_linux.go | 148 +++++++++++++++++-
+ 1 file changed, 144 insertions(+), 4 deletions(-)
 
-diff --git a/mount/BUILD b/mount/BUILD.bazel
-index bef3ec2cf55..6f997103dac 100644
---- a/mount/BUILD.bazel
-+++ b/mount/BUILD.bazel
-@@ -21,6 +21,7 @@ go_library(
-         "//exec:go_default_library",
-     ] + select({
-         "@io_bazel_rules_go//go/platform:android": [
-+            "@org_golang_x_sys//unix:go_default_library",
-             "//io:go_default_library",
-         ],
-         "@io_bazel_rules_go//go/platform:darwin": [
-@@ -36,6 +37,7 @@ go_library(
-             "//io:go_default_library",
-         ],
-         "@io_bazel_rules_go//go/platform:linux": [
-+            "@org_golang_x_sys//unix:go_default_library",
-             "//io:go_default_library",
-         ],
-         "@io_bazel_rules_go//go/platform:nacl": [
-diff --git a/mount/mount_linux.go b/mount/mount_linux.go
-index 41f69efe3f0..01182684653 100644
---- a/mount/mount_linux.go
-+++ b/mount/mount_linux.go
-@@ -20,6 +20,7 @@ package mount
- 
+diff --git a/mount_linux.go b/mount_linux.go
+index aaa592161d4..517bf0b2541 100644
+--- a/mount_linux.go
++++ b/mount_linux.go
+@@ -22,6 +22,7 @@ package mount
  import (
+ 	"context"
  	"fmt"
 +	"io/ioutil"
  	"os"
  	"os/exec"
  	"path/filepath"
-@@ -27,6 +28,7 @@ import (
- 	"strings"
+@@ -30,6 +31,7 @@ import (
  	"syscall"
+ 	"time"
  
 +	"golang.org/x/sys/unix"
  	"k8s.io/klog/v2"
  	utilexec "k8s.io/utils/exec"
  	utilio "k8s.io/utils/io"
-@@ -49,8 +51,10 @@ const (
+@@ -54,8 +56,10 @@ const (
  // for the linux platform.  This implementation assumes that the
  // kubelet is running in the host's root mount namespace.
  type Mounter struct {
@@ -75,8 +39,8 @@
 +	nativeSupportedFstypes map[string]struct{}
  }
  
- // New returns a mount.Interface for the current system.
-@@ -58,8 +62,10 @@ type Mounter struct {
+ var _ MounterForceUnmounter = &Mounter{}
+@@ -65,11 +69,36 @@ var _ MounterForceUnmounter = &Mounter{}
  // mounterPath allows using an alternative to `/bin/mount` for mounting.
  func New(mounterPath string) Interface {
  	return &Mounter{
@@ -89,38 +53,55 @@
  	}
  }
  
-@@ -78,6 +84,29 @@ func (mounter *Mounter) Mount(source string, target string, fstype string, optio
++func (mounter *Mounter) mountNative(source string, target string, fstype string, options []string, sensitiveOptions []string) error {
++	flags, pflags, fsoptions := parseMountOptions(options)
++	if len(pflags) > 0 {
++		return fmt.Errorf("the native mounter is active and does not support mount propagation at the moment")
++	}
++
++	if !mounter.nativeSupportsFstype(fstype) && flags&unix.MS_BIND == 0 {
++		return fmt.Errorf("the native mounter is active and cannot mount filesystems of type \"%v\"", fstype)
++	}
++
++	if flags&unix.MS_BIND != 0 && flags & ^uintptr(unix.MS_BIND) != 0 {
++		if err := unix.Mount(source, target, "", unix.MS_BIND, ""); err != nil {
++			return fmt.Errorf("bind pre-mount failed: %w", err)
++		}
++		flags |= unix.MS_REMOUNT
++	}
++
++	if err := unix.Mount(source, target, fstype, flags, fsoptions); err != nil {
++		return fmt.Errorf("failed to mount filesystem: %w", err)
++	}
++	return nil
++}
++
+ // Mount mounts source to target as fstype with given options. 'source' and 'fstype' must
+ // be an empty string in case it's not required, e.g. for remount, or for auto filesystem
+ // type, where kernel handles fstype for you. The mount 'options' is a list of options,
+@@ -85,6 +114,10 @@ func (mounter *Mounter) Mount(source string, target string, fstype string, optio
  // method should be used by callers that pass sensitive material (like
  // passwords) as mount options.
  func (mounter *Mounter) MountSensitive(source string, target string, fstype string, options []string, sensitiveOptions []string) error {
 +	if !mounter.withLinuxUtils {
-+		flags, pflags, fsoptions := parseMountOptions(options)
-+		if len(pflags) > 0 {
-+			return fmt.Errorf("the native mounter is active and does not support mount propagation at the moment")
-+		}
-+
-+		if !mounter.nativeSupportsFstype(fstype) && flags&unix.MS_BIND == 0 {
-+			return fmt.Errorf("the native mounter is active and cannot mount filesystems of type \"%v\"", fstype)
-+		}
-+
-+		if flags&unix.MS_BIND != 0 && flags & ^uintptr(unix.MS_BIND) != 0 {
-+			if err := unix.Mount(source, target, "", unix.MS_BIND, ""); err != nil {
-+				return fmt.Errorf("bind pre-mount failed: %w", err)
-+			}
-+			flags |= unix.MS_REMOUNT
-+		}
-+
-+		if err := unix.Mount(source, target, fstype, flags, fsoptions); err != nil {
-+			return fmt.Errorf("failed to mount filesystem: %w", err)
-+		}
-+		return nil
++		return mounter.mountNative(source, target, fstype, options, sensitiveOptions)
 +	}
 +
  	// Path to mounter binary if containerized mounter is needed. Otherwise, it is set to empty.
  	// All Linux distros are expected to be shipped with a mount utility that a support bind mounts.
  	mounterPath := ""
-@@ -102,6 +131,80 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri
- 	return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, options, sensitiveOptions)
+@@ -116,6 +149,9 @@ func (mounter *Mounter) MountSensitiveWithoutSystemd(source string, target strin
+ 
+ // MountSensitiveWithoutSystemdWithMountFlags is the same as MountSensitiveWithoutSystemd with additional mount flags.
+ func (mounter *Mounter) MountSensitiveWithoutSystemdWithMountFlags(source string, target string, fstype string, options []string, sensitiveOptions []string, mountFlags []string) error {
++	if !mounter.withLinuxUtils {
++		return mounter.mountNative(source, target, fstype, options, sensitiveOptions)
++	}
+ 	mounterPath := ""
+ 	bind, bindOpts, bindRemountOpts, bindRemountOptsSensitive := MakeBindOptsSensitive(options, sensitiveOptions)
+ 	if bind {
+@@ -138,6 +174,80 @@ func (mounter *Mounter) MountSensitiveWithoutSystemdWithMountFlags(source string
+ 	return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, options, sensitiveOptions, mountFlags, false)
  }
  
 +// nativeSupportsFstype checks if the native mounter can mount the given fstype
@@ -198,9 +179,9 @@
 +}
 +
  // doMount runs the mount command. mounterPath is the path to mounter binary if containerized mounter is used.
- // sensitiveOptions is an extention of options except they will not be logged (because they may contain sensitive material)
- func (mounter *Mounter) doMount(mounterPath string, mountCmd string, source string, target string, fstype string, options []string, sensitiveOptions []string) error {
-@@ -179,6 +282,30 @@ func detectSystemd() bool {
+ // sensitiveOptions is an extension of options except they will not be logged (because they may contain sensitive material)
+ // systemdMountRequired is an extension of option to decide whether uses systemd mount.
+@@ -223,6 +333,30 @@ func detectSystemd() bool {
  	return true
  }
  
@@ -231,7 +212,7 @@
  // MakeMountArgs makes the arguments to the mount(8) command.
  // options MUST not contain sensitive material (like passwords).
  func MakeMountArgs(source, target, fstype string, options []string) (mountArgs []string) {
-@@ -236,6 +363,12 @@ func AddSystemdScopeSensitive(systemdRunPath, mountName, command string, args []
+@@ -292,6 +426,12 @@ func AddSystemdScopeSensitive(systemdRunPath, mountName, command string, args []
  // Unmount unmounts the target.
  func (mounter *Mounter) Unmount(target string) error {
  	klog.V(4).Infof("Unmounting %s", target)
diff --git a/third_party/go/patches/k8s-revert-seccomp-runtime-default.patch b/third_party/go/patches/k8s-revert-seccomp-runtime-default.patch
deleted file mode 100644
index d8377b5..0000000
--- a/third_party/go/patches/k8s-revert-seccomp-runtime-default.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From 2adf4ec9796839014a708761b8fb6ad815306def Mon Sep 17 00:00:00 2001
-From: Serge Bazanski <serge@nexantic.com>
-Date: Tue, 26 Jan 2021 11:37:01 +0100
-Subject: [PATCH] Manually revert 
- https://github.com/kubernetes/kubernetes/pull/90949
-
-This reverts PR 90494 which breaks runc within Metropolis. See T916.
-
----
- pkg/kubelet/kuberuntime/kuberuntime_sandbox.go | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go b/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go
-index 0978044f753..c46436f2a41 100644
---- a/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go
-+++ b/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go
-@@ -148,11 +148,8 @@ func (m *kubeGenericRuntimeManager) generatePodSandboxLinuxConfig(pod *v1.Pod) (
- 	lc := &runtimeapi.LinuxPodSandboxConfig{
- 		CgroupParent: cgroupParent,
- 		SecurityContext: &runtimeapi.LinuxSandboxSecurityContext{
--			Privileged: kubecontainer.HasPrivilegedContainer(pod),
--
--			// Forcing sandbox to run as `runtime/default` allow users to
--			// use least privileged seccomp profiles at pod level. Issue #84623
--			SeccompProfilePath: v1.SeccompProfileRuntimeDefault,
-+			Privileged:         kubecontainer.HasPrivilegedContainer(pod),
-+			SeccompProfilePath: m.getSeccompProfile(pod.Annotations, "", pod.Spec.SecurityContext, nil),
- 		},
- 	}
- 
--- 
-2.26.2
-
diff --git a/third_party/go/patches/k8s-use-native.patch b/third_party/go/patches/k8s-use-native.patch
deleted file mode 100644
index 61001da..0000000
--- a/third_party/go/patches/k8s-use-native.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-From ee4a7df588550ee5cbc3b8419e1ce185a8abb302 Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@brun.one>
-Date: Tue, 17 Mar 2020 22:07:24 +0100
-Subject: [PATCH 3/3] Use StatFS and Native volume metrics instead of du
-
----
- pkg/kubelet/stats/log_metrics_provider.go | 2 +-
- pkg/volume/configmap/configmap.go         | 4 ++--
- pkg/volume/downwardapi/downwardapi.go     | 4 ++--
- pkg/volume/emptydir/empty_dir.go          | 4 ++--
- pkg/volume/projected/projected.go         | 4 ++--
- pkg/volume/secret/secret.go               | 4 ++--
- 6 files changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/pkg/kubelet/stats/log_metrics_provider.go b/pkg/kubelet/stats/log_metrics_provider.go
-index 4a53eef74a3..ff87fec5ec3 100644
---- a/pkg/kubelet/stats/log_metrics_provider.go
-+++ b/pkg/kubelet/stats/log_metrics_provider.go
-@@ -33,5 +33,5 @@ func NewLogMetricsService() LogMetricsService {
- }
- 
- func (l logMetrics) createLogMetricsProvider(path string) volume.MetricsProvider {
--	return volume.NewMetricsDu(path)
-+	return volume.NewMetricsNative(path)
- }
-diff --git a/pkg/volume/configmap/configmap.go b/pkg/volume/configmap/configmap.go
-index 0e74dd0a1d8..430d739aab7 100644
---- a/pkg/volume/configmap/configmap.go
-+++ b/pkg/volume/configmap/configmap.go
-@@ -97,7 +97,7 @@ func (plugin *configMapPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts v
- 			pod.UID,
- 			plugin,
- 			plugin.host.GetMounter(plugin.GetPluginName()),
--			volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))),
-+			volume.NewCachedMetrics(volume.NewMetricsNative(getPath(pod.UID, spec.Name(), plugin.host))),
- 		},
- 		source:       *spec.Volume.ConfigMap,
- 		pod:          *pod,
-@@ -113,7 +113,7 @@ func (plugin *configMapPlugin) NewUnmounter(volName string, podUID types.UID) (v
- 			podUID,
- 			plugin,
- 			plugin.host.GetMounter(plugin.GetPluginName()),
--			volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))),
-+			volume.NewCachedMetrics(volume.NewMetricsNative(getPath(podUID, volName, plugin.host))),
- 		},
- 	}, nil
- }
-diff --git a/pkg/volume/downwardapi/downwardapi.go b/pkg/volume/downwardapi/downwardapi.go
-index a1779c0dac9..f0a0f99b318 100644
---- a/pkg/volume/downwardapi/downwardapi.go
-+++ b/pkg/volume/downwardapi/downwardapi.go
-@@ -99,7 +99,7 @@ func (plugin *downwardAPIPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts
- 		pod:             pod,
- 		podUID:          pod.UID,
- 		plugin:          plugin,
--		MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))),
-+		MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsStatFS(getPath(pod.UID, spec.Name(), plugin.host))),
- 	}
- 	return &downwardAPIVolumeMounter{
- 		downwardAPIVolume: v,
-@@ -114,7 +114,7 @@ func (plugin *downwardAPIPlugin) NewUnmounter(volName string, podUID types.UID)
- 			volName:         volName,
- 			podUID:          podUID,
- 			plugin:          plugin,
--			MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))),
-+			MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsStatFS(getPath(podUID, volName, plugin.host))),
- 		},
- 	}, nil
- }
-diff --git a/pkg/volume/emptydir/empty_dir.go b/pkg/volume/emptydir/empty_dir.go
-index 0a25d2b684c..5dc83b90c5b 100644
---- a/pkg/volume/emptydir/empty_dir.go
-+++ b/pkg/volume/emptydir/empty_dir.go
-@@ -121,7 +121,7 @@ func (plugin *emptyDirPlugin) newMounterInternal(spec *volume.Spec, pod *v1.Pod,
- 		mounter:         mounter,
- 		mountDetector:   mountDetector,
- 		plugin:          plugin,
--		MetricsProvider: volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host)),
-+		MetricsProvider: volume.NewMetricsNative(getPath(pod.UID, spec.Name(), plugin.host)),
- 	}, nil
- }
- 
-@@ -138,7 +138,7 @@ func (plugin *emptyDirPlugin) newUnmounterInternal(volName string, podUID types.
- 		mounter:         mounter,
- 		mountDetector:   mountDetector,
- 		plugin:          plugin,
--		MetricsProvider: volume.NewMetricsDu(getPath(podUID, volName, plugin.host)),
-+		MetricsProvider: volume.NewMetricsNative(getPath(podUID, volName, plugin.host)),
- 	}
- 	return ed, nil
- }
-diff --git a/pkg/volume/projected/projected.go b/pkg/volume/projected/projected.go
-index 0f65a97610c..890f9c1c7bc 100644
---- a/pkg/volume/projected/projected.go
-+++ b/pkg/volume/projected/projected.go
-@@ -114,7 +114,7 @@ func (plugin *projectedPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts v
- 			sources:         spec.Volume.Projected.Sources,
- 			podUID:          pod.UID,
- 			plugin:          plugin,
--			MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))),
-+			MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsStatFS(getPath(pod.UID, spec.Name(), plugin.host))),
- 		},
- 		source: *spec.Volume.Projected,
- 		pod:    pod,
-@@ -128,7 +128,7 @@ func (plugin *projectedPlugin) NewUnmounter(volName string, podUID types.UID) (v
- 			volName:         volName,
- 			podUID:          podUID,
- 			plugin:          plugin,
--			MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))),
-+			MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsStatFS(getPath(podUID, volName, plugin.host))),
- 		},
- 	}, nil
- }
-diff --git a/pkg/volume/secret/secret.go b/pkg/volume/secret/secret.go
-index a195c59ddd8..4c290cb8f24 100644
---- a/pkg/volume/secret/secret.go
-+++ b/pkg/volume/secret/secret.go
-@@ -100,7 +100,7 @@ func (plugin *secretPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volu
- 			pod.UID,
- 			plugin,
- 			plugin.host.GetMounter(plugin.GetPluginName()),
--			volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))),
-+			volume.NewCachedMetrics(volume.NewMetricsStatFS(getPath(pod.UID, spec.Name(), plugin.host))),
- 		},
- 		source:    *spec.Volume.Secret,
- 		pod:       *pod,
-@@ -116,7 +116,7 @@ func (plugin *secretPlugin) NewUnmounter(volName string, podUID types.UID) (volu
- 			podUID,
- 			plugin,
- 			plugin.host.GetMounter(plugin.GetPluginName()),
--			volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))),
-+			volume.NewCachedMetrics(volume.NewMetricsStatFS(getPath(podUID, volName, plugin.host))),
- 		},
- 	}, nil
- }
--- 
-2.25.1
-
diff --git a/third_party/go/patches/kubelet-fix-path.patch b/third_party/go/patches/kubelet-fix-path.patch
new file mode 100644
index 0000000..069dece
--- /dev/null
+++ b/third_party/go/patches/kubelet-fix-path.patch
@@ -0,0 +1,25 @@
+From 500aace7a0bf5904c740e14ad18cd073df080d37 Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 16 Mar 2022 18:05:54 +0100
+Subject: [PATCH] Change device plugin path
+
+---
+ pkg/apis/deviceplugin/v1beta1/constants.go | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pkg/apis/deviceplugin/v1beta1/constants.go b/pkg/apis/deviceplugin/v1beta1/constants.go
+index 3bed214..30f06fe 100644
+--- a/pkg/apis/deviceplugin/v1beta1/constants.go
++++ b/pkg/apis/deviceplugin/v1beta1/constants.go
+@@ -27,7 +27,7 @@ const (
+ 	// DevicePluginPath is the folder the Device Plugin is expecting sockets to be on
+ 	// Only privileged pods have access to this path
+ 	// Note: Placeholder until we find a "standard path"
+-	DevicePluginPath = "/var/lib/kubelet/device-plugins/"
++	DevicePluginPath = "/data/kubernetes/kubelet/device-plugins/"
+ 	// KubeletSocket is the path of the Kubelet registry socket
+ 	KubeletSocket = DevicePluginPath + "kubelet.sock"
+ 
+-- 
+2.25.1
+
diff --git a/third_party/go/patches/libseccomp.patch b/third_party/go/patches/libseccomp.patch
new file mode 100644
index 0000000..0778f33
--- /dev/null
+++ b/third_party/go/patches/libseccomp.patch
@@ -0,0 +1,12 @@
+--- a/BUILD.bazel  2022-03-21 17:04:56.160536936 +0100
++++ b/BUILD.bazel   2022-03-21 17:05:52.439616250 +0100
+@@ -6,6 +6,9 @@
+         "seccomp.go",
+         "seccomp_internal.go",
+     ],
++    cdeps = [
++        "@seccomp",
++    ],
+     cgo = True,
+     importpath = "github.com/seccomp/libseccomp-golang",
+     visibility = ["//visibility:public"],
diff --git a/third_party/go/patches/nfproxy.patch b/third_party/go/patches/nfproxy.patch
deleted file mode 100644
index 307d3d4..0000000
--- a/third_party/go/patches/nfproxy.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Copyright 2020 The Monogon Project Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-Fix nfproxy compatibility with our version of Kubernetes/utilproxy
---- com_github_sbezverk_nfproxy.orig/pkg/proxy/proxy_service.go	2020-07-16 14:24:06.901176302 +0200
-+++ com_github_sbezverk_nfproxy/pkg/proxy/proxy_service.go	2020-07-16 14:08:34.118927035 +0200
-@@ -22,7 +22,6 @@
- 	utilnftables "github.com/google/nftables"
- 	"github.com/sbezverk/nfproxy/pkg/nftables"
- 	v1 "k8s.io/api/core/v1"
--	"k8s.io/apimachinery/pkg/types"
- 	"k8s.io/klog"
- 	utilproxy "k8s.io/kubernetes/pkg/proxy/util"
- 	utilnet "k8s.io/utils/net"
-@@ -44,8 +43,7 @@
- 		stickySeconds := int(*svc.Spec.SessionAffinityConfig.ClientIP.TimeoutSeconds)
- 		klog.V(5).Infof("Service %s/%s has SessionAffinity set for %d seconds", svc.Namespace, svc.Name, stickySeconds)
- 	}
--	svcName := types.NamespacedName{Namespace: svc.Namespace, Name: svc.Name}
--	if utilproxy.ShouldSkipService(svcName, svc) {
-+	if utilproxy.ShouldSkipService(svc) {
- 		return
- 	}
- 	for i := range svc.Spec.Ports {
diff --git a/third_party/go/patches/runc-add-cdeps.patch b/third_party/go/patches/runc-add-cdeps.patch
new file mode 100644
index 0000000..fd15c15
--- /dev/null
+++ b/third_party/go/patches/runc-add-cdeps.patch
@@ -0,0 +1,10 @@
+--- a/libcontainer/seccomp/patchbpf/BUILD.bazel	2022-03-24 20:12:34.325421847 +0100
++++ b/libcontainer/seccomp/patchbpf/BUILD.bazel	2022-03-24 20:12:59.777602881 +0100
+@@ -7,6 +7,7 @@
+         "enosys_unsupported.go",
+     ],
+     cgo = True,
++    cdeps = ["@seccomp"],
+     importpath = "github.com/opencontainers/runc/libcontainer/seccomp/patchbpf",
+     visibility = ["//visibility:public"],
+     deps = select({
diff --git a/third_party/go/repositories.bzl b/third_party/go/repositories.bzl
index e6b69e1..ea1a43e 100644
--- a/third_party/go/repositories.bzl
+++ b/third_party/go/repositories.bzl
@@ -2,2883 +2,5127 @@
 
 def go_repositories():
     go_repository(
-        name = "com_google_cloud_go",
-        importpath = "cloud.google.com/go",
-        version = "v0.51.0",
-        sum = "h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "ag_pack_amqp",
+        importpath = "pack.ag/amqp",
+        sum = "h1:cuNDWLUTbKRtEZwhB0WQBXf9pGbm87pUBXQhvcFxBWg=",
+        version = "v0.11.2",
     )
     go_repository(
-        name = "com_github_azure_go_ansiterm",
-        importpath = "github.com/Azure/go-ansiterm",
-        version = "v0.0.0-20170929234023-d6e3b3328b78",
-        sum = "h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "cc_mvdan_interfacer",
+        importpath = "mvdan.cc/interfacer",
+        sum = "h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I=",
+        version = "v0.0.0-20180901003855-c20040233aed",
     )
     go_repository(
-        name = "com_github_burntsushi_toml",
-        importpath = "github.com/BurntSushi/toml",
-        version = "v0.3.1",
-        sum = "h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "cc_mvdan_lint",
+        importpath = "mvdan.cc/lint",
+        sum = "h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo=",
+        version = "v0.0.0-20170908181259-adc824a0674b",
+    )
+
+    go_repository(
+        name = "co_honnef_go_tools",
+        importpath = "honnef.co/go/tools",
+        sum = "h1:MNh1AVMyVX23VUHE2O27jm6lNj3vjO5DexS4A1xvnzk=",
+        version = "v0.2.2",
     )
     go_repository(
-        name = "com_github_makenowjust_heredoc",
-        importpath = "github.com/MakeNowJust/heredoc",
-        version = "v0.0.0-20170808103936-bb23615498cd",
-        sum = "h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_4d63_gochecknoinits",
+        importpath = "4d63.com/gochecknoinits",
+        sum = "h1:bf5qocEKjrY58JO2GwywfLsb1199lIVs7qHkiplwHy0=",
+        version = "v0.0.0-20200108094044-eb73b47b9fc4",
     )
     go_repository(
-        name = "com_github_masterminds_semver",
-        importpath = "github.com/Masterminds/semver",
-        version = "v1.4.2",
-        sum = "h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_adalogics_go_fuzz_headers",
+        importpath = "github.com/AdaLogics/go-fuzz-headers",
+        sum = "h1:V8krnnfGj4pV65YLUm3C0/8bl7V5Nry2Pwvy3ru/wLc=",
+        version = "v0.0.0-20210715213245-6c3934b029d8",
     )
-    go_repository(
-        name = "com_github_masterminds_sprig",
-        importpath = "github.com/Masterminds/sprig",
-        version = "v2.15.0+incompatible",
-        sum = "h1:0gSxPGWS9PAr7U2NsQ2YQg6juRDINkUyuvbb4b2Xm8w=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
-    go_repository(
-        name = "com_github_microsoft_go_winio",
-        importpath = "github.com/Microsoft/go-winio",
-        version = "v0.4.14",
-        sum = "h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
-    go_repository(
-        name = "com_github_microsoft_hcsshim",
-        importpath = "github.com/Microsoft/hcsshim",
-        version = "v0.8.10",
-        sum = "h1:k5wTrpnVU2/xv8ZuzGkbXVd3js5zJ8RnumPo5RxiIxU=",
-        build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
-    go_repository(
-        name = "com_github_nytimes_gziphandler",
-        importpath = "github.com/NYTimes/gziphandler",
-        version = "v0.0.0-20170623195520-56545f4a5d46",
-        sum = "h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
-    go_repository(
-        name = "com_github_puerkitobio_purell",
-        importpath = "github.com/PuerkitoBio/purell",
-        version = "v1.1.1",
-        sum = "h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
-    go_repository(
-        name = "com_github_puerkitobio_urlesc",
-        importpath = "github.com/PuerkitoBio/urlesc",
-        version = "v0.0.0-20170810143723-de5bf2ad4578",
-        sum = "h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
+
     go_repository(
         name = "com_github_adrg_xdg",
         importpath = "github.com/adrg/xdg",
-        version = "v0.4.0",
         sum = "h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.4.0",
     )
     go_repository(
+        name = "com_github_afex_hystrix_go",
+        importpath = "github.com/afex/hystrix-go",
+        sum = "h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw=",
+        version = "v0.0.0-20180502004556-fa1af6a1f4f5",
+    )
+    go_repository(
+        name = "com_github_agnivade_levenshtein",
+        importpath = "github.com/agnivade/levenshtein",
+        sum = "h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ=",
+        version = "v1.0.1",
+    )
+
+    go_repository(
+        name = "com_github_ajstarks_svgo",
+        importpath = "github.com/ajstarks/svgo",
+        sum = "h1:wVe6/Ea46ZMeNkQjjBW6xcqyQA/j5e0D6GytH95g0gQ=",
+        version = "v0.0.0-20180226025133-644b8db467af",
+    )
+    go_repository(
+        name = "com_github_alcortesm_tgz",
+        importpath = "github.com/alcortesm/tgz",
+        sum = "h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs=",
+        version = "v0.0.0-20161220082320-9c5fe88206d7",
+    )
+    go_repository(
+        name = "com_github_alecthomas_kingpin",
+        importpath = "github.com/alecthomas/kingpin",
+        sum = "h1:5svnBTFgJjZvGKyYBtMB0+m5wvrbUHiqye8wRJMlnYI=",
+        version = "v2.2.6+incompatible",
+    )
+    go_repository(
+        name = "com_github_alecthomas_template",
+        importpath = "github.com/alecthomas/template",
+        sum = "h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=",
+        version = "v0.0.0-20190718012654-fb15b899a751",
+    )
+    go_repository(
+        name = "com_github_alecthomas_units",
+        importpath = "github.com/alecthomas/units",
+        sum = "h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=",
+        version = "v0.0.0-20190924025748-f65c72e2690d",
+    )
+
+    go_repository(
         name = "com_github_alexflint_go_filemutex",
         importpath = "github.com/alexflint/go-filemutex",
-        version = "v0.0.0-20171022225611-72bdc8eae2ae",
-        sum = "h1:AMzIhMUqU3jMrZiTuW0zkYeKlKDAFD+DG20IoO421/Y=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:IAWuUuRYL2hETx5b8vCgwnD+xSdlsTQY6s2JjBsqLdg=",
+        version = "v1.1.0",
     )
     go_repository(
+        name = "com_github_andreyvit_diff",
+        importpath = "github.com/andreyvit/diff",
+        sum = "h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=",
+        version = "v0.0.0-20170406064948-c7f18ee00883",
+    )
+
+    go_repository(
+        name = "com_github_anmitsu_go_shlex",
+        importpath = "github.com/anmitsu/go-shlex",
+        sum = "h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=",
+        version = "v0.0.0-20161002113705-648efa622239",
+    )
+    go_repository(
+        name = "com_github_antihax_optional",
+        importpath = "github.com/antihax/optional",
+        sum = "h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_antlr_antlr4_runtime_go_antlr",
+        importpath = "github.com/antlr/antlr4/runtime/Go/antlr",
+        sum = "h1:GCzyKMDDjSGnlpl3clrdAK7I1AaVoaiKDOYkUzChZzg=",
+        version = "v0.0.0-20210826220005-b48c857c3a0e",
+    )
+
+    go_repository(
         name = "com_github_aokoli_goutils",
         importpath = "github.com/aokoli/goutils",
-        version = "v1.0.1",
         sum = "h1:7fpzNGoJ3VA8qcrm++XEE1QUe0mIwNeLa02Nwq7RDkg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.1",
     )
     go_repository(
+        name = "com_github_apache_beam",
+        importpath = "github.com/apache/beam",
+        sum = "h1:8MOeoZwBgORfaJjrZxpkqJWEIzwupRGLqUqG0/mvEtQ=",
+        version = "v2.32.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_apache_thrift",
+        importpath = "github.com/apache/thrift",
+        sum = "h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI=",
+        version = "v0.13.0",
+    )
+    go_repository(
+        name = "com_github_apex_log",
+        importpath = "github.com/apex/log",
+        sum = "h1:3Zk+boorIQAAGBrHn0JUtAau4ihMamT4WdnfdnXM1zQ=",
+        version = "v1.1.4",
+    )
+    go_repository(
+        name = "com_github_apex_logs",
+        importpath = "github.com/apex/logs",
+        sum = "h1:KmEBVwfDUOTFcBO8cfkJYwdQ5487UZSN+GteOGPmiro=",
+        version = "v0.0.4",
+    )
+    go_repository(
+        name = "com_github_aphistic_golf",
+        importpath = "github.com/aphistic/golf",
+        sum = "h1:2KLQMJ8msqoPHIPDufkxVcoTtcmE5+1sL9950m4R9Pk=",
+        version = "v0.0.0-20180712155816-02c07f170c5a",
+    )
+    go_repository(
+        name = "com_github_aphistic_sweet",
+        importpath = "github.com/aphistic/sweet",
+        sum = "h1:I4z+fAUqvKfvZV/CHi5dV0QuwbmIvYYFDjG0Ss5QpAs=",
+        version = "v0.2.0",
+    )
+    go_repository(
+        name = "com_github_apparentlymart_go_cidr",
+        importpath = "github.com/apparentlymart/go-cidr",
+        sum = "h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU=",
+        version = "v1.1.0",
+    )
+
+    go_repository(
         name = "com_github_armon_circbuf",
         importpath = "github.com/armon/circbuf",
-        version = "v0.0.0-20150827004946-bbbad097214e",
         sum = "h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20150827004946-bbbad097214e",
     )
     go_repository(
+        name = "com_github_armon_consul_api",
+        importpath = "github.com/armon/consul-api",
+        sum = "h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=",
+        version = "v0.0.0-20180202201655-eb2c6b5be1b6",
+    )
+    go_repository(
+        name = "com_github_armon_go_metrics",
+        importpath = "github.com/armon/go-metrics",
+        sum = "h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=",
+        version = "v0.0.0-20180917152333-f0300d1749da",
+    )
+    go_repository(
+        name = "com_github_armon_go_radix",
+        importpath = "github.com/armon/go-radix",
+        sum = "h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=",
+        version = "v0.0.0-20180808171621-7fddfc383310",
+    )
+    go_repository(
+        name = "com_github_armon_go_socks5",
+        importpath = "github.com/armon/go-socks5",
+        sum = "h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=",
+        version = "v0.0.0-20160902184237-e75332964ef5",
+    )
+    go_repository(
+        name = "com_github_aryann_difflib",
+        importpath = "github.com/aryann/difflib",
+        sum = "h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw=",
+        version = "v0.0.0-20170710044230-e206f873d14a",
+    )
+
+    go_repository(
         name = "com_github_asaskevich_govalidator",
         importpath = "github.com/asaskevich/govalidator",
-        version = "v0.0.0-20190424111038-f61b66f89f4a",
         sum = "h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20190424111038-f61b66f89f4a",
     )
     go_repository(
+        name = "com_github_auth0_go_jwt_middleware",
+        importpath = "github.com/auth0/go-jwt-middleware",
+        sum = "h1:/fsQ4vRr4zod1wKReUH+0A3ySRjGiT9G34kypO/EKwI=",
+        version = "v1.0.1",
+    )
+    go_repository(
+        name = "com_github_aws_aws_lambda_go",
+        importpath = "github.com/aws/aws-lambda-go",
+        sum = "h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY=",
+        version = "v1.13.3",
+    )
+    go_repository(
+        name = "com_github_aws_aws_sdk_go",
+        importpath = "github.com/aws/aws-sdk-go",
+        sum = "h1:wOdx6+reSDpUBFEuJDA6edCrojzy8rOtMzhS2rD9+7M=",
+        version = "v1.43.12",
+    )
+    go_repository(
+        name = "com_github_aws_aws_sdk_go_v2",
+        importpath = "github.com/aws/aws-sdk-go-v2",
+        sum = "h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg=",
+        version = "v0.18.0",
+    )
+    go_repository(
+        name = "com_github_aybabtme_rgbterm",
+        importpath = "github.com/aybabtme/rgbterm",
+        sum = "h1:WWB576BN5zNSZc/M9d/10pqEx5VHNhaQ/yOVAkmj5Yo=",
+        version = "v0.0.0-20170906152045-cc83f3b3ce59",
+    )
+    go_repository(
+        name = "com_github_azure_azure_amqp_common_go_v2",
+        importpath = "github.com/Azure/azure-amqp-common-go/v2",
+        sum = "h1:+QbFgmWCnPzdaRMfsI0Yb6GrRdBj5jVL8N3EXuEUcBQ=",
+        version = "v2.1.0",
+    )
+    go_repository(
+        name = "com_github_azure_azure_pipeline_go",
+        importpath = "github.com/Azure/azure-pipeline-go",
+        sum = "h1:OLBdZJ3yvOn2MezlWvbrBMTEUQC72zAftRZOMdj5HYo=",
+        version = "v0.2.1",
+    )
+    go_repository(
+        name = "com_github_azure_azure_sdk_for_go",
+        importpath = "github.com/Azure/azure-sdk-for-go",
+        sum = "h1:FKtAafvCGabH4hzycX4uGq/mSTKN+zaeRTUdnJB5Yag=",
+        version = "v62.1.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_azure_azure_service_bus_go",
+        importpath = "github.com/Azure/azure-service-bus-go",
+        sum = "h1:G1qBLQvHCFDv9pcpgwgFkspzvnGknJRR0PYJ9ytY/JA=",
+        version = "v0.9.1",
+    )
+    go_repository(
+        name = "com_github_azure_azure_storage_blob_go",
+        importpath = "github.com/Azure/azure-storage-blob-go",
+        sum = "h1:53qhf0Oxa0nOjgbDeeYPUeyiNmafAFEY95rZLK0Tj6o=",
+        version = "v0.8.0",
+    )
+
+    go_repository(
+        name = "com_github_azure_go_ansiterm",
+        importpath = "github.com/Azure/go-ansiterm",
+        sum = "h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=",
+        version = "v0.0.0-20210617225240-d185dfc1b5a1",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest",
+        importpath = "github.com/Azure/go-autorest",
+        sum = "h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=",
+        version = "v14.2.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest",
+        importpath = "github.com/Azure/go-autorest/autorest",
+        sum = "h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE=",
+        version = "v0.11.24",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest_adal",
+        importpath = "github.com/Azure/go-autorest/autorest/adal",
+        sum = "h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ=",
+        version = "v0.9.18",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest_azure_auth",
+        importpath = "github.com/Azure/go-autorest/autorest/azure/auth",
+        sum = "h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA=",
+        version = "v0.5.11",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest_azure_cli",
+        importpath = "github.com/Azure/go-autorest/autorest/azure/cli",
+        sum = "h1:0W/yGmFdTIT77fvdlGZ0LMISoLHFJ7Tx4U0yeB+uFs4=",
+        version = "v0.4.5",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest_date",
+        importpath = "github.com/Azure/go-autorest/autorest/date",
+        sum = "h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=",
+        version = "v0.3.0",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest_mocks",
+        importpath = "github.com/Azure/go-autorest/autorest/mocks",
+        sum = "h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk=",
+        version = "v0.4.1",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest_to",
+        importpath = "github.com/Azure/go-autorest/autorest/to",
+        sum = "h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk=",
+        version = "v0.4.0",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_autorest_validation",
+        importpath = "github.com/Azure/go-autorest/autorest/validation",
+        sum = "h1:ISSNzGUh+ZSzizJWOWzs8bwpXIePbGLW4z/AmUFGH5A=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_logger",
+        importpath = "github.com/Azure/go-autorest/logger",
+        sum = "h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=",
+        version = "v0.2.1",
+    )
+    go_repository(
+        name = "com_github_azure_go_autorest_tracing",
+        importpath = "github.com/Azure/go-autorest/tracing",
+        sum = "h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=",
+        version = "v0.6.0",
+    )
+    go_repository(
+        name = "com_github_bazelbuild_bazel_gazelle",
+        importpath = "github.com/bazelbuild/bazel-gazelle",
+        sum = "h1:gPaI2C0hRAhNT4w3bdSCift3nFjq0j07I4bmSDeneA4=",
+        version = "v0.24.0",
+    )
+    go_repository(
+        name = "com_github_bazelbuild_buildtools",
+        importpath = "github.com/bazelbuild/buildtools",
+        sum = "h1:VMFMISXa1RypQNG0j4KVCbsUcrxFudkY/IvWzEJCyO8=",
+        version = "v0.0.0-20211007154642-8dd79e56e98e",
+    )
+    go_repository(
+        name = "com_github_bazelbuild_rules_go",
+        importpath = "github.com/bazelbuild/rules_go",
+        sum = "h1:kX4jVcstqrsRqKPJSn2mq2o+TI21edRzEJSrEOMQtr0=",
+        version = "v0.30.0",
+    )
+    go_repository(
+        name = "com_github_benbjohnson_clock",
+        importpath = "github.com/benbjohnson/clock",
+        sum = "h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=",
+        version = "v1.1.0",
+    )
+
+    go_repository(
         name = "com_github_beorn7_perks",
         importpath = "github.com/beorn7/perks",
-        version = "v1.0.1",
         sum = "h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.1",
     )
     go_repository(
         name = "com_github_bgentry_speakeasy",
         importpath = "github.com/bgentry/speakeasy",
-        version = "v0.1.0",
         sum = "h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.1.0",
     )
     go_repository(
+        name = "com_github_bifurcation_mint",
+        importpath = "github.com/bifurcation/mint",
+        sum = "h1:fUjoj2bT6dG8LoEe+uNsKk8J+sLkDbQkJnB6Z1F02Bc=",
+        version = "v0.0.0-20180715133206-93c51c6ce115",
+    )
+
+    go_repository(
+        name = "com_github_bitly_go_simplejson",
+        importpath = "github.com/bitly/go-simplejson",
+        sum = "h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=",
+        version = "v0.5.0",
+    )
+    go_repository(
+        name = "com_github_bits_and_blooms_bitset",
+        importpath = "github.com/bits-and-blooms/bitset",
+        sum = "h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=",
+        version = "v1.2.0",
+    )
+    go_repository(
+        name = "com_github_bketelsen_crypt",
+        importpath = "github.com/bketelsen/crypt",
+        sum = "h1:w/jqZtC9YD4DS/Vp9GhWfWcCpuAL58oTnLoI8vE9YHU=",
+        version = "v0.0.4",
+    )
+    go_repository(
+        name = "com_github_blakesmith_ar",
+        importpath = "github.com/blakesmith/ar",
+        sum = "h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4=",
+        version = "v0.0.0-20190502131153-809d4375e1fb",
+    )
+
+    go_repository(
         name = "com_github_blang_semver",
         importpath = "github.com/blang/semver",
-        version = "v3.5.0+incompatible",
-        sum = "h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=",
+        version = "v3.5.1+incompatible",
     )
     go_repository(
+        name = "com_github_bmatcuk_doublestar",
+        importpath = "github.com/bmatcuk/doublestar",
+        sum = "h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0=",
+        version = "v1.3.4",
+    )
+    go_repository(
+        name = "com_github_bmizerany_assert",
+        importpath = "github.com/bmizerany/assert",
+        sum = "h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=",
+        version = "v0.0.0-20160611221934-b7ed37b82869",
+    )
+    go_repository(
+        name = "com_github_boltdb_bolt",
+        importpath = "github.com/boltdb/bolt",
+        sum = "h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=",
+        version = "v1.3.1",
+    )
+
+    go_repository(
+        name = "com_github_bshuster_repo_logrus_logstash_hook",
+        importpath = "github.com/bshuster-repo/logrus-logstash-hook",
+        sum = "h1:pgAtgj+A31JBVtEHu2uHuEx0n+2ukqUJnS2vVe5pQNA=",
+        version = "v0.4.1",
+    )
+    go_repository(
+        name = "com_github_buger_jsonparser",
+        importpath = "github.com/buger/jsonparser",
+        sum = "h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=",
+        version = "v1.1.1",
+    )
+    go_repository(
+        name = "com_github_bugsnag_bugsnag_go",
+        importpath = "github.com/bugsnag/bugsnag-go",
+        sum = "h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng=",
+        version = "v0.0.0-20141110184014-b1d153021fcd",
+    )
+    go_repository(
+        name = "com_github_bugsnag_osext",
+        importpath = "github.com/bugsnag/osext",
+        sum = "h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ=",
+        version = "v0.0.0-20130617224835-0dd3f918b21b",
+    )
+    go_repository(
+        name = "com_github_bugsnag_panicwrap",
+        importpath = "github.com/bugsnag/panicwrap",
+        sum = "h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o=",
+        version = "v0.0.0-20151223152923-e2c28503fcd0",
+    )
+
+    go_repository(
+        name = "com_github_burntsushi_toml",
+        importpath = "github.com/BurntSushi/toml",
+        sum = "h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=",
+        version = "v0.4.1",
+    )
+    go_repository(
+        name = "com_github_burntsushi_xgb",
+        importpath = "github.com/BurntSushi/xgb",
+        sum = "h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=",
+        version = "v0.0.0-20160522181843-27f122750802",
+    )
+    go_repository(
+        name = "com_github_caarlos0_ctrlc",
+        importpath = "github.com/caarlos0/ctrlc",
+        sum = "h1:2DtF8GSIcajgffDFJzyG15vO+1PuBWOMUdFut7NnXhw=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_caddyserver_caddy",
         importpath = "github.com/caddyserver/caddy",
-        version = "v1.0.5",
-        sum = "h1:5B1Hs0UF2x2tggr2X9jL2qOZtDXbIWQb9YLbmlxHSuM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:i9gRhBgvc5ifchwWtSe7pDpsdS9+Q0Rw9oYQmYUTw1w=",
+        version = "v1.0.3",
     )
     go_repository(
+        name = "com_github_campoy_unique",
+        importpath = "github.com/campoy/unique",
+        sum = "h1:V9a67dfYqPLAvzk5hMQOXYJlZ4SLIXgyKIE+ZiHzgGQ=",
+        version = "v0.0.0-20180121183637-88950e537e7e",
+    )
+    go_repository(
+        name = "com_github_casbin_casbin_v2",
+        importpath = "github.com/casbin/casbin/v2",
+        sum = "h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g=",
+        version = "v2.1.2",
+    )
+    go_repository(
+        name = "com_github_cavaliercoder_go_cpio",
+        importpath = "github.com/cavaliercoder/go-cpio",
+        sum = "h1:hHg27A0RSSp2Om9lubZpiMgVbvn39bsUmW9U5h0twqc=",
+        version = "v0.0.0-20180626203310-925f9528c45e",
+    )
+
+    go_repository(
         name = "com_github_cavaliergopher_cpio",
         importpath = "github.com/cavaliergopher/cpio",
-        version = "v1.0.0",
-        sum = "h1:r03k5NVg5kuFMbtRnldtwsm/8mt8qmHg/QBl7y/PUiE=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:KQFSeKmZhv0cr+kawA3a0xTQCU4QxXF1vhU7P7av2KM=",
+        version = "v1.0.1",
     )
     go_repository(
         name = "com_github_cenkalti_backoff",
         importpath = "github.com/cenkalti/backoff",
-        version = "v1.1.1-0.20190506075156-2146c9339422",
-        sum = "h1:8eZxmY1yvxGHzdzTEhI09npjMVGzNAdrqzruTX6jcK4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=",
+        version = "v2.2.1+incompatible",
     )
     go_repository(
         name = "com_github_cenkalti_backoff_v4",
         importpath = "github.com/cenkalti/backoff/v4",
-        version = "v4.0.2",
-        sum = "h1:JIufpQLbh4DkbQoii76ItQIUFzevQSqOLZca4eamEDs=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:6Yo7N8UP2K6LWZnW94DLVSSrbobcWdVzAYOisuDPIFo=",
+        version = "v4.1.2",
     )
     go_repository(
+        name = "com_github_census_instrumentation_opencensus_proto",
+        importpath = "github.com/census-instrumentation/opencensus-proto",
+        sum = "h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk=",
+        version = "v0.3.0",
+    )
+    go_repository(
+        name = "com_github_certifi_gocertifi",
+        importpath = "github.com/certifi/gocertifi",
+        sum = "h1:uH66TXeswKn5PW5zdZ39xEwfS9an067BirqA+P4QaLI=",
+        version = "v0.0.0-20200922220541-2c3bb06c6054",
+    )
+
+    go_repository(
+        name = "com_github_cespare_xxhash",
+        importpath = "github.com/cespare/xxhash",
+        sum = "h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=",
+        version = "v1.1.0",
+    )
+
+    go_repository(
         name = "com_github_cespare_xxhash_v2",
         importpath = "github.com/cespare/xxhash/v2",
-        version = "v2.1.1",
-        sum = "h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=",
+        version = "v2.1.2",
     )
     go_repository(
         name = "com_github_chai2010_gettext_go",
         importpath = "github.com/chai2010/gettext-go",
-        version = "v0.0.0-20160711120539-c6fed771bfd5",
         sum = "h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20160711120539-c6fed771bfd5",
     )
+
     go_repository(
         name = "com_github_checkpoint_restore_go_criu_v4",
         importpath = "github.com/checkpoint-restore/go-criu/v4",
-        version = "v4.1.0",
         sum = "h1:WW2B2uxx9KWF6bGlHqhm8Okiafwwx7Y2kcpn8lCpjgo=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v4.1.0",
     )
     go_repository(
+        name = "com_github_checkpoint_restore_go_criu_v5",
+        importpath = "github.com/checkpoint-restore/go-criu/v5",
+        sum = "h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8=",
+        version = "v5.3.0",
+    )
+    go_repository(
+        name = "com_github_cheekybits_genny",
+        importpath = "github.com/cheekybits/genny",
+        sum = "h1:a1zrFsLFac2xoM6zG1u72DWJwZG3ayttYLfmLbxVETk=",
+        version = "v0.0.0-20170328200008-9127e812e1e9",
+    )
+
+    go_repository(
+        name = "com_github_chzyer_logex",
+        importpath = "github.com/chzyer/logex",
+        sum = "h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=",
+        version = "v1.1.10",
+    )
+    go_repository(
+        name = "com_github_chzyer_readline",
+        importpath = "github.com/chzyer/readline",
+        sum = "h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=",
+        version = "v0.0.0-20180603132655-2972be24d48e",
+    )
+    go_repository(
+        name = "com_github_chzyer_test",
+        importpath = "github.com/chzyer/test",
+        sum = "h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=",
+        version = "v0.0.0-20180213035817-a1ea475d72b1",
+    )
+
+    go_repository(
         name = "com_github_cilium_ebpf",
         importpath = "github.com/cilium/ebpf",
-        version = "v0.0.0-20200702112145-1c8d4c9ef775",
-        sum = "h1:cHzBGGVew0ezFsq2grfy2RsB8hO/eNyBgOLHBCqfR1U=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k=",
+        version = "v0.7.0",
     )
     go_repository(
+        name = "com_github_clbanning_x2j",
+        importpath = "github.com/clbanning/x2j",
+        sum = "h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo=",
+        version = "v0.0.0-20191024224557-825249438eec",
+    )
+    go_repository(
+        name = "com_github_client9_misspell",
+        importpath = "github.com/client9/misspell",
+        sum = "h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=",
+        version = "v0.3.4",
+    )
+    go_repository(
+        name = "com_github_clusterhq_flocker_go",
+        importpath = "github.com/clusterhq/flocker-go",
+        sum = "h1:eIHD9GNM3Hp7kcRW5mvcz7WTR3ETeoYYKwpgA04kaXE=",
+        version = "v0.0.0-20160920122132-2b8b7259d313",
+    )
+    go_repository(
+        name = "com_github_cncf_udpa_go",
+        importpath = "github.com/cncf/udpa/go",
+        sum = "h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI=",
+        version = "v0.0.0-20210930031921-04548b0d99d4",
+    )
+    go_repository(
+        name = "com_github_cncf_xds_go",
+        importpath = "github.com/cncf/xds/go",
+        sum = "h1:zH8ljVhhq7yC0MIeUL/IviMtY8hx2mK8cN9wEYb8ggw=",
+        version = "v0.0.0-20211011173535-cb28da3451f1",
+    )
+    go_repository(
+        name = "com_github_cockroachdb_datadriven",
+        importpath = "github.com/cockroachdb/datadriven",
+        sum = "h1:xD/lrqdvwsc+O2bjSSi3YqY73Ke3LAiSCx49aCesA0E=",
+        version = "v0.0.0-20200714090401-bf6692d28da5",
+    )
+    go_repository(
+        name = "com_github_cockroachdb_errors",
+        importpath = "github.com/cockroachdb/errors",
+        sum = "h1:Lap807SXTH5tri2TivECb/4abUkMZC9zRoLarvcKDqs=",
+        version = "v1.2.4",
+    )
+    go_repository(
+        name = "com_github_cockroachdb_logtags",
+        importpath = "github.com/cockroachdb/logtags",
+        sum = "h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY=",
+        version = "v0.0.0-20190617123548-eb05cc24525f",
+    )
+    go_repository(
+        name = "com_github_codahale_hdrhistogram",
+        importpath = "github.com/codahale/hdrhistogram",
+        sum = "h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=",
+        version = "v0.0.0-20161010025455-3a0bb77429bd",
+    )
+    go_repository(
+        name = "com_github_codegangsta_negroni",
+        importpath = "github.com/codegangsta/negroni",
+        sum = "h1:+aYywywx4bnKXWvoWtRfJ91vC59NbEhEY03sZjQhbVY=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_container_storage_interface_spec",
         importpath = "github.com/container-storage-interface/spec",
-        version = "v1.2.0",
-        sum = "h1:bD9KIVgaVKKkQ/UbVUY9kCaH/CJbhNxe0eeB4JeJV2s=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:lvKxe3uLgqQeVQcrnL2CPQKISoKjTJxojEs9cBk+HXo=",
+        version = "v1.5.0",
     )
     go_repository(
+        name = "com_github_containerd_aufs",
+        importpath = "github.com/containerd/aufs",
+        sum = "h1:2oeJiwX5HstO7shSrPZjrohJZLzK36wvpdmzDRkL/LY=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_containerd_btrfs",
         importpath = "github.com/containerd/btrfs",
-        version = "v0.0.0-20201111183144-404b9149801e",
-        sum = "h1:chFw/cg0TDyK43qm8DKbblny2WHc4ML+j1KOkdEp9pI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:osn1exbzdub9L5SouXO5swW4ea/xVdJZ3wokxN5GrnA=",
+        version = "v1.0.0",
     )
     go_repository(
         name = "com_github_containerd_cgroups",
-        importpath = "github.com/containerd/cgroups",
-        version = "v0.0.0-20200710171044-318312a37340",
-        sum = "h1:9atoWyI9RtXFwf7UDbme/6M8Ud0rFrx+Q3ZWgSnsxtw=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "github.com/containerd/cgroups",
+        sum = "h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4=",
+        version = "v1.0.3",
     )
     go_repository(
         name = "com_github_containerd_console",
         importpath = "github.com/containerd/console",
-        version = "v1.0.0",
-        sum = "h1:fU3UuQapBs+zLJu82NhR11Rif1ny2zfMMAyPJzSN5tQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=",
+        version = "v1.0.3",
     )
     go_repository(
         name = "com_github_containerd_containerd",
-        importpath = "github.com/containerd/containerd",
-        version = "v1.4.3",
-        sum = "h1:ijQT13JedHSHrQGWFcGEwzcNKrAGIiZ+jSD5QQG07SY=",
         build_file_proto_mode = "disable",
-        build_tags = [
-            "no_zfs",
-            "no_aufs",
-            "no_devicemapper",
-            "no_btrfs",
+        importpath = "github.com/containerd/containerd",
+        patch_args = ["-p1"],
+        pre_patches = [
+            "//third_party/go/patches:containerd-no-tracing.patch",
         ],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:oa2uY0/0G+JX4X7hpGCYvkp9FjUancz56kSNnb1sG3o=",
+        version = "v1.6.1",
     )
     go_repository(
         name = "com_github_containerd_continuity",
         importpath = "github.com/containerd/continuity",
-        version = "v0.0.0-20200710164510-efbc4488d8fe",
-        sum = "h1:PEmIrUvwG9Yyv+0WKZqjXfSFDeZjs/q15g0m08BYS9k=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
-    go_repository(
-        name = "com_github_containerd_cri",
-        importpath = "github.com/containerd/cri",
-        version = "v1.19.1-0.20201126003523-adc0b6a578ed",
-        sum = "h1:M2yIwrNSafh4rW/yXAiAlSqpydW7vjvDjZ0ClMb+EMQ=",
-        build_file_proto_mode = "disable",
-        patches = [
-            "//third_party/go/patches:containerd-netns-statedir.patch",
-        ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:QSqfxcn8c+12slxwu00AtzXrsami0MJb/MQs9lOLHLA=",
+        version = "v0.2.2",
     )
     go_repository(
         name = "com_github_containerd_fifo",
         importpath = "github.com/containerd/fifo",
-        version = "v0.0.0-20200410184934-f15a3290365b",
-        sum = "h1:qUtCegLdOUVfVJOw+KDg6eJyE1TGvLlkGEd1091kSSQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU=",
+        version = "v1.0.0",
     )
     go_repository(
         name = "com_github_containerd_go_cni",
         importpath = "github.com/containerd/go-cni",
-        version = "v1.0.1",
-        sum = "h1:VXr2EkOPD0v1gu7CKfof6XzEIDzsE/dI9yj/W7PSWLs=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:t0MQwrtM96SH71Md8tH0uKrVE9v+jxkDTbvFSm3B9VE=",
+        version = "v1.1.3",
     )
     go_repository(
         name = "com_github_containerd_go_runc",
         importpath = "github.com/containerd/go-runc",
-        version = "v0.0.0-20200220073739-7016d3ce2328",
-        sum = "h1:PRTagVMbJcCezLcHXe8UJvR1oBzp2lG3CEumeFOLOds=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:oU+lLv1ULm5taqgV/CJivypVODI4SUz1znWjv3nNYS0=",
+        version = "v1.0.0",
     )
     go_repository(
         name = "com_github_containerd_imgcrypt",
         importpath = "github.com/containerd/imgcrypt",
-        version = "v1.0.1",
-        sum = "h1:IyI3IIP4m6zrNFuNFT7HizGVcuD6BYJFpdM1JvPKCbQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:69UKRsA3Q/lAwo2eDzWshdjimqhmprrWXfNtBeO0fBc=",
+        version = "v1.1.3",
     )
     go_repository(
+        name = "com_github_containerd_nri",
+        importpath = "github.com/containerd/nri",
+        sum = "h1:6QioHRlThlKh2RkRTR4kIT3PKAcrLo3gIWnjkM4dQmQ=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_containerd_stargz_snapshotter_estargz",
+        importpath = "github.com/containerd/stargz-snapshotter/estargz",
+        sum = "h1:5e7heayhB7CcgdTkqfZqrNaNv15gABwr3Q2jBTbLlt4=",
+        version = "v0.4.1",
+    )
+
+    go_repository(
         name = "com_github_containerd_ttrpc",
         importpath = "github.com/containerd/ttrpc",
-        version = "v1.0.2-0.20210119122237-222b428f008e",
-        sum = "h1:+Fbjfo26pg4HtkAw9sC/YhUwaAb16355o/J/oHkyCDc=",
         replace = "github.com/monogon-dev/ttrpc",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:+Fbjfo26pg4HtkAw9sC/YhUwaAb16355o/J/oHkyCDc=",
+        version = "v1.0.2-0.20210119122237-222b428f008e",
     )
     go_repository(
         name = "com_github_containerd_typeurl",
         importpath = "github.com/containerd/typeurl",
-        version = "v1.0.1",
-        sum = "h1:PvuK4E3D5S5q6IqsPDCy928FhP0LUIGcmZ/Yhgp5Djw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY=",
+        version = "v1.0.2",
     )
     go_repository(
+        name = "com_github_containerd_zfs",
+        importpath = "github.com/containerd/zfs",
+        sum = "h1:cXLJbx+4Jj7rNsTiqVfm6i+RNLx6FFA2fMmDlEf+Wm8=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_containernetworking_cni",
         importpath = "github.com/containernetworking/cni",
-        version = "v0.8.0",
-        sum = "h1:BT9lpgGoH4jw3lFC7Odz2prU5ruiYKcgAjMCbgybcKI=",
+        patch_args = ["-p1"],
         patches = [
             "//third_party/go/patches:cni-fix-cachepath.patch",
         ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:9OIL/sZmMYDBe+G8svzILAlulUpaDTUjeAbtH/JNLBo=",
+        version = "v1.0.1",
     )
     go_repository(
         name = "com_github_containernetworking_plugins",
         importpath = "github.com/containernetworking/plugins",
-        version = "v0.8.2",
-        sum = "h1:5lnwfsAYO+V7yXhysJKy3E1A2Gy9oVut031zfdOzI9w=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:wwCfYbTCj5FC0EJgyzyjTXmqysOiJE9r712Z+2KVZAk=",
+        version = "v1.0.1",
     )
     go_repository(
         name = "com_github_containers_ocicrypt",
         importpath = "github.com/containers/ocicrypt",
-        version = "v1.0.1",
-        sum = "h1:EToign46OSLTFWnb2oNj9RG3XDnkOX8r28ZIXUuk5Pc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:Ez+GAMP/4GLix5Ywo/fL7O0nY771gsBIigiqUm1aXz0=",
+        version = "v1.1.2",
     )
     go_repository(
+        name = "com_github_coredns_caddy",
+        importpath = "github.com/coredns/caddy",
+        sum = "h1:2eYKZT7i6yxIfGP3qLJoJ7HAsDJqYB+X68g4NYjSrE0=",
+        version = "v1.1.1",
+    )
+
+    go_repository(
         name = "com_github_coredns_coredns",
         importpath = "github.com/coredns/coredns",
-        version = "v1.7.0",
-        sum = "h1:Tm2ZSdhTk+4okgjUp4K6KYzvBI2u34cdD4fKQRC4Eeo=",
+        patch_args = ["-p1"],
         pre_patches = [
             "//third_party/go/patches:coredns-remove-unused-plugins.patch",
         ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:m57Yuyjby5TEwHxKFAjx0q9Tj6r1coH2oRrEO4CVZdM=",
+        version = "v1.9.1",
     )
     go_repository(
+        name = "com_github_coredns_corefile_migration",
+        importpath = "github.com/coredns/corefile-migration",
+        sum = "h1:Tz3WZhoj2NdP8drrQH86NgnCng+VrPjNeg2Oe1ALKag=",
+        version = "v1.0.14",
+    )
+    go_repository(
+        name = "com_github_coreos_bbolt",
+        importpath = "github.com/coreos/bbolt",
+        sum = "h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=",
+        version = "v1.3.2",
+    )
+    go_repository(
+        name = "com_github_coreos_etcd",
+        importpath = "github.com/coreos/etcd",
+        sum = "h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ=",
+        version = "v3.3.13+incompatible",
+    )
+    go_repository(
+        name = "com_github_coreos_go_etcd",
+        importpath = "github.com/coreos/go-etcd",
+        sum = "h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo=",
+        version = "v2.0.0+incompatible",
+    )
+
+    go_repository(
         name = "com_github_coreos_go_iptables",
         importpath = "github.com/coreos/go-iptables",
-        version = "v0.4.2",
-        sum = "h1:KH0EwId05JwWIfb96gWvkiT2cbuOu8ygqUaB+yPAwIg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:is9qnZMPYjLd8LYqmm/qlE+wwEgJIkTYdhV3rfZo4jk=",
+        version = "v0.6.0",
     )
     go_repository(
         name = "com_github_coreos_go_oidc",
         importpath = "github.com/coreos/go-oidc",
-        version = "v2.1.0+incompatible",
         sum = "h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v2.1.0+incompatible",
     )
     go_repository(
         name = "com_github_coreos_go_semver",
         importpath = "github.com/coreos/go-semver",
-        version = "v0.3.0",
         sum = "h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.3.0",
     )
     go_repository(
         name = "com_github_coreos_go_systemd",
         importpath = "github.com/coreos/go-systemd",
-        version = "v0.0.0-20190321100706-95778dfbb74e",
-        sum = "h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:W8b4lQ4tFF21aspRGoBuCNV6V2fFJBF+pm1J6OY8Lys=",
+        version = "v0.0.0-20190620071333-e64a0ec8b42a",
     )
     go_repository(
         name = "com_github_coreos_go_systemd_v22",
         importpath = "github.com/coreos/go-systemd/v22",
-        version = "v22.1.0",
-        sum = "h1:kq/SbG2BCKLkDKkjQf5OWwKWUKj1lgs3lFI4PxnR5lg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=",
+        version = "v22.3.2",
     )
     go_repository(
         name = "com_github_coreos_pkg",
         importpath = "github.com/coreos/pkg",
-        version = "v0.0.0-20180928190104-399ea9e2e55f",
         sum = "h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20180928190104-399ea9e2e55f",
     )
     go_repository(
         name = "com_github_corverroos_commentwrap",
         importpath = "github.com/corverroos/commentwrap",
-        version = "v0.0.0-20191204065359-2926638be44c",
         sum = "h1:toeMwwechJKH0iwOoGJLZK6x42Ba9si+816KxqmgFc8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20191204065359-2926638be44c",
     )
+
     go_repository(
         name = "com_github_cosiner_argv",
         importpath = "github.com/cosiner/argv",
-        version = "v0.0.0-20170225145430-13bacc38a0a5",
-        sum = "h1:rIXlvz2IWiupMFlC45cZCXZFvKX/ExBcSLrDy2G0Lp8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg=",
+        version = "v0.1.0",
     )
     go_repository(
+        name = "com_github_cpuguy83_go_md2man",
+        importpath = "github.com/cpuguy83/go-md2man",
+        sum = "h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=",
+        version = "v1.0.10",
+    )
+
+    go_repository(
         name = "com_github_cpuguy83_go_md2man_v2",
         importpath = "github.com/cpuguy83/go-md2man/v2",
-        version = "v2.0.0",
-        sum = "h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU=",
+        version = "v2.0.1",
     )
     go_repository(
+        name = "com_github_creack_pty",
+        importpath = "github.com/creack/pty",
+        sum = "h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=",
+        version = "v1.1.11",
+    )
+
+    go_repository(
         name = "com_github_cyphar_filepath_securejoin",
         importpath = "github.com/cyphar/filepath-securejoin",
-        version = "v0.2.2",
-        sum = "h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI=",
+        version = "v0.2.3",
     )
     go_repository(
+        name = "com_github_d2g_dhcp4",
+        importpath = "github.com/d2g/dhcp4",
+        sum = "h1:Xo2rK1pzOm0jO6abTPIQwbAmqBIOj132otexc1mmzFc=",
+        version = "v0.0.0-20170904100407-a1d1b6c41b1c",
+    )
+    go_repository(
+        name = "com_github_d2g_dhcp4client",
+        importpath = "github.com/d2g/dhcp4client",
+        sum = "h1:suYBsYZIkSlUMEz4TAYCczKf62IA2UWC+O8+KtdOhCo=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_d2g_dhcp4server",
+        importpath = "github.com/d2g/dhcp4server",
+        sum = "h1:+CpLbZIeUn94m02LdEKPcgErLJ347NUwxPKs5u8ieiY=",
+        version = "v0.0.0-20181031114812-7d4a0a7f59a5",
+    )
+    go_repository(
+        name = "com_github_d2g_hardwareaddr",
+        importpath = "github.com/d2g/hardwareaddr",
+        sum = "h1:itqmmf1PFpC4n5JW+j4BU7X4MTfVurhYRTjODoPb2Y8=",
+        version = "v0.0.0-20190221164911-e7d9fbe030e4",
+    )
+    go_repository(
+        name = "com_github_datadog_datadog_agent_pkg_obfuscate",
+        importpath = "github.com/DataDog/datadog-agent/pkg/obfuscate",
+        sum = "h1:3nVO1nQyh64IUY6BPZUpMYMZ738Pu+LsMt3E0eqqIYw=",
+        version = "v0.0.0-20211129110424-6491aa3bf583",
+    )
+    go_repository(
+        name = "com_github_datadog_datadog_go",
+        importpath = "github.com/DataDog/datadog-go",
+        sum = "h1:qbcKSx29aBLD+5QLvlQZlGmRMF/FfGqFLFev/1TDzRo=",
+        version = "v4.8.2+incompatible",
+    )
+    go_repository(
+        name = "com_github_datadog_datadog_go_v5",
+        importpath = "github.com/DataDog/datadog-go/v5",
+        sum = "h1:UFtEe7662/Qojxkw1d6SboAeA0CPI3naKhVASwFn+04=",
+        version = "v5.0.2",
+    )
+    go_repository(
+        name = "com_github_datadog_gostackparse",
+        importpath = "github.com/DataDog/gostackparse",
+        sum = "h1:jb72P6GFHPHz2W0onsN51cS3FkaMDcjb0QzgxxA4gDk=",
+        version = "v0.5.0",
+    )
+    go_repository(
+        name = "com_github_datadog_sketches_go",
+        importpath = "github.com/DataDog/sketches-go",
+        sum = "h1:chm5KSXO7kO+ywGWJ0Zs6tdmWU8PBXSbywFVciL6BG4=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_davecgh_go_spew",
         importpath = "github.com/davecgh/go-spew",
-        version = "v1.1.1",
         sum = "h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.1.1",
     )
     go_repository(
         name = "com_github_daviddengcn_go_colortext",
         importpath = "github.com/daviddengcn/go-colortext",
-        version = "v0.0.0-20160507010035-511bcaf42ccd",
         sum = "h1:uVsMphB1eRx7xB1njzL3fuMdWRN8HtVzoUOItHMwv5c=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20160507010035-511bcaf42ccd",
     )
     go_repository(
+        name = "com_github_denverdino_aliyungo",
+        importpath = "github.com/denverdino/aliyungo",
+        sum = "h1:p6poVbjHDkKa+wtC8frBMwQtT3BmqGYBjzMwJ63tuR4=",
+        version = "v0.0.0-20190125010748-a747050bb1ba",
+    )
+    go_repository(
+        name = "com_github_derekparker_trie",
+        importpath = "github.com/derekparker/trie",
+        sum = "h1:G765iDCq7bP5opdrPkXk+4V3yfkgV9iGFuheWZ/X/zY=",
+        version = "v0.0.0-20200317170641-1fdf38b7b0e9",
+    )
+    go_repository(
+        name = "com_github_devigned_tab",
+        importpath = "github.com/devigned/tab",
+        sum = "h1:3mD6Kb1mUOYeLpJvTVSDwSg5ZsfSxfvxGRTxRsJsITA=",
+        version = "v0.1.1",
+    )
+    go_repository(
+        name = "com_github_dgraph_io_ristretto",
+        importpath = "github.com/dgraph-io/ristretto",
+        sum = "h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI=",
+        version = "v0.1.0",
+    )
+
+    go_repository(
         name = "com_github_dgrijalva_jwt_go",
         importpath = "github.com/dgrijalva/jwt-go",
-        version = "v3.2.0+incompatible",
         sum = "h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v3.2.0+incompatible",
     )
     go_repository(
+        name = "com_github_dgryski_go_farm",
+        importpath = "github.com/dgryski/go-farm",
+        sum = "h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA=",
+        version = "v0.0.0-20190423205320-6a90982ecee2",
+    )
+    go_repository(
+        name = "com_github_dgryski_go_sip13",
+        importpath = "github.com/dgryski/go-sip13",
+        sum = "h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4=",
+        version = "v0.0.0-20181026042036-e10d5fee7954",
+    )
+    go_repository(
+        name = "com_github_dimchansky_utfbom",
+        importpath = "github.com/dimchansky/utfbom",
+        sum = "h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=",
+        version = "v1.1.1",
+    )
+
+    go_repository(
         name = "com_github_diskfs_go_diskfs",
         importpath = "github.com/diskfs/go-diskfs",
-        version = "v1.2.0",
         sum = "h1:Ow4xorEDw1VNYKbC+SA/qQNwi5gWIwdKUxmUcLFST24=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.2.0",
     )
     go_repository(
+        name = "com_github_dnaeon_go_vcr",
+        importpath = "github.com/dnaeon/go-vcr",
+        sum = "h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY=",
+        version = "v1.0.1",
+    )
+
+    go_repository(
         name = "com_github_dnstap_golang_dnstap",
         importpath = "github.com/dnstap/golang-dnstap",
-        version = "v0.2.0",
-        sum = "h1:+NrmP4mkaTeKYV7xJ5FXpUxRn0RpcgoQcsOCTS8WQPk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:KRHBoURygdGtBjDI2w4HifJfMAhhOqDuktAokaSa234=",
+        version = "v0.4.0",
     )
     go_repository(
+        name = "com_github_docker_cli",
+        importpath = "github.com/docker/cli",
+        sum = "h1:2HQmlpI3yI9deH18Q6xiSOIjXD4sLI55Y/gfpa8/558=",
+        version = "v0.0.0-20191017083524-a8ff7f821017",
+    )
+
+    go_repository(
         name = "com_github_docker_distribution",
         importpath = "github.com/docker/distribution",
-        version = "v2.7.1+incompatible",
-        sum = "h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:l9EaZDICImO1ngI+uTifW+ZYvvz7fKISBAKpg+MbWbY=",
+        version = "v2.8.0+incompatible",
     )
     go_repository(
         name = "com_github_docker_docker",
         importpath = "github.com/docker/docker",
-        version = "v17.12.0-ce-rc1.0.20200310163718-4634ce647cf2+incompatible",
-        sum = "h1:ax4NateCD5bjRTqLvQBlFrSUPOoZRgEXWpJ6Bmu6OO0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:CEeNmFM0QZIsJCZKMkZx0ZcahTiewkrgiwfYD+dfl1U=",
+        version = "v20.10.12+incompatible",
     )
     go_repository(
+        name = "com_github_docker_docker_credential_helpers",
+        importpath = "github.com/docker/docker-credential-helpers",
+        sum = "h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ=",
+        version = "v0.6.3",
+    )
+
+    go_repository(
         name = "com_github_docker_go_connections",
         importpath = "github.com/docker/go-connections",
-        version = "v0.4.0",
         sum = "h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.4.0",
     )
     go_repository(
         name = "com_github_docker_go_events",
         importpath = "github.com/docker/go-events",
-        version = "v0.0.0-20190806004212-e31b211e4f1c",
         sum = "h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20190806004212-e31b211e4f1c",
     )
     go_repository(
         name = "com_github_docker_go_metrics",
         importpath = "github.com/docker/go-metrics",
-        version = "v0.0.1",
         sum = "h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.1",
     )
     go_repository(
         name = "com_github_docker_go_units",
         importpath = "github.com/docker/go-units",
-        version = "v0.4.0",
         sum = "h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.4.0",
     )
+
     go_repository(
-        name = "com_github_docker_spdystream",
-        importpath = "github.com/docker/spdystream",
-        version = "v0.0.0-20160310174837-449fdfce4d96",
-        sum = "h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_docker_libtrust",
+        importpath = "github.com/docker/libtrust",
+        sum = "h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4=",
+        version = "v0.0.0-20150114040149-fa567046d9b1",
     )
+
+    go_repository(
+        name = "com_github_docopt_docopt_go",
+        importpath = "github.com/docopt/docopt-go",
+        sum = "h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=",
+        version = "v0.0.0-20180111231733-ee0de3bc6815",
+    )
+
     go_repository(
         name = "com_github_dustin_go_humanize",
         importpath = "github.com/dustin/go-humanize",
-        version = "v1.0.0",
         sum = "h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
+        name = "com_github_eapache_go_resiliency",
+        importpath = "github.com/eapache/go-resiliency",
+        sum = "h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q=",
+        version = "v1.2.0",
+    )
+    go_repository(
+        name = "com_github_eapache_go_xerial_snappy",
+        importpath = "github.com/eapache/go-xerial-snappy",
+        sum = "h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=",
+        version = "v0.0.0-20180814174437-776d5712da21",
+    )
+    go_repository(
+        name = "com_github_eapache_queue",
+        importpath = "github.com/eapache/queue",
+        sum = "h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "com_github_edsrzf_mmap_go",
+        importpath = "github.com/edsrzf/mmap-go",
+        sum = "h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_elazarl_goproxy",
         importpath = "github.com/elazarl/goproxy",
-        version = "v0.0.0-20180725130230-947c36da3153",
         sum = "h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20180725130230-947c36da3153",
     )
     go_repository(
         name = "com_github_emicklei_go_restful",
         importpath = "github.com/emicklei/go-restful",
-        version = "v2.9.5+incompatible",
         sum = "h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v2.9.5+incompatible",
     )
     go_repository(
+        name = "com_github_emirpasic_gods",
+        importpath = "github.com/emirpasic/gods",
+        sum = "h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=",
+        version = "v1.12.0",
+    )
+    go_repository(
+        name = "com_github_envoyproxy_go_control_plane",
+        importpath = "github.com/envoyproxy/go-control-plane",
+        sum = "h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs=",
+        version = "v0.9.10-0.20210907150352-cf90f659a021",
+    )
+    go_repository(
+        name = "com_github_envoyproxy_protoc_gen_validate",
+        importpath = "github.com/envoyproxy/protoc-gen-validate",
+        sum = "h1:bV5JGEB1ouEzZa0hgVDFFiClrUEuGWRaAc/3mxR2QK0=",
+        version = "v0.3.0-java",
+    )
+    go_repository(
+        name = "com_github_etcd_io_gofail",
+        importpath = "github.com/etcd-io/gofail",
+        sum = "h1:Y2I0lxOttdUKz+hNaIdG3FtjuQrTmwXun1opRV65IZc=",
+        version = "v0.0.0-20190801230047-ad7f989257ca",
+    )
+
+    go_repository(
         name = "com_github_euank_go_kmsg_parser",
         importpath = "github.com/euank/go-kmsg-parser",
-        version = "v2.0.0+incompatible",
         sum = "h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v2.0.0+incompatible",
     )
     go_repository(
         name = "com_github_evanphx_json_patch",
         importpath = "github.com/evanphx/json-patch",
-        version = "v4.9.0+incompatible",
-        sum = "h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84=",
+        version = "v4.12.0+incompatible",
     )
     go_repository(
         name = "com_github_exponent_io_jsonpath",
         importpath = "github.com/exponent-io/jsonpath",
-        version = "v0.0.0-20151013193312-d6023ce2651d",
         sum = "h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20151013193312-d6023ce2651d",
     )
     go_repository(
+        name = "com_github_fanliao_go_promise",
+        importpath = "github.com/fanliao/go-promise",
+        sum = "h1:0eU/faU2oDIB2BkQVM02hgRLJjGzzUuRf19HUhp0394=",
+        version = "v0.0.0-20141029170127-1890db352a72",
+    )
+
+    go_repository(
         name = "com_github_farsightsec_golang_framestream",
         importpath = "github.com/farsightsec/golang-framestream",
-        version = "v0.0.0-20190425193708-fa4b164d59b8",
-        sum = "h1:/iPdQppoAsTfML+yqFSq2EBChiEMnRkh5WvhFgtWwcU=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:/spFQHucTle/ZIPkYqrfshQqPe2VQEzesH243TjIwqA=",
+        version = "v0.3.0",
     )
     go_repository(
         name = "com_github_fatih_camelcase",
         importpath = "github.com/fatih/camelcase",
-        version = "v1.0.0",
         sum = "h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
         name = "com_github_fatih_color",
         importpath = "github.com/fatih/color",
-        version = "v1.7.0",
-        sum = "h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=",
+        version = "v1.9.0",
     )
     go_repository(
+        name = "com_github_felixge_httpsnoop",
+        importpath = "github.com/felixge/httpsnoop",
+        sum = "h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=",
+        version = "v1.0.1",
+    )
+
+    go_repository(
         name = "com_github_flynn_go_shlex",
         importpath = "github.com/flynn/go-shlex",
-        version = "v0.0.0-20150515145356-3f9db97f8568",
         sum = "h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20150515145356-3f9db97f8568",
     )
     go_repository(
+        name = "com_github_fogleman_gg",
+        importpath = "github.com/fogleman/gg",
+        sum = "h1:WXb3TSNmHp2vHoCroCIB1foO/yQ36swABL8aOVeDpgg=",
+        version = "v1.2.1-0.20190220221249-0403632d5b90",
+    )
+    go_repository(
+        name = "com_github_form3tech_oss_jwt_go",
+        importpath = "github.com/form3tech-oss/jwt-go",
+        sum = "h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c=",
+        version = "v3.2.3+incompatible",
+    )
+    go_repository(
+        name = "com_github_fortytw2_leaktest",
+        importpath = "github.com/fortytw2/leaktest",
+        sum = "h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "com_github_franela_goblin",
+        importpath = "github.com/franela/goblin",
+        sum = "h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw=",
+        version = "v0.0.0-20200105215937-c9ffbefa60db",
+    )
+    go_repository(
+        name = "com_github_franela_goreq",
+        importpath = "github.com/franela/goreq",
+        sum = "h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54=",
+        version = "v0.0.0-20171204163338-bcd34c9993f8",
+    )
+    go_repository(
+        name = "com_github_frankban_quicktest",
+        importpath = "github.com/frankban/quicktest",
+        sum = "h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY=",
+        version = "v1.11.3",
+    )
+    go_repository(
+        name = "com_github_fsnotify_fsnotify",
+        importpath = "github.com/fsnotify/fsnotify",
+        sum = "h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=",
+        version = "v1.5.1",
+    )
+
+    go_repository(
         name = "com_github_fullsailor_pkcs7",
         importpath = "github.com/fullsailor/pkcs7",
-        version = "v0.0.0-20180613152042-8306686428a5",
-        sum = "h1:v+vxrd9XS8uWIXG2RK0BHCnXc30qLVQXVqbK+IOmpXk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:RDBNVkRviHZtvDvId8XSGPu3rmpmSe+wKRcEWNgsfWU=",
+        version = "v0.0.0-20190404230743-d7302db945fa",
     )
     go_repository(
+        name = "com_github_fullstorydev_grpcurl",
+        importpath = "github.com/fullstorydev/grpcurl",
+        sum = "h1:2II5e++aFnctnPJir3GL6cPSwF69Ord1u/9O+fv1vrI=",
+        version = "v1.8.2",
+    )
+    go_repository(
+        name = "com_github_fvbommel_sortorder",
+        importpath = "github.com/fvbommel/sortorder",
+        sum = "h1:dSnXLt4mJYH25uDDGa3biZNQsozaUWDSWeKJ0qqFfzE=",
+        version = "v1.0.1",
+    )
+    go_repository(
+        name = "com_github_garyburd_redigo",
+        importpath = "github.com/garyburd/redigo",
+        sum = "h1:LofdAjjjqCSXMwLGgOgnE+rdPuvX9DxCqaHwKy7i/ko=",
+        version = "v0.0.0-20150301180006-535138d7bcd7",
+    )
+    go_repository(
+        name = "com_github_getkin_kin_openapi",
+        importpath = "github.com/getkin/kin-openapi",
+        sum = "h1:j77zg3Ec+k+r+GA3d8hBoXpAc6KX9TbBPrwQGBIy2sY=",
+        version = "v0.76.0",
+    )
+    go_repository(
+        name = "com_github_getsentry_raven_go",
+        importpath = "github.com/getsentry/raven-go",
+        sum = "h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs=",
+        version = "v0.2.0",
+    )
+
+    go_repository(
         name = "com_github_ghodss_yaml",
         importpath = "github.com/ghodss/yaml",
-        version = "v1.0.0",
         sum = "h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
+        name = "com_github_gin_contrib_sse",
+        importpath = "github.com/gin-contrib/sse",
+        sum = "h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_gin_gonic_gin",
+        importpath = "github.com/gin-gonic/gin",
+        sum = "h1:fi+bqFAx/oLK54somfCtEZs9HeH1LHVoEPUgARpTqyc=",
+        version = "v1.5.0",
+    )
+    go_repository(
+        name = "com_github_gliderlabs_ssh",
+        importpath = "github.com/gliderlabs/ssh",
+        sum = "h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=",
+        version = "v0.2.2",
+    )
+    go_repository(
+        name = "com_github_globalsign_mgo",
+        importpath = "github.com/globalsign/mgo",
+        sum = "h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=",
+        version = "v0.0.0-20181015135952-eeefdecb41b8",
+    )
+    go_repository(
+        name = "com_github_go_acme_lego",
+        importpath = "github.com/go-acme/lego",
+        sum = "h1:5fNN9yRQfv8ymH3DSsxla+4aYeQt2IgfZqHKVnK8f0s=",
+        version = "v2.5.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_go_bindata_go_bindata",
+        importpath = "github.com/go-bindata/go-bindata",
+        sum = "h1:tR4f0e4VTO7LK6B2YWyAoVEzG9ByG1wrXB4TL9+jiYg=",
+        version = "v3.1.1+incompatible",
+    )
+
+    go_repository(
         name = "com_github_go_delve_delve",
         importpath = "github.com/go-delve/delve",
-        version = "v1.4.1",
-        sum = "h1:kZs0umEv+VKnK84kY9/ZXWrakdLTeRTyYjFdgLelZCQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+        patch_args = ["-p1"],
+        patches = [
+            "//third_party/go/patches:delve-fix-cgo.patch",
         ],
+        sum = "h1:gsRTPR3Yi61RpeuCFvJb6vIxB3xABx6pnNKGISxdsSU=",
+        version = "v1.8.2",
     )
     go_repository(
+        name = "com_github_go_delve_liner",
+        importpath = "github.com/go-delve/liner",
+        sum = "h1:0hGpZh6vjI6LFTlXuHFCX9PebaluzDzps2owdMrrSuk=",
+        version = "v1.2.2-1",
+    )
+    go_repository(
+        name = "com_github_go_errors_errors",
+        importpath = "github.com/go-errors/errors",
+        sum = "h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=",
+        version = "v1.0.1",
+    )
+    go_repository(
+        name = "com_github_go_gl_glfw",
+        importpath = "github.com/go-gl/glfw",
+        sum = "h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=",
+        version = "v0.0.0-20190409004039-e6da0acd62b1",
+    )
+    go_repository(
+        name = "com_github_go_gl_glfw_v3_3_glfw",
+        importpath = "github.com/go-gl/glfw/v3.3/glfw",
+        sum = "h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=",
+        version = "v0.0.0-20200222043503-6f7a984d4dc4",
+    )
+    go_repository(
+        name = "com_github_go_ini_ini",
+        importpath = "github.com/go-ini/ini",
+        sum = "h1:Mujh4R/dH6YL8bxuISne3xX2+qcQ9p0IxKAP6ExWoUo=",
+        version = "v1.25.4",
+    )
+    go_repository(
+        name = "com_github_go_kit_kit",
+        importpath = "github.com/go-kit/kit",
+        sum = "h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo=",
+        version = "v0.10.0",
+    )
+    go_repository(
+        name = "com_github_go_kit_log",
+        importpath = "github.com/go-kit/log",
+        sum = "h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ=",
+        version = "v0.1.0",
+    )
+
+    go_repository(
+        name = "com_github_go_logfmt_logfmt",
+        importpath = "github.com/go-logfmt/logfmt",
+        sum = "h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4=",
+        version = "v0.5.0",
+    )
+
+    go_repository(
         name = "com_github_go_logr_logr",
         importpath = "github.com/go-logr/logr",
-        version = "v0.2.0",
-        sum = "h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs=",
+        version = "v1.2.2",
     )
     go_repository(
+        name = "com_github_go_logr_stdr",
+        importpath = "github.com/go-logr/stdr",
+        sum = "h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=",
+        version = "v1.2.2",
+    )
+    go_repository(
+        name = "com_github_go_logr_zapr",
+        importpath = "github.com/go-logr/zapr",
+        sum = "h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk=",
+        version = "v1.2.0",
+    )
+
+    go_repository(
         name = "com_github_go_openapi_analysis",
         importpath = "github.com/go-openapi/analysis",
-        version = "v0.19.5",
         sum = "h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.19.5",
     )
     go_repository(
         name = "com_github_go_openapi_errors",
         importpath = "github.com/go-openapi/errors",
-        version = "v0.19.2",
         sum = "h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.19.2",
     )
     go_repository(
         name = "com_github_go_openapi_jsonpointer",
         importpath = "github.com/go-openapi/jsonpointer",
-        version = "v0.19.3",
-        sum = "h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=",
+        version = "v0.19.5",
     )
     go_repository(
         name = "com_github_go_openapi_jsonreference",
         importpath = "github.com/go-openapi/jsonreference",
-        version = "v0.19.3",
-        sum = "h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM=",
+        version = "v0.19.5",
     )
     go_repository(
         name = "com_github_go_openapi_loads",
         importpath = "github.com/go-openapi/loads",
-        version = "v0.19.4",
         sum = "h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.19.4",
     )
     go_repository(
         name = "com_github_go_openapi_runtime",
         importpath = "github.com/go-openapi/runtime",
-        version = "v0.19.4",
         sum = "h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.19.4",
     )
     go_repository(
         name = "com_github_go_openapi_spec",
         importpath = "github.com/go-openapi/spec",
-        version = "v0.19.3",
         sum = "h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.19.3",
     )
     go_repository(
         name = "com_github_go_openapi_strfmt",
         importpath = "github.com/go-openapi/strfmt",
-        version = "v0.19.3",
         sum = "h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.19.3",
     )
     go_repository(
         name = "com_github_go_openapi_swag",
         importpath = "github.com/go-openapi/swag",
-        version = "v0.19.5",
-        sum = "h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng=",
+        version = "v0.19.14",
     )
     go_repository(
         name = "com_github_go_openapi_validate",
         importpath = "github.com/go-openapi/validate",
-        version = "v0.19.5",
         sum = "h1:QhCBKRYqZR+SKo4gl1lPhPahope8/RLt6EVgY8X80w0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.19.5",
     )
     go_repository(
+        name = "com_github_go_ozzo_ozzo_validation",
+        importpath = "github.com/go-ozzo/ozzo-validation",
+        sum = "h1:sUy/in/P6askYr16XJgTKq/0SZhiWsdg4WZGaLsGQkM=",
+        version = "v3.5.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_go_playground_locales",
+        importpath = "github.com/go-playground/locales",
+        sum = "h1:2FITxuFt/xuCNP1Acdhv62OzaCiviiE4kotfhkmOqEc=",
+        version = "v0.12.1",
+    )
+    go_repository(
+        name = "com_github_go_playground_universal_translator",
+        importpath = "github.com/go-playground/universal-translator",
+        sum = "h1:X++omBR/4cE2MNg91AoC3rmGrCjJ8eAeUP/K/EKx4DM=",
+        version = "v0.16.0",
+    )
+    go_repository(
+        name = "com_github_go_redis_redis",
+        importpath = "github.com/go-redis/redis",
+        sum = "h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg=",
+        version = "v6.15.9+incompatible",
+    )
+    go_repository(
+        name = "com_github_go_sql_driver_mysql",
+        importpath = "github.com/go-sql-driver/mysql",
+        sum = "h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=",
+        version = "v1.6.0",
+    )
+
+    go_repository(
         name = "com_github_go_stack_stack",
         importpath = "github.com/go-stack/stack",
-        version = "v1.8.0",
         sum = "h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.8.0",
     )
+
+    go_repository(
+        name = "com_github_godbus_dbus",
+        importpath = "github.com/godbus/dbus",
+        sum = "h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8=",
+        version = "v0.0.0-20190422162347-ade71ed3457e",
+    )
+
     go_repository(
         name = "com_github_godbus_dbus_v5",
         importpath = "github.com/godbus/dbus/v5",
-        version = "v5.0.3",
-        sum = "h1:ZqHaoEF7TBzh4jzPmqVhE/5A1z9of6orkAe5uHoAeME=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro=",
+        version = "v5.0.6",
     )
     go_repository(
         name = "com_github_gofrs_flock",
         importpath = "github.com/gofrs/flock",
-        version = "v0.8.0",
         sum = "h1:MSdYClljsF3PbENUUEx85nkWfJSGfzYI9yEBZOJz6CY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.8.0",
     )
     go_repository(
+        name = "com_github_gofrs_uuid",
+        importpath = "github.com/gofrs/uuid",
+        sum = "h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=",
+        version = "v4.0.0+incompatible",
+    )
+
+    go_repository(
         name = "com_github_gogo_googleapis",
-        importpath = "github.com/gogo/googleapis",
-        version = "v1.3.2",
-        sum = "h1:kX1es4djPJrsDhY7aZKJy7aZasdcB5oSOEphMjSB53c=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "github.com/gogo/googleapis",
+        sum = "h1:zgVt4UpGxcqVOw97aRGxT4svlcmdK35fynLNctY32zI=",
+        version = "v1.4.0",
     )
     go_repository(
         name = "com_github_gogo_protobuf",
+        build_file_proto_mode = "disable",
         importpath = "github.com/gogo/protobuf",
-        version = "v1.3.1",
-        sum = "h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=",
+        version = "v1.3.2",
     )
     go_repository(
+        name = "com_github_golang_freetype",
+        importpath = "github.com/golang/freetype",
+        sum = "h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=",
+        version = "v0.0.0-20170609003504-e2365dfdc4a0",
+    )
+    go_repository(
+        name = "com_github_golang_glog",
+        importpath = "github.com/golang/glog",
+        sum = "h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_golang_groupcache",
         importpath = "github.com/golang/groupcache",
-        version = "v0.0.0-20191227052852-215e87163ea7",
-        sum = "h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=",
+        version = "v0.0.0-20210331224755-41bb18bfe9da",
     )
     go_repository(
+        name = "com_github_golang_jwt_jwt_v4",
+        importpath = "github.com/golang-jwt/jwt/v4",
+        sum = "h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU=",
+        version = "v4.2.0",
+    )
+    go_repository(
+        name = "com_github_golang_mock",
+        importpath = "github.com/golang/mock",
+        sum = "h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=",
+        version = "v1.6.0",
+    )
+    go_repository(
+        name = "com_github_golang_protobuf",
+        importpath = "github.com/golang/protobuf",
+        sum = "h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=",
+        version = "v1.5.2",
+    )
+    go_repository(
+        name = "com_github_golang_snappy",
+        importpath = "github.com/golang/snappy",
+        sum = "h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=",
+        version = "v0.0.4",
+    )
+
+    go_repository(
+        name = "com_github_golangplus_testing",
+        importpath = "github.com/golangplus/testing",
+        sum = "h1:KhcknUwkWHKZPbFy2P7jH5LKJ3La+0ZeknkkmrSgqb0=",
+        version = "v0.0.0-20180327235837-af21d9c3145e",
+    )
+
+    go_repository(
         name = "com_github_google_btree",
         importpath = "github.com/google/btree",
-        version = "v1.0.0",
-        sum = "h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=",
+        version = "v1.0.1",
     )
     go_repository(
         name = "com_github_google_cadvisor",
         importpath = "github.com/google/cadvisor",
-        version = "v0.37.3",
-        sum = "h1:qsH/np74sg1/tEe+bn+e2JIPFxrw6En3gCVuQdolc74=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:523mBK94XHKAsU1TIQl/tYoPyYpWQdalf2CQ8Gv2Xek=",
+        version = "v0.44.0",
     )
     go_repository(
+        name = "com_github_google_cel_go",
+        build_naming_convention = "go_default_library",
+        importpath = "github.com/google/cel-go",
+        patch_args = ["-p1"],
+        pre_patches = [
+            "//third_party/go/patches:cel-fix-antlr.patch",
+            "//third_party/go/patches:cel-fix-googleapis.patch",
+        ],
+        sum = "h1:u1hg7lcZ/XWw2d3aV1jFS30ijQQ6q0/h1C2ZBeBD1gY=",
+        version = "v0.9.0",
+    )
+    go_repository(
+        name = "com_github_google_cel_spec",
+        importpath = "github.com/google/cel-spec",
+        sum = "h1:xuthJSiJGoSzq+lVEBIW1MTpaaZXknMCYC4WzVAWOsE=",
+        version = "v0.6.0",
+    )
+
+    go_repository(
         name = "com_github_google_certificate_transparency_go",
         importpath = "github.com/google/certificate-transparency-go",
-        version = "v1.1.0",
-        sum = "h1:10MlrYzh5wfkToxWI4yJzffsxLfxcEDlOATMx/V9Kzw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:4hE0GEId6NAW28dFpC+LrRGwQX5dtmXQGDbg8+/MZOM=",
+        version = "v1.1.2",
     )
     go_repository(
+        name = "com_github_google_go_attestation",
+        importpath = "github.com/google/go-attestation",
+        sum = "h1:hHhPfym1TZm88L7sWmdc/moikHt80ls6mEiU+QvhRvk=",
+        version = "v0.4.3",
+    )
+
+    go_repository(
         name = "com_github_google_go_cmp",
         importpath = "github.com/google/go-cmp",
-        version = "v0.4.0",
-        sum = "h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=",
+        version = "v0.5.7",
     )
     go_repository(
+        name = "com_github_google_go_containerregistry",
+        importpath = "github.com/google/go-containerregistry",
+        sum = "h1:/+mFTs4AlwsJ/mJe8NDtKb7BxLtbZFpcn8vDsneEkwQ=",
+        version = "v0.5.1",
+    )
+
+    go_repository(
         name = "com_github_google_go_dap",
         importpath = "github.com/google/go-dap",
-        version = "v0.2.0",
-        sum = "h1:whjIGQRumwbR40qRU7CEKuFLmePUUc2s4Nt9DoXXxWk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:Y1RHGUtv3R8y6sXq2dtGRMYrFB2hSqyFVws7jucrzX4=",
+        version = "v0.6.0",
     )
+
+    go_repository(
+        name = "com_github_google_go_github_v28",
+        importpath = "github.com/google/go-github/v28",
+        sum = "h1:kORf5ekX5qwXO2mGzXXOjMe/g6ap8ahVe0sBEulhSxo=",
+        version = "v28.1.1",
+    )
+    go_repository(
+        name = "com_github_google_go_licenses",
+        importpath = "github.com/google/go-licenses",
+        sum = "h1:JtmsUf+m+KdwCOgLG578T0Mvd0+l+dezPrJh5KYnXZg=",
+        version = "v0.0.0-20210329231322-ce1d9163b77d",
+    )
+    go_repository(
+        name = "com_github_google_go_querystring",
+        importpath = "github.com/google/go-querystring",
+        sum = "h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_google_go_replayers_grpcreplay",
+        importpath = "github.com/google/go-replayers/grpcreplay",
+        sum = "h1:eNb1y9rZFmY4ax45uEEECSa8fsxGRU+8Bil52ASAwic=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_google_go_replayers_httpreplay",
+        importpath = "github.com/google/go-replayers/httpreplay",
+        sum = "h1:AX7FUb4BjrrzNvblr/OlgwrmFiep6soj5K2QSDW7BGk=",
+        version = "v0.1.0",
+    )
+
     go_repository(
         name = "com_github_google_go_tpm",
         importpath = "github.com/google/go-tpm",
-        version = "v0.1.2-0.20190725015402-ae6dd98980d4",
-        sum = "h1:GNNkIb6NSjYfw+KvgUFW590mcgsSFihocSrbXct1sEw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:P/ZFNBZYXRxc+z7i5uyd8VP7MaDteuLZInzrH2idRGo=",
+        version = "v0.3.3",
     )
     go_repository(
         name = "com_github_google_go_tpm_tools",
         importpath = "github.com/google/go-tpm-tools",
-        version = "v0.0.0-20190731025042-f8c04ff88181",
-        sum = "h1:1Y5W2uh6E7I6hhI6c0WVSbV+Ae15uhemqi3RvSgtZpk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+        patch_args = ["-p1"],
+        pre_patches = [
+            "//third_party/go/patches:go-tpm-tools-fix-proto-paths.patch",
         ],
+        sum = "h1:gcjAoa/iK98ybY41Icn2zkGlJLhVg44nOmI6fFju5IY=",
+        version = "v0.3.5",
     )
     go_repository(
+        name = "com_github_google_go_tspi",
+        importpath = "github.com/google/go-tspi",
+        sum = "h1:LnpS22S8V1HqbxjveESGAazHhi6BX9SwI2Rij7qZcXQ=",
+        version = "v0.2.1-0.20190423175329-115dea689aad",
+    )
+
+    go_repository(
         name = "com_github_google_gofuzz",
         importpath = "github.com/google/gofuzz",
-        version = "v1.1.0",
-        sum = "h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=",
+        version = "v1.2.0",
     )
     go_repository(
         name = "com_github_google_gopacket",
         importpath = "github.com/google/gopacket",
-        version = "v1.1.17",
-        sum = "h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbBY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=",
+        version = "v1.1.19",
     )
     go_repository(
-        name = "com_github_google_gvisor",
-        importpath = "github.com/google/gvisor",
-        version = "v0.0.0-20211029210316-b822923b706d",
-        sum = "h1:DLypxrLRMq0P4f96vlutTfJpM5/Y8q6rDafgBU1pxAs=",
-        patches = [
-            "//third_party/go/patches:gvisor.patch",
-            "//third_party/go/patches:gvisor-build-against-newer-runtime-specs.patch",
-            "//third_party/go/patches:gvisor-cgroup-fix.patch",
-        ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_google_licenseclassifier",
+        importpath = "github.com/google/licenseclassifier",
+        sum = "h1:EfzlPF5MRmoWsCGvSkPZ1Nh9uVzHf4FfGnDQ6CXd2NA=",
+        version = "v0.0.0-20210325184830-bb04aff29e72",
     )
     go_repository(
+        name = "com_github_google_martian",
+        importpath = "github.com/google/martian",
+        sum = "h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE=",
+        version = "v2.1.1-0.20190517191504-25dcb96d9e51+incompatible",
+    )
+    go_repository(
+        name = "com_github_google_martian_v3",
+        importpath = "github.com/google/martian/v3",
+        sum = "h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ=",
+        version = "v3.2.1",
+    )
+
+    go_repository(
         name = "com_github_google_nftables",
         importpath = "github.com/google/nftables",
-        version = "v0.0.0-20200316075819-7127d9d22474",
-        sum = "h1:D6bN82zzK92ywYsE+Zjca7EHZCRZbcNTU3At7WdxQ+c=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:UpwO4s4fHzquJ3SjQpZhcg1fga6RA4PsrKBGOj/ilvg=",
+        version = "v0.0.0-20220221214239-211824995dcb",
     )
     go_repository(
+        name = "com_github_google_pprof",
+        importpath = "github.com/google/pprof",
+        sum = "h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=",
+        version = "v0.0.0-20210720184732-4bb14d4b1be1",
+    )
+    go_repository(
+        name = "com_github_google_renameio",
+        importpath = "github.com/google/renameio",
+        sum = "h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_google_rpmpack",
+        importpath = "github.com/google/rpmpack",
+        sum = "h1:BW6OvS3kpT5UEPbCZ+KyX/OB4Ks9/MNMhWjqPPkZxsE=",
+        version = "v0.0.0-20191226140753-aa36bfddb3a0",
+    )
+    go_repository(
+        name = "com_github_google_shlex",
+        importpath = "github.com/google/shlex",
+        sum = "h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=",
+        version = "v0.0.0-20191202100458-e7afc7fbc510",
+    )
+
+    go_repository(
         name = "com_github_google_subcommands",
         importpath = "github.com/google/subcommands",
-        version = "v1.0.2-0.20190508160503-636abe8753b8",
         sum = "h1:8nlgEAjIalk6uj/CGKCdOO8CQqTeysvcW4RFZ6HbkGM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.2-0.20190508160503-636abe8753b8",
     )
     go_repository(
+        name = "com_github_google_trillian",
+        importpath = "github.com/google/trillian",
+        sum = "h1:Wa7XHCVzl8RLsUOr2SzoHUZHYjv0G8KMO1xZGamYkbA=",
+        version = "v1.4.0",
+    )
+
+    go_repository(
         name = "com_github_google_uuid",
         importpath = "github.com/google/uuid",
-        version = "v1.1.1",
-        sum = "h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=",
+        version = "v1.3.0",
     )
     go_repository(
-        name = "com_github_googleapis_gnostic",
-        importpath = "github.com/googleapis/gnostic",
-        version = "v0.4.1",
-        sum = "h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I=",
-        build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_google_wire",
+        importpath = "github.com/google/wire",
+        sum = "h1:imGQZGEVEHpje5056+K+cgdO72p0LQv2xIIFXNGUf60=",
+        version = "v0.3.0",
     )
     go_repository(
+        name = "com_github_googleapis_gax_go",
+        importpath = "github.com/googleapis/gax-go",
+        sum = "h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww=",
+        version = "v2.0.2+incompatible",
+    )
+    go_repository(
+        name = "com_github_googleapis_gax_go_v2",
+        importpath = "github.com/googleapis/gax-go/v2",
+        sum = "h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU=",
+        version = "v2.1.1",
+    )
+
+    go_repository(
+        name = "com_github_googleapis_gnostic",
+        build_file_proto_mode = "disable",
+        importpath = "github.com/googleapis/gnostic",
+        sum = "h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=",
+        version = "v0.5.5",
+    )
+    go_repository(
+        name = "com_github_googlecloudplatform_cloudsql_proxy",
+        importpath = "github.com/GoogleCloudPlatform/cloudsql-proxy",
+        sum = "h1:sTOp2Ajiew5XIH92YSdwhYc+bgpUX5j5TKK/Ac8Saw8=",
+        version = "v0.0.0-20191009163259-e802c2cb94ae",
+    )
+    go_repository(
+        name = "com_github_googlecloudplatform_k8s_cloud_provider",
+        importpath = "github.com/GoogleCloudPlatform/k8s-cloud-provider",
+        sum = "h1:FCalqNmQYSMCCHoCtAxZN/ZgLc8ufgeo5Z3wrIoJZvs=",
+        version = "v1.16.1-0.20210702024009-ea6160c1d0e3",
+    )
+    go_repository(
+        name = "com_github_gophercloud_gophercloud",
+        importpath = "github.com/gophercloud/gophercloud",
+        sum = "h1:P/nh25+rzXouhytV2pUHBb65fnds26Ghl8/391+sT5o=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_gopherjs_gopherjs",
+        importpath = "github.com/gopherjs/gopherjs",
+        sum = "h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=",
+        version = "v0.0.0-20200217142428-fce0ec30dd00",
+    )
+    go_repository(
+        name = "com_github_gordonklaus_ineffassign",
+        importpath = "github.com/gordonklaus/ineffassign",
+        sum = "h1:vc7Dmrk4JwS0ZPS6WZvWlwDflgDTA26jItmbSj83nug=",
+        version = "v0.0.0-20200309095847-7953dde2c7bf",
+    )
+    go_repository(
+        name = "com_github_goreleaser_goreleaser",
+        importpath = "github.com/goreleaser/goreleaser",
+        sum = "h1:3ua5fSYvc/doKd5sVTzvXbyqW6H/eyuvy46woLrUFic=",
+        version = "v0.134.0",
+    )
+    go_repository(
+        name = "com_github_goreleaser_nfpm",
+        importpath = "github.com/goreleaser/nfpm",
+        sum = "h1:AEnu9XVmupRDTR930Z2rAs31Mj6sLIPxFcR9ESYvgDA=",
+        version = "v1.2.1",
+    )
+    go_repository(
+        name = "com_github_gorilla_context",
+        importpath = "github.com/gorilla/context",
+        sum = "h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=",
+        version = "v1.1.1",
+    )
+    go_repository(
+        name = "com_github_gorilla_handlers",
+        importpath = "github.com/gorilla/handlers",
+        sum = "h1:893HsJqtxp9z1SF76gg6hY70hRY1wVlTSnC/h1yUDCo=",
+        version = "v0.0.0-20150720190736-60c7bfde3e33",
+    )
+    go_repository(
+        name = "com_github_gorilla_mux",
+        importpath = "github.com/gorilla/mux",
+        sum = "h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=",
+        version = "v1.8.0",
+    )
+    go_repository(
+        name = "com_github_gorilla_securecookie",
+        importpath = "github.com/gorilla/securecookie",
+        sum = "h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=",
+        version = "v1.1.1",
+    )
+    go_repository(
+        name = "com_github_gorilla_sessions",
+        importpath = "github.com/gorilla/sessions",
+        sum = "h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=",
+        version = "v1.2.1",
+    )
+
+    go_repository(
         name = "com_github_gorilla_websocket",
         importpath = "github.com/gorilla/websocket",
-        version = "v1.4.0",
-        sum = "h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=",
+        version = "v1.4.2",
     )
+
     go_repository(
         name = "com_github_gregjones_httpcache",
         importpath = "github.com/gregjones/httpcache",
-        version = "v0.0.0-20180305231024-9cad4c3443a7",
         sum = "h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20180305231024-9cad4c3443a7",
     )
     go_repository(
         name = "com_github_grpc_ecosystem_go_grpc_middleware",
         importpath = "github.com/grpc-ecosystem/go-grpc-middleware",
-        version = "v1.0.1-0.20190118093823-f849b5445de4",
-        sum = "h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=",
+        version = "v1.3.0",
     )
     go_repository(
         name = "com_github_grpc_ecosystem_go_grpc_prometheus",
         importpath = "github.com/grpc-ecosystem/go-grpc-prometheus",
-        version = "v1.2.0",
         sum = "h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.2.0",
     )
     go_repository(
         name = "com_github_grpc_ecosystem_grpc_gateway",
+        build_naming_convention = "go_default_library",
         importpath = "github.com/grpc-ecosystem/grpc-gateway",
-        version = "v1.9.5",
-        sum = "h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=",
+        version = "v1.16.0",
     )
     go_repository(
         name = "com_github_grpc_ecosystem_grpc_opentracing",
         importpath = "github.com/grpc-ecosystem/grpc-opentracing",
-        version = "v0.0.0-20180507213350-8e809c8a8645",
         sum = "h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20180507213350-8e809c8a8645",
+    )
+
+    go_repository(
+        name = "com_github_hashicorp_consul_api",
+        importpath = "github.com/hashicorp/consul/api",
+        sum = "h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78=",
+        version = "v1.3.0",
     )
     go_repository(
-        name = "com_github_grpc_grpc",
-        importpath = "github.com/grpc/grpc",
-        version = "v1.29.1",
-        sum = "h1:oDOYav2X6WE7espebiQ//iP9N+/gGygUv6XuuyvkFMc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_hashicorp_consul_sdk",
+        importpath = "github.com/hashicorp/consul/sdk",
+        sum = "h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ=",
+        version = "v0.3.0",
     )
+
     go_repository(
         name = "com_github_hashicorp_errwrap",
         importpath = "github.com/hashicorp/errwrap",
-        version = "v1.0.0",
-        sum = "h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=",
+        version = "v1.1.0",
     )
     go_repository(
+        name = "com_github_hashicorp_go_cleanhttp",
+        importpath = "github.com/hashicorp/go-cleanhttp",
+        sum = "h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM=",
+        version = "v0.5.1",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_hclog",
+        importpath = "github.com/hashicorp/go-hclog",
+        sum = "h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI=",
+        version = "v0.9.2",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_immutable_radix",
+        importpath = "github.com/hashicorp/go-immutable-radix",
+        sum = "h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_msgpack",
+        importpath = "github.com/hashicorp/go-msgpack",
+        sum = "h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4=",
+        version = "v0.5.3",
+    )
+
+    go_repository(
         name = "com_github_hashicorp_go_multierror",
         importpath = "github.com/hashicorp/go-multierror",
-        version = "v1.0.0",
-        sum = "h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=",
+        version = "v1.1.1",
     )
     go_repository(
+        name = "com_github_hashicorp_go_net",
+        importpath = "github.com/hashicorp/go.net",
+        sum = "h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw=",
+        version = "v0.0.1",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_retryablehttp",
+        importpath = "github.com/hashicorp/go-retryablehttp",
+        sum = "h1:BbgctKO892xEyOXnGiaAwIoSq1QZ/SS4AhjoAh9DnfY=",
+        version = "v0.6.4",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_rootcerts",
+        importpath = "github.com/hashicorp/go-rootcerts",
+        sum = "h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_sockaddr",
+        importpath = "github.com/hashicorp/go-sockaddr",
+        sum = "h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_syslog",
+        importpath = "github.com/hashicorp/go-syslog",
+        sum = "h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_uuid",
+        importpath = "github.com/hashicorp/go-uuid",
+        sum = "h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=",
+        version = "v1.0.2",
+    )
+    go_repository(
+        name = "com_github_hashicorp_go_version",
+        importpath = "github.com/hashicorp/go-version",
+        sum = "h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E=",
+        version = "v1.2.0",
+    )
+
+    go_repository(
         name = "com_github_hashicorp_golang_lru",
         importpath = "github.com/hashicorp/golang-lru",
-        version = "v0.5.3",
-        sum = "h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=",
+        version = "v0.5.4",
     )
     go_repository(
         name = "com_github_hashicorp_hcl",
         importpath = "github.com/hashicorp/hcl",
-        version = "v1.0.0",
         sum = "h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
+        name = "com_github_hashicorp_logutils",
+        importpath = "github.com/hashicorp/logutils",
+        sum = "h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_hashicorp_mdns",
+        importpath = "github.com/hashicorp/mdns",
+        sum = "h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_hashicorp_memberlist",
+        importpath = "github.com/hashicorp/memberlist",
+        sum = "h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M=",
+        version = "v0.1.3",
+    )
+    go_repository(
+        name = "com_github_hashicorp_serf",
+        importpath = "github.com/hashicorp/serf",
+        sum = "h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=",
+        version = "v0.8.2",
+    )
+    go_repository(
+        name = "com_github_heketi_heketi",
+        importpath = "github.com/heketi/heketi",
+        sum = "h1:X4DBFPzcyWZWhia32d94UhDECQJHH0M5kpRb1gxxUHk=",
+        version = "v10.3.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_heketi_tests",
+        importpath = "github.com/heketi/tests",
+        sum = "h1:oJ/NLadJn5HoxvonA6VxG31lg0d6XOURNA09BTtM4fY=",
+        version = "v0.0.0-20151005000721-f3775cbcefd6",
+    )
+
+    go_repository(
         name = "com_github_hpcloud_tail",
         importpath = "github.com/hpcloud/tail",
-        version = "v1.0.0",
         sum = "h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
         name = "com_github_huandu_xstrings",
         importpath = "github.com/huandu/xstrings",
-        version = "v1.0.0",
-        sum = "h1:pO2K/gKgKaat5LdpAhxhluX2GPQMaI3W5FUz/I/UnWk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0=",
+        version = "v1.2.0",
     )
     go_repository(
+        name = "com_github_hudl_fargo",
+        importpath = "github.com/hudl/fargo",
+        sum = "h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "com_github_hugelgupf_socketpair",
+        importpath = "github.com/hugelgupf/socketpair",
+        sum = "h1:/jC7qQFrv8CrSJVmaolDVOxTfS9kc36uB6H40kdbQq8=",
+        version = "v0.0.0-20190730060125-05d35a94e714",
+    )
+    go_repository(
+        name = "com_github_ianlancetaylor_demangle",
+        importpath = "github.com/ianlancetaylor/demangle",
+        sum = "h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI=",
+        version = "v0.0.0-20200824232613-28f6c0f3b639",
+    )
+
+    go_repository(
         name = "com_github_imdario_mergo",
         importpath = "github.com/imdario/mergo",
-        version = "v0.3.7",
-        sum = "h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=",
+        version = "v0.3.12",
     )
     go_repository(
         name = "com_github_inconshreveable_mousetrap",
         importpath = "github.com/inconshreveable/mousetrap",
-        version = "v1.0.0",
         sum = "h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
+        name = "com_github_influxdata_influxdb1_client",
+        importpath = "github.com/influxdata/influxdb1-client",
+        sum = "h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA=",
+        version = "v0.0.0-20191209144304-8bf82d3c094d",
+    )
+
+    go_repository(
         name = "com_github_infobloxopen_go_trees",
         importpath = "github.com/infobloxopen/go-trees",
-        version = "v0.0.0-20190313150506-2af4e13f9062",
-        sum = "h1:d3VSuNcgTCn21dNMm8g412Fck/XWFmMj4nJhhHT7ZZ0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:w66aaP3c6SIQ0pi3QH1Tb4AMO3aWoEPxd1CNvLphbkA=",
+        version = "v0.0.0-20200715205103-96a057b8dfb9",
     )
     go_repository(
         name = "com_github_insomniacslk_dhcp",
         importpath = "github.com/insomniacslk/dhcp",
-        version = "v0.0.0-20200922210017-67c425063dca",
-        sum = "h1:zhwTlFGM8ZkD5J/c43IWkxSJQWzhm20QWou8zajbCck=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:efcJu2Vzz6DoSq245deWNzTz6l/gsqdphm3FjmI88/g=",
+        version = "v0.0.0-20220119180841-3c283ff8b7dd",
     )
     go_repository(
+        name = "com_github_intel_goresctrl",
+        importpath = "github.com/intel/goresctrl",
+        sum = "h1:JyZjdMQu9Kl/wLXe9xA6s1X+tF6BWsQPFGJMEeCfWzE=",
+        version = "v0.2.0",
+    )
+    go_repository(
+        name = "com_github_ishidawataru_sctp",
+        importpath = "github.com/ishidawataru/sctp",
+        sum = "h1:qPmlgoeRS18y2dT+iAH5vEKZgIqgiPi2Y8UCu/b7Aq8=",
+        version = "v0.0.0-20190723014705-7c296d48a2b5",
+    )
+
+    go_repository(
         name = "com_github_j_keck_arping",
         importpath = "github.com/j-keck/arping",
-        version = "v0.0.0-20160618110441-2cf9dc699c56",
-        sum = "h1:742eGXur0715JMq73aD95/FU0XpVKXqNuTnEfXsLOYQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:hlLhuXgQkzIJTZuhMigvG/CuSkaspeaD9hRDk2zuiMI=",
+        version = "v1.0.2",
     )
     go_repository(
+        name = "com_github_jarcoal_httpmock",
+        importpath = "github.com/jarcoal/httpmock",
+        sum = "h1:cHtVEcTxRSX4J0je7mWPfc9BpDpqzXSJ5HbymZmyHck=",
+        version = "v1.0.5",
+    )
+    go_repository(
+        name = "com_github_jbenet_go_context",
+        importpath = "github.com/jbenet/go-context",
+        sum = "h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=",
+        version = "v0.0.0-20150711004518-d14ea06fba99",
+    )
+    go_repository(
+        name = "com_github_jcmturner_aescts_v2",
+        importpath = "github.com/jcmturner/aescts/v2",
+        sum = "h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=",
+        version = "v2.0.0",
+    )
+    go_repository(
+        name = "com_github_jcmturner_dnsutils_v2",
+        importpath = "github.com/jcmturner/dnsutils/v2",
+        sum = "h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=",
+        version = "v2.0.0",
+    )
+    go_repository(
+        name = "com_github_jcmturner_gofork",
+        importpath = "github.com/jcmturner/gofork",
+        sum = "h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_jcmturner_goidentity_v6",
+        importpath = "github.com/jcmturner/goidentity/v6",
+        sum = "h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=",
+        version = "v6.0.1",
+    )
+    go_repository(
+        name = "com_github_jcmturner_gokrb5_v8",
+        importpath = "github.com/jcmturner/gokrb5/v8",
+        sum = "h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA=",
+        version = "v8.4.2",
+    )
+    go_repository(
+        name = "com_github_jcmturner_rpc_v2",
+        importpath = "github.com/jcmturner/rpc/v2",
+        sum = "h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=",
+        version = "v2.0.3",
+    )
+    go_repository(
+        name = "com_github_jeffashton_win_pdh",
+        importpath = "github.com/JeffAshton/win_pdh",
+        sum = "h1:UKkYhof1njT1/xq4SEg5z+VpTgjmNeHwPGRQl7takDI=",
+        version = "v0.0.0-20161109143554-76bb4ee9f0ab",
+    )
+
+    go_repository(
+        name = "com_github_jessevdk_go_flags",
+        importpath = "github.com/jessevdk/go-flags",
+        sum = "h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=",
+        version = "v1.4.0",
+    )
+    go_repository(
+        name = "com_github_jgautheron_goconst",
+        importpath = "github.com/jgautheron/goconst",
+        sum = "h1:D5s1HIu80AcMGcqmk7fNIVptmAubVHHaj3v5Upex6Zs=",
+        version = "v0.0.0-20170703170152-9740945f5dcb",
+    )
+    go_repository(
+        name = "com_github_jhump_protoreflect",
+        importpath = "github.com/jhump/protoreflect",
+        sum = "h1:npqHz788dryJiR/l6K/RUQAyh2SwV91+d1dnh4RjO9w=",
+        version = "v1.9.0",
+    )
+    go_repository(
+        name = "com_github_jimstudt_http_authentication",
+        importpath = "github.com/jimstudt/http-authentication",
+        sum = "h1:BcF8coBl0QFVhe8vAMMlD+CV8EISiu9MGKLoj6ZEyJA=",
+        version = "v0.0.0-20140401203705-3eca13d6893a",
+    )
+
+    go_repository(
+        name = "com_github_jmespath_go_jmespath",
+        importpath = "github.com/jmespath/go-jmespath",
+        sum = "h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=",
+        version = "v0.4.0",
+    )
+    go_repository(
+        name = "com_github_jmespath_go_jmespath_internal_testify",
+        importpath = "github.com/jmespath/go-jmespath/internal/testify",
+        sum = "h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=",
+        version = "v1.5.1",
+    )
+    go_repository(
+        name = "com_github_joefitzgerald_rainbow_reporter",
+        importpath = "github.com/joefitzgerald/rainbow-reporter",
+        sum = "h1:AuMG652zjdzI0YCCnXAqATtRBpGXMcAnrajcaTrSeuo=",
+        version = "v0.1.0",
+    )
+
+    go_repository(
         name = "com_github_joho_godotenv",
         importpath = "github.com/joho/godotenv",
-        version = "v1.3.0",
-        sum = "h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=",
+        version = "v1.4.0",
     )
     go_repository(
         name = "com_github_jonboulle_clockwork",
         importpath = "github.com/jonboulle/clockwork",
-        version = "v0.1.0",
-        sum = "h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ=",
+        version = "v0.2.2",
     )
     go_repository(
+        name = "com_github_josharian_intern",
+        importpath = "github.com/josharian/intern",
+        sum = "h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_josharian_native",
+        importpath = "github.com/josharian/native",
+        sum = "h1:Ts/E8zCSEsG17dUqv7joXJFybuMLjQfWE04tsBODTxk=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_jpillora_backoff",
+        importpath = "github.com/jpillora/backoff",
+        sum = "h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_jsimonetti_rtnetlink",
+        importpath = "github.com/jsimonetti/rtnetlink",
+        sum = "h1:N527AHMa793TP5z5GNAn/VLPzlc0ewzWdeP/25gDfgQ=",
+        version = "v0.0.0-20211022192332-93da33804786",
+    )
+
+    go_repository(
         name = "com_github_json_iterator_go",
         importpath = "github.com/json-iterator/go",
-        version = "v1.1.10",
-        sum = "h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=",
+        version = "v1.1.12",
     )
     go_repository(
+        name = "com_github_jstemmer_go_junit_report",
+        importpath = "github.com/jstemmer/go-junit-report",
+        sum = "h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=",
+        version = "v0.9.1",
+    )
+    go_repository(
+        name = "com_github_jtolds_gls",
+        importpath = "github.com/jtolds/gls",
+        sum = "h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=",
+        version = "v4.20.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_juju_ratelimit",
+        importpath = "github.com/juju/ratelimit",
+        sum = "h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY=",
+        version = "v1.0.1",
+    )
+    go_repository(
+        name = "com_github_julienschmidt_httprouter",
+        importpath = "github.com/julienschmidt/httprouter",
+        sum = "h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "com_github_jung_kurt_gofpdf",
+        importpath = "github.com/jung-kurt/gofpdf",
+        sum = "h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0=",
+        version = "v1.0.3-0.20190309125859-24315acbbda5",
+    )
+
+    go_repository(
         name = "com_github_karrick_godirwalk",
         importpath = "github.com/karrick/godirwalk",
-        version = "v1.7.5",
-        sum = "h1:VbzFqwXwNbAZoA6W5odrLr+hKK197CcENcPh6E/gJ0M=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw=",
+        version = "v1.16.1",
+    )
+
+    go_repository(
+        name = "com_github_kevinburke_ssh_config",
+        importpath = "github.com/kevinburke/ssh_config",
+        sum = "h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY=",
+        version = "v0.0.0-20190725054713-01f96b0aa0cd",
     )
     go_repository(
-        name = "com_github_kevinburke_go_bindata",
-        importpath = "github.com/kevinburke/go-bindata",
-        version = "v3.16.0+incompatible",
-        sum = "h1:TFzFZop2KxGhqNwsyjgmIh5JOrpG940MZlm5gNbxr8g=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_kisielk_errcheck",
+        importpath = "github.com/kisielk/errcheck",
+        sum = "h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=",
+        version = "v1.5.0",
     )
     go_repository(
+        name = "com_github_kisielk_gotool",
+        importpath = "github.com/kisielk/gotool",
+        sum = "h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_klauspost_compress",
+        importpath = "github.com/klauspost/compress",
+        sum = "h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=",
+        version = "v1.13.6",
+    )
+    go_repository(
+        name = "com_github_klauspost_cpuid",
+        importpath = "github.com/klauspost/cpuid",
+        sum = "h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE=",
+        version = "v1.2.0",
+    )
+
+    go_repository(
+        name = "com_github_knetic_govaluate",
+        importpath = "github.com/Knetic/govaluate",
+        sum = "h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw=",
+        version = "v3.0.1-0.20171022003610-9aa49832a739+incompatible",
+    )
+
+    go_repository(
         name = "com_github_koneu_natend",
         importpath = "github.com/koneu/natend",
-        version = "v0.0.0-20150829182554-ec0926ea948d",
         sum = "h1:MFX8DxRnKMY/2M3H61iSsVbo/n3h0MWGmWNN1UViOU0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20150829182554-ec0926ea948d",
     )
     go_repository(
         name = "com_github_konsorten_go_windows_terminal_sequences",
         importpath = "github.com/konsorten/go-windows-terminal-sequences",
-        version = "v1.0.3",
         sum = "h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.3",
     )
     go_repository(
+        name = "com_github_kr_fs",
+        importpath = "github.com/kr/fs",
+        sum = "h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_kr_logfmt",
+        importpath = "github.com/kr/logfmt",
+        sum = "h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=",
+        version = "v0.0.0-20140226030751-b84e30acd515",
+    )
+
+    go_repository(
         name = "com_github_kr_pretty",
         importpath = "github.com/kr/pretty",
-        version = "v0.1.0",
-        sum = "h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=",
+        version = "v0.2.1",
     )
     go_repository(
         name = "com_github_kr_pty",
         importpath = "github.com/kr/pty",
-        version = "v1.1.4-0.20190131011033-7dc38fb350b1",
-        sum = "h1:zc0R6cOw98cMengLA0fvU55mqbnN7sd/tBMLzSejp+M=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=",
+        version = "v1.1.8",
     )
     go_repository(
+        name = "com_github_kr_text",
+        importpath = "github.com/kr/text",
+        sum = "h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=",
+        version = "v0.2.0",
+    )
+    go_repository(
+        name = "com_github_kylelemons_godebug",
+        importpath = "github.com/kylelemons/godebug",
+        sum = "h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "com_github_leodido_go_urn",
+        importpath = "github.com/leodido/go-urn",
+        sum = "h1:Sm1gr51B1kKyfD2BlRcLSiEkffoG96g6TPv6eRoEiB8=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "com_github_letsencrypt_pkcs11key_v4",
+        importpath = "github.com/letsencrypt/pkcs11key/v4",
+        sum = "h1:qLc/OznH7xMr5ARJgkZCCWk+EomQkiNTOoOF5LAgagc=",
+        version = "v4.0.0",
+    )
+    go_repository(
+        name = "com_github_lib_pq",
+        importpath = "github.com/lib/pq",
+        sum = "h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg=",
+        version = "v1.8.0",
+    )
+    go_repository(
+        name = "com_github_libopenstorage_openstorage",
+        importpath = "github.com/libopenstorage/openstorage",
+        sum = "h1:GLPam7/0mpdP8ZZtKjbfcXJBTIA/T1O6CBErVEFEyIM=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_liggitt_tabwriter",
         importpath = "github.com/liggitt/tabwriter",
-        version = "v0.0.0-20181228230101-89fcab3d43de",
         sum = "h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20181228230101-89fcab3d43de",
     )
     go_repository(
+        name = "com_github_lightstep_lightstep_tracer_common_golang_gogo",
+        importpath = "github.com/lightstep/lightstep-tracer-common/golang/gogo",
+        sum = "h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo=",
+        version = "v0.0.0-20190605223551-bc2310a04743",
+    )
+    go_repository(
+        name = "com_github_lightstep_lightstep_tracer_go",
+        importpath = "github.com/lightstep/lightstep-tracer-go",
+        sum = "h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk=",
+        version = "v0.18.1",
+    )
+    go_repository(
+        name = "com_github_linuxkit_virtsock",
+        importpath = "github.com/linuxkit/virtsock",
+        sum = "h1:jUp75lepDg0phMUJBCmvaeFDldD2N3S1lBuPwUTszio=",
+        version = "v0.0.0-20201010232012-f8cee7dfc7a3",
+    )
+
+    go_repository(
         name = "com_github_lithammer_dedent",
         importpath = "github.com/lithammer/dedent",
-        version = "v1.1.0",
         sum = "h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.1.0",
     )
+
+    go_repository(
+        name = "com_github_lpabon_godbc",
+        importpath = "github.com/lpabon/godbc",
+        sum = "h1:ilqjArN1UOENJJdM34I2YHKmF/B0gGq4VLoSGy9iAao=",
+        version = "v0.1.1",
+    )
+    go_repository(
+        name = "com_github_lucas_clemente_aes12",
+        importpath = "github.com/lucas-clemente/aes12",
+        sum = "h1:sSeNEkJrs+0F9TUau0CgWTTNEwF23HST3Eq0A+QIx+A=",
+        version = "v0.0.0-20171027163421-cd47fb39b79f",
+    )
+    go_repository(
+        name = "com_github_lucas_clemente_quic_clients",
+        importpath = "github.com/lucas-clemente/quic-clients",
+        sum = "h1:/P9n0nICT/GnQJkZovtBqridjxU0ao34m7DpMts79qY=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_lucas_clemente_quic_go",
+        importpath = "github.com/lucas-clemente/quic-go",
+        sum = "h1:iQtTSZVbd44k94Lu0U16lLBIG3lrnjDvQongjPd4B/s=",
+        version = "v0.10.2",
+    )
+    go_repository(
+        name = "com_github_lucas_clemente_quic_go_certificates",
+        importpath = "github.com/lucas-clemente/quic-go-certificates",
+        sum = "h1:zqEC1GJZFbGZA0tRyNZqRjep92K5fujFtFsu5ZW7Aug=",
+        version = "v0.0.0-20160823095156-d2f86524cced",
+    )
+
+    go_repository(
+        name = "com_github_lyft_protoc_gen_validate",
+        importpath = "github.com/lyft/protoc-gen-validate",
+        sum = "h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA=",
+        version = "v0.0.13",
+    )
+
     go_repository(
         name = "com_github_magiconair_properties",
         importpath = "github.com/magiconair/properties",
-        version = "v1.8.1",
-        sum = "h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=",
+        version = "v1.8.5",
     )
     go_repository(
         name = "com_github_mailru_easyjson",
         importpath = "github.com/mailru/easyjson",
-        version = "v0.7.0",
-        sum = "h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=",
+        version = "v0.7.7",
     )
     go_repository(
+        name = "com_github_makenowjust_heredoc",
+        importpath = "github.com/MakeNowJust/heredoc",
+        sum = "h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU=",
+        version = "v0.0.0-20170808103936-bb23615498cd",
+    )
+    go_repository(
+        name = "com_github_marstr_guid",
+        importpath = "github.com/marstr/guid",
+        sum = "h1:/M4H/1G4avsieL6BbUwCOBzulmoeKVP5ux/3mQNnbyI=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "com_github_marten_seemann_qtls",
+        importpath = "github.com/marten-seemann/qtls",
+        sum = "h1:0yWJ43C62LsZt08vuQJDK1uC1czUc3FJeCLPoNAI4vA=",
+        version = "v0.2.3",
+    )
+
+    go_repository(
+        name = "com_github_masterminds_goutils",
+        importpath = "github.com/Masterminds/goutils",
+        sum = "h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=",
+        version = "v1.1.0",
+    )
+
+    go_repository(
+        name = "com_github_masterminds_semver",
+        importpath = "github.com/Masterminds/semver",
+        sum = "h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=",
+        version = "v1.5.0",
+    )
+    go_repository(
+        name = "com_github_masterminds_semver_v3",
+        importpath = "github.com/Masterminds/semver/v3",
+        sum = "h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk=",
+        version = "v3.1.0",
+    )
+
+    go_repository(
+        name = "com_github_masterminds_sprig",
+        importpath = "github.com/Masterminds/sprig",
+        sum = "h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=",
+        version = "v2.22.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_mattbaird_jsonpatch",
+        importpath = "github.com/mattbaird/jsonpatch",
+        sum = "h1:+J2gw7Bw77w/fbK7wnNJJDKmw1IbWft2Ul5BzrG1Qm8=",
+        version = "v0.0.0-20171005235357-81af80346b1a",
+    )
+
+    go_repository(
         name = "com_github_mattn_go_colorable",
         importpath = "github.com/mattn/go-colorable",
-        version = "v0.0.9",
-        sum = "h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=",
+        version = "v0.1.4",
     )
     go_repository(
+        name = "com_github_mattn_go_ieproxy",
+        importpath = "github.com/mattn/go-ieproxy",
+        sum = "h1:HfxbT6/JcvIljmERptWhwa8XzP7H3T+Z2N26gTsaDaA=",
+        version = "v0.0.0-20190610004146-91bb50d98149",
+    )
+
+    go_repository(
         name = "com_github_mattn_go_isatty",
         importpath = "github.com/mattn/go-isatty",
-        version = "v0.0.4",
-        sum = "h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=",
+        version = "v0.0.11",
     )
     go_repository(
         name = "com_github_mattn_go_runewidth",
         importpath = "github.com/mattn/go-runewidth",
-        version = "v0.0.2",
-        sum = "h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=",
+        version = "v0.0.13",
     )
     go_repository(
         name = "com_github_mattn_go_shellwords",
         importpath = "github.com/mattn/go-shellwords",
-        version = "v1.0.11",
-        sum = "h1:vCoR9VPpsk/TZFW2JwK5I9S0xdrtUq2bph6/YjEPnaw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk=",
+        version = "v1.0.12",
     )
     go_repository(
+        name = "com_github_mattn_go_zglob",
+        importpath = "github.com/mattn/go-zglob",
+        sum = "h1:xsEx/XUoVlI6yXjqBK062zYhRTZltCNmYPx6v+8DNaY=",
+        version = "v0.0.1",
+    )
+
+    go_repository(
         name = "com_github_matttproud_golang_protobuf_extensions",
         importpath = "github.com/matttproud/golang_protobuf_extensions",
-        version = "v1.0.1",
-        sum = "h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=",
+        version = "v1.0.2-0.20181231171920-c182affec369",
     )
     go_repository(
+        name = "com_github_maxbrunsfeld_counterfeiter_v6",
+        importpath = "github.com/maxbrunsfeld/counterfeiter/v6",
+        sum = "h1:g+4J5sZg6osfvEfkRZxJ1em0VT95/UOZgi/l7zi1/oE=",
+        version = "v6.2.2",
+    )
+
+    go_repository(
         name = "com_github_mdlayher_ethernet",
         importpath = "github.com/mdlayher/ethernet",
-        version = "v0.0.0-20190606142754-0394541c37b7",
         sum = "h1:lez6TS6aAau+8wXUP3G9I3TGlmPFEq2CTxBaRqY6AGE=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20190606142754-0394541c37b7",
     )
     go_repository(
+        name = "com_github_mdlayher_ethtool",
+        importpath = "github.com/mdlayher/ethtool",
+        sum = "h1:tHdB+hQRHU10CfcK0furo6rSNgZ38JT8uPh70c/pFD8=",
+        version = "v0.0.0-20211028163843-288d040e9d60",
+    )
+
+    go_repository(
         name = "com_github_mdlayher_genetlink",
         importpath = "github.com/mdlayher/genetlink",
-        version = "v1.0.0",
-        sum = "h1:OoHN1OdyEIkScEmRgxLEe2M9U8ClMytqA5niynLtfj0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:4yrIkRV5Wfk1WfpWTcoOlGmsWgQj3OtQN9ZsbrE+XtU=",
+        version = "v1.2.0",
     )
     go_repository(
         name = "com_github_mdlayher_netlink",
         importpath = "github.com/mdlayher/netlink",
-        version = "v1.1.0",
-        sum = "h1:mpdLgm+brq10nI9zM1BpX1kpDbh3NLl3RSnVq6ZSkfg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:rOHX5yl7qnlpiVkFWoqccueppMtXzeziFjWAjLg6sz0=",
+        version = "v1.6.0",
     )
     go_repository(
+        name = "com_github_mdlayher_packet",
+        importpath = "github.com/mdlayher/packet",
+        sum = "h1:elUwhY+HQaIV9kMgmsU9zOF413pDKoo2uFNypgP5SxM=",
+        version = "v0.0.0-20220221164757-67998ac0ff93",
+    )
+
+    go_repository(
         name = "com_github_mdlayher_raw",
         importpath = "github.com/mdlayher/raw",
-        version = "v0.0.0-20191009151244-50f2db8cc065",
-        sum = "h1:aFkJ6lx4FPip+S+Uw4aTegFMct9shDvP+79PsSxpm3w=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:K4PFMVy+AFsp0Zdlrts7yNhxc/uXoPVHi9RzRvtZF2Y=",
+        version = "v0.1.0",
     )
     go_repository(
+        name = "com_github_mdlayher_socket",
+        importpath = "github.com/mdlayher/socket",
+        sum = "h1:F2aaOwb53VsBE+ebRS9bLd7yPOfYUMC8lOODdCBDY6w=",
+        version = "v0.2.1",
+    )
+
+    go_repository(
+        name = "com_github_mgutz_ansi",
+        importpath = "github.com/mgutz/ansi",
+        sum = "h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=",
+        version = "v0.0.0-20170206155736-9520e82c474b",
+    )
+    go_repository(
+        name = "com_github_mholt_certmagic",
+        importpath = "github.com/mholt/certmagic",
+        sum = "h1:xKE9kZ5C8gelJC3+BNM6LJs1x21rivK7yxfTZMAuY2s=",
+        version = "v0.6.2-0.20190624175158-6a42ef9fe8c2",
+    )
+
+    go_repository(
+        name = "com_github_mibk_dupl",
+        importpath = "github.com/mibk/dupl",
+        sum = "h1:aZc3jqrF9n0tUHwHt/+jsRxA8cRgA0Gdl56M7W7PoqE=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
+        name = "com_github_microsoft_go_winio",
+        importpath = "github.com/Microsoft/go-winio",
+        sum = "h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY=",
+        version = "v0.5.1",
+    )
+    go_repository(
+        name = "com_github_microsoft_hcsshim",
+        build_file_proto_mode = "disable",
+        importpath = "github.com/Microsoft/hcsshim",
+        sum = "h1:wB06W5aYFfUB3IvootYAY2WnOmIdgPGfqSI6tufQNnY=",
+        version = "v0.9.2",
+    )
+    go_repository(
+        name = "com_github_microsoft_hcsshim_test",
+        importpath = "github.com/Microsoft/hcsshim/test",
+        sum = "h1:4FA+QBaydEHlwxg0lMN3rhwoDaQy6LKhVWR4qvq4BuA=",
+        version = "v0.0.0-20210227013316-43a75bb4edd3",
+    )
+
+    go_repository(
         name = "com_github_miekg_dns",
         importpath = "github.com/miekg/dns",
-        version = "v1.1.29",
-        sum = "h1:xHBEhR+t5RzcFJjBLJlax2daXOrTYtr9z4WdKEfWFzg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:uzwpxRtSVxtcIZmz/4Uz6/Rn7G11DvsaslXoy5LxQio=",
+        version = "v1.1.46",
     )
     go_repository(
+        name = "com_github_miekg_pkcs11",
+        importpath = "github.com/miekg/pkcs11",
+        sum = "h1:iMwmD7I5225wv84WxIG/bmxz9AXjWvTWIbM/TYHvWtw=",
+        version = "v1.0.3",
+    )
+    go_repository(
+        name = "com_github_mikioh_ipaddr",
+        importpath = "github.com/mikioh/ipaddr",
+        sum = "h1:RlZweED6sbSArvlE924+mUcZuXKLBHA35U7LN621Bws=",
+        version = "v0.0.0-20190404000644-d465c8ab6721",
+    )
+
+    go_repository(
         name = "com_github_mindprince_gonvml",
         importpath = "github.com/mindprince/gonvml",
-        version = "v0.0.0-20190828220739-9ebdce4bb989",
         sum = "h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20190828220739-9ebdce4bb989",
     )
     go_repository(
         name = "com_github_mistifyio_go_zfs",
         importpath = "github.com/mistifyio/go-zfs",
-        version = "v2.1.2-0.20190413222219-f784269be439+incompatible",
         sum = "h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v2.1.2-0.20190413222219-f784269be439+incompatible",
     )
     go_repository(
+        name = "com_github_mitchellh_cli",
+        importpath = "github.com/mitchellh/cli",
+        sum = "h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_mitchellh_copystructure",
+        importpath = "github.com/mitchellh/copystructure",
+        sum = "h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_mitchellh_go_homedir",
+        importpath = "github.com/mitchellh/go-homedir",
+        sum = "h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=",
+        version = "v1.1.0",
+    )
+
+    go_repository(
+        name = "com_github_mitchellh_go_testing_interface",
+        importpath = "github.com/mitchellh/go-testing-interface",
+        sum = "h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_mitchellh_go_wordwrap",
         importpath = "github.com/mitchellh/go-wordwrap",
-        version = "v1.0.0",
         sum = "h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
+        name = "com_github_mitchellh_gox",
+        importpath = "github.com/mitchellh/gox",
+        sum = "h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc=",
+        version = "v0.4.0",
+    )
+    go_repository(
+        name = "com_github_mitchellh_iochan",
+        importpath = "github.com/mitchellh/iochan",
+        sum = "h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_mitchellh_mapstructure",
         importpath = "github.com/mitchellh/mapstructure",
-        version = "v1.1.2",
-        sum = "h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=",
+        version = "v1.4.1",
     )
     go_repository(
+        name = "com_github_mitchellh_osext",
+        importpath = "github.com/mitchellh/osext",
+        sum = "h1:2+myh5ml7lgEU/51gbeLHfKGNfgEQQIWrlbdaOsidbQ=",
+        version = "v0.0.0-20151018003038-5e2d6d41470f",
+    )
+    go_repository(
+        name = "com_github_mitchellh_reflectwalk",
+        importpath = "github.com/mitchellh/reflectwalk",
+        sum = "h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE=",
+        version = "v1.0.1",
+    )
+    go_repository(
+        name = "com_github_moby_ipvs",
+        importpath = "github.com/moby/ipvs",
+        sum = "h1:aoZ7fhLTXgDbzVrAnvV+XbKOU8kOET7B3+xULDF/1o0=",
+        version = "v1.0.1",
+    )
+    go_repository(
+        name = "com_github_moby_locker",
+        importpath = "github.com/moby/locker",
+        sum = "h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=",
+        version = "v1.0.1",
+    )
+    go_repository(
+        name = "com_github_moby_spdystream",
+        importpath = "github.com/moby/spdystream",
+        sum = "h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=",
+        version = "v0.2.0",
+    )
+
+    go_repository(
         name = "com_github_moby_sys_mountinfo",
         importpath = "github.com/moby/sys/mountinfo",
-        version = "v0.1.3",
-        sum = "h1:KIrhRO14+AkwKvG/g2yIpNMOUVZ02xNhOw8KY1WsLOI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI=",
+        version = "v0.5.0",
     )
     go_repository(
+        name = "com_github_moby_sys_signal",
+        importpath = "github.com/moby/sys/signal",
+        sum = "h1:aDpY94H8VlhTGa9sNYUFCFsMZIUh5wm0B6XkIoJj/iY=",
+        version = "v0.6.0",
+    )
+    go_repository(
+        name = "com_github_moby_sys_symlink",
+        importpath = "github.com/moby/sys/symlink",
+        sum = "h1:tk1rOM+Ljp0nFmfOIBtlV3rTDlWOwFRhjEeAhZB0nZc=",
+        version = "v0.2.0",
+    )
+
+    go_repository(
         name = "com_github_moby_term",
         importpath = "github.com/moby/term",
-        version = "v0.0.0-20200312100748-672ec06f55cd",
-        sum = "h1:aY7OQNf2XqY/JQ6qREWamhI/81os/agb2BAGpcx5yWI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc=",
+        version = "v0.0.0-20210619224110-3f7ff695adc6",
     )
     go_repository(
         name = "com_github_modern_go_concurrent",
         importpath = "github.com/modern-go/concurrent",
-        version = "v0.0.0-20180306012644-bacd9c7ef1dd",
         sum = "h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20180306012644-bacd9c7ef1dd",
     )
     go_repository(
         name = "com_github_modern_go_reflect2",
         importpath = "github.com/modern-go/reflect2",
-        version = "v1.0.1",
-        sum = "h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=",
+        version = "v1.0.2",
     )
     go_repository(
         name = "com_github_mohae_deepcopy",
         importpath = "github.com/mohae/deepcopy",
-        version = "v0.0.0-20170308212314-bb9b5e7adda9",
-        sum = "h1:Sha2bQdoWE5YQPTlJOL31rmce94/tYi113SlFo1xQ2c=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=",
+        version = "v0.0.0-20170929034955-c48cc78d4826",
     )
     go_repository(
+        name = "com_github_monochromegane_go_gitignore",
+        importpath = "github.com/monochromegane/go-gitignore",
+        sum = "h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=",
+        version = "v0.0.0-20200626010858-205db1a8cc00",
+    )
+
+    go_repository(
         name = "com_github_morikuni_aec",
         importpath = "github.com/morikuni/aec",
-        version = "v1.0.0",
         sum = "h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
+
     go_repository(
         name = "com_github_mrunalp_fileutils",
         importpath = "github.com/mrunalp/fileutils",
-        version = "v0.0.0-20200520151820-abd8a0e76976",
-        sum = "h1:aZQToFSLH8ejFeSkTc3r3L4dPImcj7Ib/KgmkQqbGGg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4=",
+        version = "v0.5.0",
     )
     go_repository(
         name = "com_github_muesli_reflow",
         importpath = "github.com/muesli/reflow",
-        version = "v0.0.0-20191128061954-86f094cbed14",
         sum = "h1:99aDTygRy9yEwggATz+ZLrDFRsjRog5BqbAfsr47Ztw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20191128061954-86f094cbed14",
     )
+
     go_repository(
         name = "com_github_munnerz_goautoneg",
         importpath = "github.com/munnerz/goautoneg",
-        version = "v0.0.0-20191010083416-a7dc8b61c822",
         sum = "h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20191010083416-a7dc8b61c822",
     )
     go_repository(
+        name = "com_github_mvdan_xurls",
+        importpath = "github.com/mvdan/xurls",
+        sum = "h1:OpuDelGQ1R1ueQ6sSryzi6P+1RtBpfQHM8fJwlE45ww=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "com_github_mwitkow_go_conntrack",
+        importpath = "github.com/mwitkow/go-conntrack",
+        sum = "h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=",
+        version = "v0.0.0-20190716064945-2f068394615f",
+    )
+    go_repository(
+        name = "com_github_mwitkow_go_proto_validators",
+        importpath = "github.com/mwitkow/go-proto-validators",
+        replace = "github.com/mwitkow/go-proto-validators",
+        sum = "h1:qRlmpTzm2pstMKKzTdvwPCF5QfBNURSlAgN/R+qbKos=",
+        version = "v0.3.2",
+    )
+
+    go_repository(
         name = "com_github_mxk_go_flowrate",
         importpath = "github.com/mxk/go-flowrate",
-        version = "v0.0.0-20140419014527-cca7078d478f",
         sum = "h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20140419014527-cca7078d478f",
     )
     go_repository(
+        name = "com_github_naoina_go_stringutil",
+        importpath = "github.com/naoina/go-stringutil",
+        sum = "h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_naoina_toml",
+        importpath = "github.com/naoina/toml",
+        sum = "h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8=",
+        version = "v0.1.1",
+    )
+
+    go_repository(
+        name = "com_github_nats_io_jwt",
+        importpath = "github.com/nats-io/jwt",
+        sum = "h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI=",
+        version = "v0.3.2",
+    )
+    go_repository(
+        name = "com_github_nats_io_nats_go",
+        importpath = "github.com/nats-io/nats.go",
+        sum = "h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ=",
+        version = "v1.9.1",
+    )
+    go_repository(
+        name = "com_github_nats_io_nats_server_v2",
+        importpath = "github.com/nats-io/nats-server/v2",
+        sum = "h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc=",
+        version = "v2.1.2",
+    )
+    go_repository(
+        name = "com_github_nats_io_nkeys",
+        importpath = "github.com/nats-io/nkeys",
+        sum = "h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k=",
+        version = "v0.1.3",
+    )
+    go_repository(
+        name = "com_github_nats_io_nuid",
+        importpath = "github.com/nats-io/nuid",
+        sum = "h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=",
+        version = "v1.0.1",
+    )
+
+    go_repository(
+        name = "com_github_ncw_swift",
+        importpath = "github.com/ncw/swift",
+        sum = "h1:4DQRPj35Y41WogBxyhOXlrI37nzGlyEcsforeudyYPQ=",
+        version = "v1.0.47",
+    )
+    go_repository(
+        name = "com_github_niemeyer_pretty",
+        importpath = "github.com/niemeyer/pretty",
+        sum = "h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=",
+        version = "v0.0.0-20200227124842-a10e7caefd8e",
+    )
+    go_repository(
+        name = "com_github_nishanths_predeclared",
+        importpath = "github.com/nishanths/predeclared",
+        sum = "h1:3f0nxAmdj/VoCGN/ijdMy7bj6SBagaqYg1B0hu8clMA=",
+        version = "v0.0.0-20200524104333-86fad755b4d3",
+    )
+    go_repository(
+        name = "com_github_nxadm_tail",
+        importpath = "github.com/nxadm/tail",
+        sum = "h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=",
+        version = "v1.4.4",
+    )
+
+    go_repository(
+        name = "com_github_nytimes_gziphandler",
+        importpath = "github.com/NYTimes/gziphandler",
+        sum = "h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=",
+        version = "v1.1.1",
+    )
+    go_repository(
+        name = "com_github_oklog_oklog",
+        importpath = "github.com/oklog/oklog",
+        sum = "h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk=",
+        version = "v0.3.2",
+    )
+    go_repository(
+        name = "com_github_oklog_run",
+        importpath = "github.com/oklog/run",
+        sum = "h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_oklog_ulid",
+        importpath = "github.com/oklog/ulid",
+        sum = "h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=",
+        version = "v1.3.1",
+    )
+
+    go_repository(
         name = "com_github_olekukonko_tablewriter",
         importpath = "github.com/olekukonko/tablewriter",
-        version = "v0.0.0-20170122224234-a0225b3f23b5",
-        sum = "h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=",
+        version = "v0.0.5",
     )
     go_repository(
+        name = "com_github_oneofone_xxhash",
+        importpath = "github.com/OneOfOne/xxhash",
+        sum = "h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=",
+        version = "v1.2.2",
+    )
+
+    go_repository(
         name = "com_github_onsi_ginkgo",
         importpath = "github.com/onsi/ginkgo",
-        version = "v1.11.0",
-        sum = "h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "github.com/onsi/ginkgo",
+        sum = "h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=",
+        version = "v1.14.2",
     )
     go_repository(
         name = "com_github_onsi_gomega",
         importpath = "github.com/onsi/gomega",
-        version = "v1.7.0",
-        sum = "h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c=",
+        version = "v1.16.0",
     )
     go_repository(
+        name = "com_github_op_go_logging",
+        importpath = "github.com/op/go-logging",
+        sum = "h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88=",
+        version = "v0.0.0-20160315200505-970db520ece7",
+    )
+
+    go_repository(
         name = "com_github_opencontainers_go_digest",
         importpath = "github.com/opencontainers/go-digest",
-        version = "v1.0.0",
         sum = "h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
         name = "com_github_opencontainers_image_spec",
         importpath = "github.com/opencontainers/image-spec",
-        version = "v1.0.1",
-        sum = "h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=",
+        version = "v1.0.2",
     )
     go_repository(
         name = "com_github_opencontainers_runc",
+        build_tags = ["seccomp"],  #keep
         importpath = "github.com/opencontainers/runc",
-        version = "v1.0.0-rc92",
-        sum = "h1:+IczUKCRzDzFDnw99O/PAqrcBBCoRp9xN3cB1SYSNS4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+        patch_args = ["-p1"],
+        patches = [
+            "//third_party/go/patches:runc-add-cdeps.patch",
         ],
+        sum = "h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQcefG8=",
+        version = "v1.1.0",
     )
     go_repository(
         name = "com_github_opencontainers_runtime_spec",
         importpath = "github.com/opencontainers/runtime-spec",
-        version = "v1.0.3-0.20200728170252-4d89ac9fbff6",
-        sum = "h1:NhsM2gc769rVWDqJvapK37r+7+CBXI8xHhnfnt8uQsg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:9iT75RHhYHWwWRlVWU7wnmtFulYcURCglzQOpT+cAF8=",
+        version = "v1.0.3-0.20211123151946-c2389c3cb60a",
     )
     go_repository(
+        name = "com_github_opencontainers_runtime_tools",
+        importpath = "github.com/opencontainers/runtime-tools",
+        sum = "h1:H7DMc6FAjgwZZi8BRqjrAAHWoqEr5e5L6pS4V0ezet4=",
+        version = "v0.0.0-20181011054405-1d69bd0f9c39",
+    )
+
+    go_repository(
         name = "com_github_opencontainers_selinux",
         importpath = "github.com/opencontainers/selinux",
-        version = "v1.6.0",
-        sum = "h1:+bIAS/Za3q5FTwWym4fTB0vObnfCf3G/NC7K6Jx62mY=",
-        build_tags = [
-            "selinux",
-        ],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:rAiKF8hTcgLI3w0DHm6i0ylVVcOrlgR1kK99DRLDhyU=",
+        version = "v1.10.0",
     )
+
+    go_repository(
+        name = "com_github_opentracing_basictracer_go",
+        importpath = "github.com/opentracing/basictracer-go",
+        sum = "h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_opentracing_contrib_go_observer",
+        importpath = "github.com/opentracing-contrib/go-observer",
+        sum = "h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU=",
+        version = "v0.0.0-20170622124052-a52f23424492",
+    )
+
     go_repository(
         name = "com_github_opentracing_opentracing_go",
         importpath = "github.com/opentracing/opentracing-go",
-        version = "v1.1.0",
-        sum = "h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=",
+        version = "v1.2.0",
     )
     go_repository(
+        name = "com_github_openzipkin_contrib_zipkin_go_opentracing",
+        importpath = "github.com/openzipkin-contrib/zipkin-go-opentracing",
+        sum = "h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU=",
+        version = "v0.4.5",
+    )
+    go_repository(
+        name = "com_github_openzipkin_zipkin_go",
+        importpath = "github.com/openzipkin/zipkin-go",
+        sum = "h1:CtfRrOVZtbDj8rt1WXjklw0kqqJQwICrCKmlfUuBUUw=",
+        version = "v0.4.0",
+    )
+    go_repository(
+        name = "com_github_oschwald_geoip2_golang",
+        importpath = "github.com/oschwald/geoip2-golang",
+        sum = "h1:GKxT3yaWWNXSb7vj6D7eoJBns+lGYgx08QO0UcNm0YY=",
+        version = "v1.6.1",
+    )
+    go_repository(
+        name = "com_github_oschwald_maxminddb_golang",
+        importpath = "github.com/oschwald/maxminddb-golang",
+        sum = "h1:Uh/DSnGoxsyp/KYbY1AuP0tYEwfs0sCph9p/UMXK/Hk=",
+        version = "v1.8.0",
+    )
+    go_repository(
+        name = "com_github_otiai10_copy",
+        importpath = "github.com/otiai10/copy",
+        sum = "h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k=",
+        version = "v1.2.0",
+    )
+    go_repository(
+        name = "com_github_otiai10_curr",
+        importpath = "github.com/otiai10/curr",
+        sum = "h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_otiai10_mint",
+        importpath = "github.com/otiai10/mint",
+        sum = "h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc=",
+        version = "v1.3.1",
+    )
+    go_repository(
+        name = "com_github_pact_foundation_pact_go",
+        importpath = "github.com/pact-foundation/pact-go",
+        sum = "h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q=",
+        version = "v1.0.4",
+    )
+    go_repository(
+        name = "com_github_pascaldekloe_goe",
+        importpath = "github.com/pascaldekloe/goe",
+        sum = "h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=",
+        version = "v0.0.0-20180627143212-57f6aae5913c",
+    )
+    go_repository(
+        name = "com_github_pborman_uuid",
+        importpath = "github.com/pborman/uuid",
+        sum = "h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=",
+        version = "v1.2.0",
+    )
+    go_repository(
+        name = "com_github_pelletier_go_buffruneio",
+        importpath = "github.com/pelletier/go-buffruneio",
+        sum = "h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA=",
+        version = "v0.2.0",
+    )
+    go_repository(
+        name = "com_github_pelletier_go_toml",
+        importpath = "github.com/pelletier/go-toml",
+        sum = "h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=",
+        version = "v1.9.4",
+    )
+    go_repository(
+        name = "com_github_performancecopilot_speed",
+        importpath = "github.com/performancecopilot/speed",
+        sum = "h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg=",
+        version = "v3.0.0+incompatible",
+    )
+
+    go_repository(
         name = "com_github_peterbourgon_diskv",
         importpath = "github.com/peterbourgon/diskv",
-        version = "v2.0.1+incompatible",
         sum = "h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v2.0.1+incompatible",
     )
+
     go_repository(
-        name = "com_github_peterh_liner",
-        importpath = "github.com/peterh/liner",
-        version = "v0.0.0-20170317030525-88609521dc4b",
-        sum = "h1:8uaXtUkxiy+T/zdLWuxa/PG4so0TPZDZfafFNNSaptE=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_philhofer_fwd",
+        importpath = "github.com/philhofer/fwd",
+        sum = "h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ=",
+        version = "v1.1.1",
     )
+
     go_repository(
         name = "com_github_pierrec_lz4",
         importpath = "github.com/pierrec/lz4",
-        version = "v2.3.0+incompatible",
-        sum = "h1:CZzRn4Ut9GbUkHlQ7jqBXeZQV41ZSKWFc302ZU6lUTk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM=",
+        version = "v2.6.1+incompatible",
     )
     go_repository(
         name = "com_github_pierrec_lz4_v4",
         importpath = "github.com/pierrec/lz4/v4",
-        version = "v4.1.12",
-        sum = "h1:44l88ehTZAUGW4VlO1QC4zkilL99M6Y9MXNwEs0uzP8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE=",
+        version = "v4.1.14",
     )
     go_repository(
         name = "com_github_pkg_errors",
         importpath = "github.com/pkg/errors",
-        version = "v0.9.1",
         sum = "h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.9.1",
     )
     go_repository(
+        name = "com_github_pkg_profile",
+        importpath = "github.com/pkg/profile",
+        sum = "h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE=",
+        version = "v1.2.1",
+    )
+    go_repository(
+        name = "com_github_pkg_sftp",
+        importpath = "github.com/pkg/sftp",
+        sum = "h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc=",
+        version = "v1.10.1",
+    )
+
+    go_repository(
         name = "com_github_pkg_xattr",
         importpath = "github.com/pkg/xattr",
-        version = "v0.4.1",
         sum = "h1:dhclzL6EqOXNaPDWqoeb9tIxATfBSmjqL0b4DpSjwRw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.4.1",
     )
     go_repository(
+        name = "com_github_pmezard_go_difflib",
+        importpath = "github.com/pmezard/go-difflib",
+        sum = "h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_posener_complete",
+        importpath = "github.com/posener/complete",
+        sum = "h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=",
+        version = "v1.1.1",
+    )
+
+    go_repository(
         name = "com_github_pquerna_cachecontrol",
         importpath = "github.com/pquerna/cachecontrol",
-        version = "v0.0.0-20171018203845-0dec1b30a021",
         sum = "h1:0XM1XL/OFFJjXsYXlG30spTkV/E9+gmd5GD1w2HE8xM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20171018203845-0dec1b30a021",
     )
+
     go_repository(
         name = "com_github_prometheus_client_golang",
         importpath = "github.com/prometheus/client_golang",
-        version = "v1.6.0",
-        sum = "h1:YVPodQOcK15POxhgARIvnDRVpLcuK8mglnMrWfyrw6A=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk=",
+        version = "v1.12.1",
     )
     go_repository(
         name = "com_github_prometheus_client_model",
         importpath = "github.com/prometheus/client_model",
-        version = "v0.2.0",
         sum = "h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.2.0",
     )
     go_repository(
         name = "com_github_prometheus_common",
         importpath = "github.com/prometheus/common",
-        version = "v0.9.1",
-        sum = "h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=",
+        version = "v0.32.1",
     )
     go_repository(
         name = "com_github_prometheus_procfs",
         importpath = "github.com/prometheus/procfs",
-        version = "v0.0.11",
-        sum = "h1:DhHlBtkHWPYi8O2y31JkK0TF+DGM+51OopZjH/Ia5qI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=",
+        version = "v0.7.3",
     )
     go_repository(
+        name = "com_github_prometheus_tsdb",
+        importpath = "github.com/prometheus/tsdb",
+        sum = "h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=",
+        version = "v0.7.1",
+    )
+
+    go_repository(
         name = "com_github_pseudomuto_protoc_gen_doc",
+        build_directives = [
+            "gazelle:resolve go github.com/mwitkow/go-proto-validators @com_github_mwitkow_go_proto_validators//:validators_golang",
+        ],
         importpath = "github.com/pseudomuto/protoc-gen-doc",
-        version = "v1.5.0",
-        sum = "h1:pHZp0MEiT68jrZV8js8BS7E9ZEnlSLegoQbbtXj5lfo=",
-        patches = [
+        patch_args = ["-p1"],
+        pre_patches = [
             "//third_party/go/patches:protoc-gen-doc-no-gogo.patch",
         ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:pHZp0MEiT68jrZV8js8BS7E9ZEnlSLegoQbbtXj5lfo=",
+        version = "v1.5.0",
     )
     go_repository(
         name = "com_github_pseudomuto_protokit",
-        importpath = "github.com/pseudomuto/protokit",
-        version = "v0.2.0",
-        sum = "h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "github.com/pseudomuto/protokit",
+        sum = "h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM=",
+        version = "v0.2.0",
     )
     go_repository(
+        name = "com_github_puerkitobio_purell",
+        importpath = "github.com/PuerkitoBio/purell",
+        sum = "h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=",
+        version = "v1.1.1",
+    )
+    go_repository(
+        name = "com_github_puerkitobio_urlesc",
+        importpath = "github.com/PuerkitoBio/urlesc",
+        sum = "h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=",
+        version = "v0.0.0-20170810143723-de5bf2ad4578",
+    )
+
+    go_repository(
+        name = "com_github_quobyte_api",
+        importpath = "github.com/quobyte/api",
+        sum = "h1:+sOX1gIlC/OaLipqVZWrHgly9Kh9Qo8OygeS0mWAg30=",
+        version = "v0.1.8",
+    )
+    go_repository(
+        name = "com_github_rabbitmq_amqp091_go",
+        importpath = "github.com/rabbitmq/amqp091-go",
+        sum = "h1:qx8cGMJha71/5t31Z+LdPLdPrkj/BvD38cqC3Bi1pNI=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "com_github_rcrowley_go_metrics",
+        importpath = "github.com/rcrowley/go-metrics",
+        sum = "h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=",
+        version = "v0.0.0-20201227073835-cf1acfcdf475",
+    )
+
+    go_repository(
         name = "com_github_rekby_gpt",
         importpath = "github.com/rekby/gpt",
-        version = "v0.0.0-20200219180433-a930afbc6edc",
-        sum = "h1:goZGTwEEn8mWLcY012VouWZWkJ8GrXm9tS3VORMxT90=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:U4d0m0NdADC5sjaWXeZpDZ/TFvE866u1Js5yP3M3mho=",
+        version = "v0.0.0-20200614112001-7da10aec5566",
     )
     go_repository(
+        name = "com_github_remyoudompheng_bigfft",
+        importpath = "github.com/remyoudompheng/bigfft",
+        sum = "h1:/NRJ5vAYoqz+7sG51ubIDHXeWO8DlTSrToPu6q11ziA=",
+        version = "v0.0.0-20170806203942-52369c62f446",
+    )
+
+    go_repository(
+        name = "com_github_rivo_uniseg",
+        importpath = "github.com/rivo/uniseg",
+        sum = "h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=",
+        version = "v0.2.0",
+    )
+
+    go_repository(
         name = "com_github_robfig_cron",
         importpath = "github.com/robfig/cron",
-        version = "v1.1.0",
         sum = "h1:jk4/Hud3TTdcrJgUOBgsqrZBarcxl6ADIjSC2iniwLY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.1.0",
     )
     go_repository(
+        name = "com_github_robfig_cron_v3",
+        importpath = "github.com/robfig/cron/v3",
+        sum = "h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=",
+        version = "v3.0.1",
+    )
+    go_repository(
+        name = "com_github_rogpeppe_fastuuid",
+        importpath = "github.com/rogpeppe/fastuuid",
+        sum = "h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=",
+        version = "v1.2.0",
+    )
+    go_repository(
+        name = "com_github_rogpeppe_go_internal",
+        importpath = "github.com/rogpeppe/go-internal",
+        sum = "h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "com_github_rs_cors",
+        importpath = "github.com/rs/cors",
+        sum = "h1:P2KMzcFwrPoSjkF1WLRPsp3UMLyql8L4v9hQpVeK5so=",
+        version = "v1.8.0",
+    )
+    go_repository(
+        name = "com_github_rubiojr_go_vhd",
+        importpath = "github.com/rubiojr/go-vhd",
+        sum = "h1:if3/24+h9Sq6eDx8UUz1SO9cT9tizyIsATfB7b4D3tc=",
+        version = "v0.0.0-20200706105327-02e210299021",
+    )
+
+    go_repository(
         name = "com_github_russross_blackfriday",
         importpath = "github.com/russross/blackfriday",
-        version = "v1.5.2",
         sum = "h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.5.2",
     )
     go_repository(
         name = "com_github_russross_blackfriday_v2",
         importpath = "github.com/russross/blackfriday/v2",
-        version = "v2.0.1",
-        sum = "h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=",
+        version = "v2.1.0",
     )
     go_repository(
+        name = "com_github_ryanuber_columnize",
+        importpath = "github.com/ryanuber/columnize",
+        sum = "h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M=",
+        version = "v0.0.0-20160712163229-9b3edd62028f",
+    )
+
+    go_repository(
         name = "com_github_safchain_ethtool",
         importpath = "github.com/safchain/ethtool",
-        version = "v0.0.0-20190326074333-42ed695e3de8",
-        sum = "h1:2c1EFnZHIPCW8qKWgHMH/fX2PkSabFc5mrVzfUNdg5U=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:ZFfeKAhIQiiOrQaI3/znw0gOmYpO28Tcu1YaqMa/jtQ=",
+        version = "v0.0.0-20210803160452-9aa261dae9b1",
     )
     go_repository(
+        name = "com_github_samuel_go_zookeeper",
+        importpath = "github.com/samuel/go-zookeeper",
+        sum = "h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU=",
+        version = "v0.0.0-20190923202752-2cc03de413da",
+    )
+    go_repository(
+        name = "com_github_sassoftware_go_rpmutils",
+        importpath = "github.com/sassoftware/go-rpmutils",
+        sum = "h1:+gCnWOZV8Z/8jehJ2CdqB47Z3S+SREmQcuXkRFLNsiI=",
+        version = "v0.0.0-20190420191620-a8f1baeba37b",
+    )
+    go_repository(
+        name = "com_github_satori_go_uuid",
+        importpath = "github.com/satori/go.uuid",
+        sum = "h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=",
+        version = "v1.2.0",
+    )
+
+    go_repository(
         name = "com_github_sbezverk_nfproxy",
         importpath = "github.com/sbezverk/nfproxy",
-        version = "v0.0.0-20200514180651-7fac5f39824e",
-        sum = "h1:fJ2lHQ7ZUjmgJbvVQ509ioBmrGHcbvlwfjUieExw/dU=",
-        patches = [
-            "//third_party/go/patches:nfproxy.patch",
-        ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:nlKDckTP5mXfdpUST7l4cU6fGzMlkv/CVg+EVOsClS8=",
+        version = "v0.0.0-20210112155058-0d98b4a69f0c",
     )
     go_repository(
         name = "com_github_sbezverk_nftableslib",
         importpath = "github.com/sbezverk/nftableslib",
-        version = "v0.0.0-20200402150358-c20bed91f482",
-        sum = "h1:k7gEZ/EwJhHDTRXFUZQlE4/p1cmoha7zL7PWCDG3ZHQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:Zi8wDJAUmUYqWX6A9ma84xOhFvwR7O10K7pvISM+SvM=",
+        version = "v0.0.0-20210111145735-b08b2d804e1f",
     )
     go_repository(
+        name = "com_github_sbezverk_nftableslib_e2e_setenv",
+        importpath = "github.com/sbezverk/nftableslib/e2e/setenv",
+        sum = "h1:/8S2Bo/8GZhXJBEf9yywFO2NlVzwH1jNdu4UIk48SCs=",
+        version = "v0.0.0-20191010164456-029e0d78cdb1",
+    )
+
+    go_repository(
+        name = "com_github_sclevine_spec",
+        importpath = "github.com/sclevine/spec",
+        sum = "h1:1Jwdf9jSfDl9NVmt8ndHqbTZ7XCCPbh1jI3hkDBHVYA=",
+        version = "v1.2.0",
+    )
+    go_repository(
+        name = "com_github_sean_seed",
+        importpath = "github.com/sean-/seed",
+        sum = "h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=",
+        version = "v0.0.0-20170313163322-e2103e2c3529",
+    )
+    go_repository(
+        name = "com_github_seccomp_libseccomp_golang",
+        importpath = "github.com/seccomp/libseccomp-golang",
+        patch_args = ["-p1"],
+        patches = [
+            "//third_party/go/patches:libseccomp.patch",
+        ],
+        sum = "h1:58EBmR2dMNL2n/FnbQewK3D14nXr0V9CObDSvMJLq+Y=",
+        version = "v0.9.2-0.20210429002308-3879420cc921",
+    )
+    go_repository(
+        name = "com_github_sergi_go_diff",
+        importpath = "github.com/sergi/go-diff",
+        sum = "h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=",
+        version = "v1.2.0",
+    )
+
+    go_repository(
+        name = "com_github_shopify_logrus_bugsnag",
+        importpath = "github.com/Shopify/logrus-bugsnag",
+        sum = "h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs=",
+        version = "v0.0.0-20171204204709-577dee27f20d",
+    )
+    go_repository(
+        name = "com_github_shopify_sarama",
+        importpath = "github.com/Shopify/sarama",
+        sum = "h1:TOZL6r37xJBDEMLx4yjB77jxbZYXPaDow08TSK6vIL0=",
+        version = "v1.30.0",
+    )
+    go_repository(
+        name = "com_github_shopify_toxiproxy",
+        importpath = "github.com/Shopify/toxiproxy",
+        sum = "h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=",
+        version = "v2.1.4+incompatible",
+    )
+    go_repository(
+        name = "com_github_shopify_toxiproxy_v2",
+        importpath = "github.com/Shopify/toxiproxy/v2",
+        sum = "h1:ePgznFqEG1v3AjMklnK8H7BSc++FDSo7xfK9K7Af+0Y=",
+        version = "v2.1.6-0.20210914104332-15ea381dcdae",
+    )
+
+    go_repository(
         name = "com_github_shurcool_sanitized_anchor_name",
         importpath = "github.com/shurcooL/sanitized_anchor_name",
-        version = "v1.0.0",
         sum = "h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0",
     )
     go_repository(
         name = "com_github_sirupsen_logrus",
         importpath = "github.com/sirupsen/logrus",
-        version = "v1.6.0",
-        sum = "h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=",
+        version = "v1.8.1",
     )
     go_repository(
+        name = "com_github_smartystreets_assertions",
+        importpath = "github.com/smartystreets/assertions",
+        sum = "h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "com_github_smartystreets_go_aws_auth",
+        importpath = "github.com/smartystreets/go-aws-auth",
+        sum = "h1:hp2CYQUINdZMHdvTdXtPOY2ainKl4IoMcpAXEf2xj3Q=",
+        version = "v0.0.0-20180515143844-0c1422d1fdb9",
+    )
+    go_repository(
+        name = "com_github_smartystreets_goconvey",
+        importpath = "github.com/smartystreets/goconvey",
+        sum = "h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=",
+        version = "v1.6.4",
+    )
+    go_repository(
+        name = "com_github_smartystreets_gunit",
+        importpath = "github.com/smartystreets/gunit",
+        sum = "h1:RyPDUFcJbvtXlhJPk7v+wnxZRY2EUokhEYl2EJOPToI=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "com_github_soheilhy_cmux",
         importpath = "github.com/soheilhy/cmux",
-        version = "v0.1.4",
-        sum = "h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=",
+        version = "v0.1.5",
     )
     go_repository(
+        name = "com_github_sony_gobreaker",
+        importpath = "github.com/sony/gobreaker",
+        sum = "h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ=",
+        version = "v0.4.1",
+    )
+
+    go_repository(
+        name = "com_github_spaolacci_murmur3",
+        importpath = "github.com/spaolacci/murmur3",
+        sum = "h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=",
+        version = "v0.0.0-20180118202830-f09979ecbc72",
+    )
+
+    go_repository(
         name = "com_github_spf13_afero",
         importpath = "github.com/spf13/afero",
-        version = "v1.2.2",
-        sum = "h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY=",
+        version = "v1.6.0",
     )
     go_repository(
         name = "com_github_spf13_cast",
         importpath = "github.com/spf13/cast",
-        version = "v1.3.0",
-        sum = "h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng=",
+        version = "v1.3.1",
     )
     go_repository(
         name = "com_github_spf13_cobra",
         importpath = "github.com/spf13/cobra",
-        version = "v1.2.1",
-        sum = "h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q=",
+        version = "v1.4.0",
     )
     go_repository(
         name = "com_github_spf13_jwalterweatherman",
         importpath = "github.com/spf13/jwalterweatherman",
-        version = "v1.1.0",
         sum = "h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.1.0",
     )
     go_repository(
         name = "com_github_spf13_pflag",
         importpath = "github.com/spf13/pflag",
-        version = "v1.0.5",
         sum = "h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.5",
     )
     go_repository(
         name = "com_github_spf13_viper",
         importpath = "github.com/spf13/viper",
-        version = "v1.9.0",
-        sum = "h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44=",
+        version = "v1.8.1",
     )
     go_repository(
+        name = "com_github_src_d_gcfg",
+        importpath = "github.com/src-d/gcfg",
+        sum = "h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4=",
+        version = "v1.4.0",
+    )
+
+    go_repository(
+        name = "com_github_stefanberger_go_pkcs11uri",
+        importpath = "github.com/stefanberger/go-pkcs11uri",
+        sum = "h1:lIOOHPEbXzO3vnmx2gok1Tfs31Q8GQqKLc8vVqyQq/I=",
+        version = "v0.0.0-20201008174630-78d3cae3a980",
+    )
+    go_repository(
+        name = "com_github_stoewer_go_strcase",
+        importpath = "github.com/stoewer/go-strcase",
+        sum = "h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU=",
+        version = "v1.2.0",
+    )
+    go_repository(
+        name = "com_github_storageos_go_api",
+        importpath = "github.com/storageos/go-api",
+        sum = "h1:U0SablXoZIg06gvSlg8BCdzq1C/SkHVygOVX95Z2MU0=",
+        version = "v2.2.0+incompatible",
+    )
+    go_repository(
+        name = "com_github_streadway_amqp",
+        importpath = "github.com/streadway/amqp",
+        sum = "h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw=",
+        version = "v0.0.0-20190827072141-edfb9018d271",
+    )
+    go_repository(
+        name = "com_github_streadway_handy",
+        importpath = "github.com/streadway/handy",
+        sum = "h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug=",
+        version = "v0.0.0-20190108123426-d5acb3125c2a",
+    )
+    go_repository(
+        name = "com_github_stretchr_objx",
+        importpath = "github.com/stretchr/objx",
+        sum = "h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=",
+        version = "v0.2.0",
+    )
+
+    go_repository(
         name = "com_github_stretchr_testify",
         importpath = "github.com/stretchr/testify",
-        version = "v1.4.0",
-        sum = "h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=",
+        version = "v1.7.0",
     )
     go_repository(
+        name = "com_github_stripe_safesql",
+        importpath = "github.com/stripe/safesql",
+        sum = "h1:xiefmCDd8c35PVSGrL2FhBiaKxviXnGziBDOpOejeBE=",
+        version = "v0.2.0",
+    )
+
+    go_repository(
         name = "com_github_subosito_gotenv",
         importpath = "github.com/subosito/gotenv",
-        version = "v1.2.0",
         sum = "h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.2.0",
     )
     go_repository(
         name = "com_github_syndtr_gocapability",
         importpath = "github.com/syndtr/gocapability",
-        version = "v0.0.0-20180916011248-d98352740cb2",
-        sum = "h1:b6uOv7YOFK0TYG7HtkIgExQo+2RdLuwRft63jn2HWj8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=",
+        version = "v0.0.0-20200815063812-42c35b437635",
     )
+
     go_repository(
         name = "com_github_tchap_go_patricia",
         importpath = "github.com/tchap/go-patricia",
-        version = "v2.2.6+incompatible",
         sum = "h1:JvoDL7JSoIP2HDE8AbDH3zC8QBPxmzYe32HHy5yQ+Ck=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v2.2.6+incompatible",
     )
     go_repository(
+        name = "com_github_thecodeteam_goscaleio",
+        importpath = "github.com/thecodeteam/goscaleio",
+        sum = "h1:SB5tO98lawC+UK8ds/U2jyfOCH7GTcFztcF5x9gbut4=",
+        version = "v0.1.0",
+    )
+    go_repository(
+        name = "com_github_tidwall_pretty",
+        importpath = "github.com/tidwall/pretty",
+        sum = "h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
+        name = "com_github_tinylib_msgp",
+        importpath = "github.com/tinylib/msgp",
+        sum = "h1:gWmO7n0Ys2RBEb7GPYB9Ujq8Mk5p2U08lRnmMcGy6BQ=",
+        version = "v1.1.2",
+    )
+    go_repository(
+        name = "com_github_tj_assert",
+        importpath = "github.com/tj/assert",
+        sum = "h1:Rw8kxzWo1mr6FSaYXjQELRe88y2KdfynXdnK72rdjtA=",
+        version = "v0.0.0-20171129193455-018094318fb0",
+    )
+    go_repository(
+        name = "com_github_tj_go_elastic",
+        importpath = "github.com/tj/go-elastic",
+        sum = "h1:eGaGNxrtoZf/mBURsnNQKDR7u50Klgcf2eFDQEnc8Bc=",
+        version = "v0.0.0-20171221160941-36157cbbebc2",
+    )
+    go_repository(
+        name = "com_github_tj_go_kinesis",
+        importpath = "github.com/tj/go-kinesis",
+        sum = "h1:m74UWYy+HBs+jMFR9mdZU6shPewugMyH5+GV6LNgW8w=",
+        version = "v0.0.0-20171128231115-08b17f58cb1b",
+    )
+    go_repository(
+        name = "com_github_tj_go_spin",
+        importpath = "github.com/tj/go-spin",
+        sum = "h1:lhdWZsvImxvZ3q1C5OIB7d72DuOwP4O2NdBg9PyzNds=",
+        version = "v1.1.0",
+    )
+
+    go_repository(
         name = "com_github_tmc_grpc_websocket_proxy",
         importpath = "github.com/tmc/grpc-websocket-proxy",
-        version = "v0.0.0-20190109142713-0ad062ec5ee5",
-        sum = "h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA=",
+        version = "v0.0.0-20201229170055-e5319fda7802",
     )
     go_repository(
-        name = "com_github_u_root_u_root",
-        importpath = "github.com/u-root/u-root",
-        version = "v7.0.0+incompatible",
-        sum = "h1:u+KSS04pSxJGI5E7WE4Bs9+Zd75QjFv+REkjy/aoAc8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_tomasen_realip",
+        importpath = "github.com/tomasen/realip",
+        sum = "h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc=",
+        version = "v0.0.0-20180522021738-f0c99a92ddce",
     )
     go_repository(
+        name = "com_github_tsenart_deadcode",
+        importpath = "github.com/tsenart/deadcode",
+        sum = "h1:vY5WqiEon0ZSTGM3ayVVi+twaHKHDFUVloaQ/wug9/c=",
+        version = "v0.0.0-20160724212837-210d2dc333e9",
+    )
+    go_repository(
+        name = "com_github_tv42_httpunix",
+        importpath = "github.com/tv42/httpunix",
+        sum = "h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ=",
+        version = "v0.0.0-20191220191345-2ba4b9c3382c",
+    )
+
+    go_repository(
+        name = "com_github_u_root_uio",
+        importpath = "github.com/u-root/uio",
+        sum = "h1:BFvcl34IGnw8yvJi8hlqLFo9EshRInwWBs2M5fGWzQA=",
+        version = "v0.0.0-20210528114334-82958018845c",
+    )
+    go_repository(
+        name = "com_github_ugorji_go",
+        importpath = "github.com/ugorji/go",
+        sum = "h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=",
+        version = "v1.1.7",
+    )
+    go_repository(
+        name = "com_github_ugorji_go_codec",
+        importpath = "github.com/ugorji/go/codec",
+        sum = "h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=",
+        version = "v1.1.7",
+    )
+
+    go_repository(
         name = "com_github_ulikunitz_xz",
         importpath = "github.com/ulikunitz/xz",
-        version = "v0.5.6",
-        sum = "h1:jGHAfXawEGZQ3blwU5wnWKQJvAraT7Ftq9EXjnXYgt8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4=",
+        version = "v0.5.7",
     )
+
     go_repository(
         name = "com_github_urfave_cli",
         importpath = "github.com/urfave/cli",
-        version = "v1.22.1",
-        sum = "h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:u7tSpNPPswAFymm8IehJhy4uJMlUuU/GmqSkvJ1InXA=",
+        version = "v1.22.4",
     )
     go_repository(
+        name = "com_github_urfave_cli_v2",
+        importpath = "github.com/urfave/cli/v2",
+        sum = "h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=",
+        version = "v2.3.0",
+    )
+    go_repository(
+        name = "com_github_urfave_negroni",
+        importpath = "github.com/urfave/negroni",
+        sum = "h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
+        name = "com_github_vektah_gqlparser",
+        importpath = "github.com/vektah/gqlparser",
+        sum = "h1:ZsyLGn7/7jDNI+y4SEhI4yAxRChlv15pUHMjijT+e68=",
+        version = "v1.1.2",
+    )
+
+    go_repository(
         name = "com_github_vishvananda_netlink",
         importpath = "github.com/vishvananda/netlink",
-        version = "v1.1.0",
-        sum = "h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:+UB2BJA852UkGH42H+Oee69djmxS3ANzl2b/JtT1YiA=",
+        version = "v1.1.1-0.20210330154013-f5de75959ad5",
     )
     go_repository(
         name = "com_github_vishvananda_netns",
         importpath = "github.com/vishvananda/netns",
-        version = "v0.0.0-20200520041808-52d707b772fe",
-        sum = "h1:mjAZxE1nh8yvuwhGHpdDqdhtNu2dgbpk93TwoXuk5so=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:gga7acRE695APm9hlsSMoOoE65U4/TcqNj90mc69Rlg=",
+        version = "v0.0.0-20211101163701-50045581ed74",
     )
     go_repository(
+        name = "com_github_vividcortex_gohistogram",
+        importpath = "github.com/VividCortex/gohistogram",
+        sum = "h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_vmware_govmomi",
+        importpath = "github.com/vmware/govmomi",
+        sum = "h1:gpw/0Ku+6RgF3jsi7fnCLmlcikBHfKBCUcu1qgc16OU=",
+        version = "v0.20.3",
+    )
+
+    go_repository(
         name = "com_github_willf_bitset",
         importpath = "github.com/willf/bitset",
-        version = "v1.1.11",
         sum = "h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE=",
-        build_tags = [
-            "selinux",
-        ],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.1.11",
     )
     go_repository(
+        name = "com_github_xanzy_go_gitlab",
+        importpath = "github.com/xanzy/go-gitlab",
+        sum = "h1:+nHztQuCXGSMluKe5Q9IRaPdz6tO8O0gMkQ0vqGpiBk=",
+        version = "v0.31.0",
+    )
+    go_repository(
+        name = "com_github_xanzy_ssh_agent",
+        importpath = "github.com/xanzy/ssh-agent",
+        sum = "h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=",
+        version = "v0.2.1",
+    )
+    go_repository(
+        name = "com_github_xdg_go_pbkdf2",
+        importpath = "github.com/xdg-go/pbkdf2",
+        sum = "h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "com_github_xdg_go_scram",
+        importpath = "github.com/xdg-go/scram",
+        sum = "h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=",
+        version = "v1.0.2",
+    )
+    go_repository(
+        name = "com_github_xdg_go_stringprep",
+        importpath = "github.com/xdg-go/stringprep",
+        sum = "h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=",
+        version = "v1.0.2",
+    )
+    go_repository(
+        name = "com_github_xeipuuv_gojsonpointer",
+        importpath = "github.com/xeipuuv/gojsonpointer",
+        sum = "h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=",
+        version = "v0.0.0-20180127040702-4e3ac2762d5f",
+    )
+    go_repository(
+        name = "com_github_xeipuuv_gojsonreference",
+        importpath = "github.com/xeipuuv/gojsonreference",
+        sum = "h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=",
+        version = "v0.0.0-20180127040603-bd5ef7bd5415",
+    )
+    go_repository(
+        name = "com_github_xeipuuv_gojsonschema",
+        importpath = "github.com/xeipuuv/gojsonschema",
+        sum = "h1:mvXjJIHRZyhNuGassLTcXTwjiWq7NmjdavZsUnmFybQ=",
+        version = "v0.0.0-20180618132009-1d523034197f",
+    )
+    go_repository(
+        name = "com_github_xi2_xz",
+        importpath = "github.com/xi2/xz",
+        sum = "h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=",
+        version = "v0.0.0-20171230120015-48954b6210f8",
+    )
+
+    go_repository(
         name = "com_github_xiang90_probing",
         importpath = "github.com/xiang90/probing",
-        version = "v0.0.0-20190116061207-43a291ad63a2",
         sum = "h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.0.0-20190116061207-43a291ad63a2",
     )
     go_repository(
+        name = "com_github_xlab_treeprint",
+        importpath = "github.com/xlab/treeprint",
+        sum = "h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI=",
+        version = "v0.0.0-20181112141820-a009c3971eca",
+    )
+    go_repository(
+        name = "com_github_xordataexchange_crypt",
+        importpath = "github.com/xordataexchange/crypt",
+        sum = "h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=",
+        version = "v0.0.3-0.20170626215501-b2862e3d0a77",
+    )
+
+    go_repository(
         name = "com_github_yalue_native_endian",
         importpath = "github.com/yalue/native_endian",
-        version = "v0.0.0-20180607135909-51013b03be4f",
-        sum = "h1:nsQCScpQ8RRf+wIooqfyyEUINV2cAPuo2uVtHSBbA4M=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:e4SxBbaCoOOO4E3axd7FSriUhzc1bIzqZGG5jl6Evbg=",
+        version = "v1.0.2",
     )
     go_repository(
-        name = "io_etcd_go_bbolt",
-        importpath = "go.etcd.io/bbolt",
-        version = "v1.3.5",
-        sum = "h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_yuin_goldmark",
+        importpath = "github.com/yuin/goldmark",
+        sum = "h1:/vn0k+RBvwlxEmP5E7SZMqNxPhfMVFEJiykr15/0XKM=",
+        version = "v1.4.1",
     )
     go_repository(
-        name = "io_etcd_go_etcd",
-        importpath = "go.etcd.io/etcd",
-        version = "v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5",
-        sum = "h1:Gqga3zA9tdAcfqobUGjSoCob5L3f8Dt5EuOp3ihNZko=",
-        build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_yvasiyarov_go_metrics",
+        importpath = "github.com/yvasiyarov/go-metrics",
+        sum = "h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI=",
+        version = "v0.0.0-20140926110328-57bccd1ccd43",
     )
     go_repository(
-        name = "org_mongodb_go_mongo_driver",
-        importpath = "go.mongodb.org/mongo-driver",
-        version = "v1.1.2",
-        sum = "h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_yvasiyarov_gorelic",
+        importpath = "github.com/yvasiyarov/gorelic",
+        sum = "h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE=",
+        version = "v0.0.0-20141212073537-a9bba5b9ab50",
     )
     go_repository(
-        name = "io_opencensus_go",
-        importpath = "go.opencensus.io",
-        version = "v0.22.0",
-        sum = "h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_github_yvasiyarov_newrelic_platform_go",
+        importpath = "github.com/yvasiyarov/newrelic_platform_go",
+        sum = "h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY=",
+        version = "v0.0.0-20140908184405-b21fdbd4370f",
+    )
+
+    go_repository(
+        name = "com_google_cloud_go",
+        importpath = "cloud.google.com/go",
+        sum = "h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y=",
+        version = "v0.100.2",
     )
     go_repository(
-        name = "net_starlark_go",
-        importpath = "go.starlark.net",
-        version = "v0.0.0-20190702223751-32f345186213",
-        sum = "h1:lkYv5AKwvvduv5XWP6szk/bvvgO6aDeUujhZQXIFTes=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_google_cloud_go_bigquery",
+        importpath = "cloud.google.com/go/bigquery",
+        sum = "h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA=",
+        version = "v1.8.0",
     )
     go_repository(
-        name = "org_uber_go_atomic",
-        importpath = "go.uber.org/atomic",
-        version = "v1.4.0",
-        sum = "h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_google_cloud_go_compute",
+        importpath = "cloud.google.com/go/compute",
+        sum = "h1:mPL/MzDDYHsh5tHRS9mhmhWlcgClCrCa6ApQCU6wnHI=",
+        version = "v1.3.0",
     )
     go_repository(
-        name = "org_uber_go_multierr",
-        importpath = "go.uber.org/multierr",
+        name = "com_google_cloud_go_datastore",
+        importpath = "cloud.google.com/go/datastore",
+        sum = "h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ=",
         version = "v1.1.0",
-        sum = "h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
     )
     go_repository(
-        name = "org_uber_go_zap",
-        importpath = "go.uber.org/zap",
-        version = "v1.15.0",
-        sum = "h1:ZZCA22JRF2gQE5FoNmhmrf7jeJJ2uhqDUNRYKm8dvmM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_google_cloud_go_firestore",
+        importpath = "cloud.google.com/go/firestore",
+        sum = "h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY=",
+        version = "v1.1.0",
     )
     go_repository(
-        name = "org_golang_x_arch",
-        importpath = "golang.org/x/arch",
-        version = "v0.0.0-20190927153633-4e8777c89be4",
-        sum = "h1:QlVATYS7JBoZMVaf+cNjb90WD/beKVHnIxFKT4QaHVI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_google_cloud_go_monitoring",
+        importpath = "cloud.google.com/go/monitoring",
+        sum = "h1:vssDZ792skH6AWCDH1OogKfs/FzgEVTB/yUAzfgBR24=",
+        version = "v0.1.0",
     )
     go_repository(
-        name = "org_golang_x_crypto",
-        importpath = "golang.org/x/crypto",
-        version = "v0.0.0-20200622213623-75b288015ac9",
-        sum = "h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_google_cloud_go_pubsub",
+        importpath = "cloud.google.com/go/pubsub",
+        sum = "h1:9cH52jizPUVSSrSe+J16RC9wB0QI7i/cfuCm5UUCcIk=",
+        version = "v1.5.0",
     )
     go_repository(
-        name = "org_golang_x_mod",
-        importpath = "golang.org/x/mod",
-        version = "v0.3.0",
-        sum = "h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=",
-        build_extra_args = [
-            "-go_naming_convention=import_alias",
-            "-go_naming_convention_external=import_alias",
-        ],
+        name = "com_google_cloud_go_spanner",
+        importpath = "cloud.google.com/go/spanner",
+        sum = "h1:oBLJVlW/v3QMntbpUavhneJEQyPcxbAY5+rI+Jv9hvE=",
+        version = "v1.25.0",
     )
     go_repository(
-        name = "org_golang_x_net",
-        importpath = "golang.org/x/net",
-        version = "v0.0.0-20201110031124-69a78807bb2b",
-        sum = "h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_google_cloud_go_storage",
+        importpath = "cloud.google.com/go/storage",
+        sum = "h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA=",
+        version = "v1.10.0",
     )
     go_repository(
-        name = "org_golang_x_oauth2",
-        importpath = "golang.org/x/oauth2",
-        version = "v0.0.0-20191202225959-858c2ad4c8b6",
-        sum = "h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_google_cloud_go_trace",
+        importpath = "cloud.google.com/go/trace",
+        sum = "h1:nUGUK79FOkN0UGUXhBmVBkbu1PYsHe0YyFSPLOD9Npg=",
+        version = "v0.1.0",
     )
     go_repository(
-        name = "org_golang_x_sync",
-        importpath = "golang.org/x/sync",
-        version = "v0.0.0-20181108010431-42b317875d0f",
-        sum = "h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=",
-        build_extra_args = [
-            "-go_naming_convention=import_alias",
-            "-go_naming_convention_external=import_alias",
-        ],
+        name = "com_shuralyov_dmitri_gpu_mtl",
+        importpath = "dmitri.shuralyov.com/gpu/mtl",
+        sum = "h1:+PdD6GLKejR9DizMAKT5DpSAkKswvZrurk1/eEt9+pw=",
+        version = "v0.0.0-20201218220906-28db891af037",
     )
     go_repository(
-        name = "org_golang_x_text",
-        importpath = "golang.org/x/text",
-        version = "v0.3.0",
-        sum = "h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_sourcegraph_sourcegraph_appdash",
+        importpath = "sourcegraph.com/sourcegraph/appdash",
+        sum = "h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM=",
+        version = "v0.0.0-20190731080439-ebfcffb1b5c0",
+    )
+
+    go_repository(
+        name = "com_zx2c4_golang_go118_netip",
+        importpath = "golang.zx2c4.com/go118/netip",
+        sum = "h1:9+v0G0naRhLPOJEeJOL6NuXTtAHHwmkyZlgQJ0XcQ8I=",
+        version = "v0.0.0-20211111135330-a4a02eeacf9d",
     )
     go_repository(
-        name = "org_golang_x_time",
-        importpath = "golang.org/x/time",
-        version = "v0.0.0-20191024005414-555d28b269f0",
-        sum = "h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_zx2c4_golang_wintun",
+        importpath = "golang.zx2c4.com/wintun",
+        sum = "h1:Ug9qvr1myri/zFN6xL17LSCBGFDnphBBhzmILHsM5TY=",
+        version = "v0.0.0-20211104114900-415007cec224",
     )
     go_repository(
-        name = "org_golang_x_tools",
-        importpath = "golang.org/x/tools",
-        version = "v0.1.2-0.20210518182153-17b346669257",
-        sum = "h1:e7SbNJfMEurLnwdNnaP7LItYhtCPChdiq+j3RwB8YGY=",
-        patches = [
-            "//third_party/go/patches:goimports-group-merging.patch",
-        ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "com_zx2c4_golang_wireguard",
+        importpath = "golang.zx2c4.com/wireguard",
+        sum = "h1:Nrf94TOjrvW8nm6N3u2xtbnMZaZudNI9b8nIJH8p8qY=",
+        version = "v0.0.0-20220202223031-3b95c81cc178",
     )
-    go_repository(
-        name = "org_golang_x_xerrors",
-        importpath = "golang.org/x/xerrors",
-        version = "v0.0.0-20191204190536-9bdfabe68543",
-        sum = "h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
+
     go_repository(
         name = "com_zx2c4_golang_wireguard_wgctrl",
         importpath = "golang.zx2c4.com/wireguard/wgctrl",
-        version = "v0.0.0-20200515170644-ec7f26be9d9e",
-        sum = "h1:fqDhK9OlzaaiFjnyaAfR9Q1RPKCK7OCTLlHGP9f74Nk=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:9c4/JVIQUc2qCJEEIiGIs3HmmnFjhPj4qHW4+Uj+u3U=",
+        version = "v0.0.0-20220208144051-fde48d68ee68",
     )
     go_repository(
-        name = "org_gonum_v1_gonum",
-        importpath = "gonum.org/v1/gonum",
-        version = "v0.6.2",
-        sum = "h1:4r+yNT0+8SWcOkXP+63H2zQbN+USnC73cjGUxnDF94Q=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "dev_gocloud",
+        importpath = "gocloud.dev",
+        sum = "h1:EDRyaRAnMGSq/QBto486gWFxMLczAfIYUmusV7XLNBM=",
+        version = "v0.19.0",
     )
     go_repository(
-        name = "org_golang_google_genproto",
-        importpath = "google.golang.org/genproto",
-        version = "v0.0.0-20200224152610-e50cd9704f63",
-        sum = "h1:YzfoEYWbODU5Fbt37+h7X16BWQbad7Q4S6gclTKFXM8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+        name = "dev_gvisor_gvisor",
+        importpath = "gvisor.dev/gvisor",
+        patch_args = ["-p1"],
+        patches = [
+            "//third_party/go/patches:gvisor-containerd-compat.patch",
+            "//third_party/go/patches:gvisor-fix-resolution.patch",
+            #"//third_party/go/patches:gvisor-build-against-newer-runtime-specs.patch",
         ],
+        sum = "h1:aXIFpjZYl3zv2rQyr4rSit5Uq0k7BVXC8lJaDa4Cg7M=",
+        version = "v0.0.0-20220315202956-f1399ecf1672",
     )
     go_repository(
-        name = "org_golang_google_grpc",
-        importpath = "google.golang.org/grpc",
-        version = "v1.29.1",
-        sum = "h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "in_gopkg_airbrake_gobrake_v2",
+        importpath = "gopkg.in/airbrake/gobrake.v2",
+        sum = "h1:7z2uVWwn7oVeeugY1DtlPAy5H+KYgB1KeKTnqjNatLo=",
+        version = "v2.0.9",
     )
     go_repository(
+        name = "in_gopkg_alecthomas_kingpin_v2",
+        importpath = "gopkg.in/alecthomas/kingpin.v2",
+        sum = "h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=",
+        version = "v2.2.6",
+    )
+    go_repository(
+        name = "in_gopkg_check_v1",
+        importpath = "gopkg.in/check.v1",
+        sum = "h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=",
+        version = "v1.0.0-20201130134442-10cb98267c6c",
+    )
+    go_repository(
+        name = "in_gopkg_cheggaaa_pb_v1",
+        importpath = "gopkg.in/cheggaaa/pb.v1",
+        sum = "h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk=",
+        version = "v1.0.28",
+    )
+    go_repository(
+        name = "in_gopkg_datadog_dd_trace_go_v1",
+        importpath = "gopkg.in/DataDog/dd-trace-go.v1",
+        sum = "h1:eDbrrRNAHY15yoftLKGMtgq0vuTXp897QEzAJh368jY=",
+        version = "v1.36.2",
+    )
+
+    go_repository(
         name = "in_gopkg_djherbis_times_v1",
         importpath = "gopkg.in/djherbis/times.v1",
-        version = "v1.2.0",
         sum = "h1:UCvDKl1L/fmBygl2Y7hubXCnY7t4Yj46ZrBFNUipFbM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.2.0",
     )
     go_repository(
+        name = "in_gopkg_errgo_v2",
+        importpath = "gopkg.in/errgo.v2",
+        sum = "h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=",
+        version = "v2.1.0",
+    )
+
+    go_repository(
         name = "in_gopkg_fsnotify_v1",
         importpath = "gopkg.in/fsnotify.v1",
-        version = "v1.4.7",
         sum = "h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.4.7",
     )
     go_repository(
+        name = "in_gopkg_gcfg_v1",
+        importpath = "gopkg.in/gcfg.v1",
+        sum = "h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs=",
+        version = "v1.2.3",
+    )
+    go_repository(
+        name = "in_gopkg_gemnasium_logrus_airbrake_hook_v2",
+        importpath = "gopkg.in/gemnasium/logrus-airbrake-hook.v2",
+        sum = "h1:OAj3g0cR6Dx/R07QgQe8wkA9RNjB2u4i700xBkIT4e0=",
+        version = "v2.1.2",
+    )
+    go_repository(
+        name = "in_gopkg_go_playground_assert_v1",
+        importpath = "gopkg.in/go-playground/assert.v1",
+        sum = "h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=",
+        version = "v1.2.1",
+    )
+    go_repository(
+        name = "in_gopkg_go_playground_validator_v9",
+        importpath = "gopkg.in/go-playground/validator.v9",
+        sum = "h1:SvGtYmN60a5CVKTOzMSyfzWDeZRxRuGvRQyEAKbw1xc=",
+        version = "v9.29.1",
+    )
+
+    go_repository(
         name = "in_gopkg_inf_v0",
         importpath = "gopkg.in/inf.v0",
-        version = "v0.9.1",
         sum = "h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v0.9.1",
     )
     go_repository(
         name = "in_gopkg_ini_v1",
         importpath = "gopkg.in/ini.v1",
-        version = "v1.63.2",
-        sum = "h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=",
+        version = "v1.62.0",
     )
     go_repository(
+        name = "in_gopkg_mcuadros_go_syslog_v2",
+        importpath = "gopkg.in/mcuadros/go-syslog.v2",
+        sum = "h1:60g8zx1BijSVSgLTzLCW9UC4/+i1Ih9jJ1DR5Tgp9vE=",
+        version = "v2.2.1",
+    )
+
+    go_repository(
         name = "in_gopkg_natefinch_lumberjack_v2",
         importpath = "gopkg.in/natefinch/lumberjack.v2",
-        version = "v2.0.0",
         sum = "h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v2.0.0",
     )
     go_repository(
+        name = "in_gopkg_resty_v1",
+        importpath = "gopkg.in/resty.v1",
+        sum = "h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=",
+        version = "v1.12.0",
+    )
+
+    go_repository(
         name = "in_gopkg_square_go_jose_v2",
         importpath = "gopkg.in/square/go-jose.v2",
-        version = "v2.2.2",
-        sum = "h1:orlkJ3myw8CN1nVQHBFfloD+L3egixIa4FvUP6RosSA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=",
+        version = "v2.6.0",
     )
     go_repository(
+        name = "in_gopkg_src_d_go_billy_v4",
+        importpath = "gopkg.in/src-d/go-billy.v4",
+        sum = "h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg=",
+        version = "v4.3.2",
+    )
+    go_repository(
+        name = "in_gopkg_src_d_go_git_fixtures_v3",
+        importpath = "gopkg.in/src-d/go-git-fixtures.v3",
+        sum = "h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg=",
+        version = "v3.5.0",
+    )
+    go_repository(
+        name = "in_gopkg_src_d_go_git_v4",
+        importpath = "gopkg.in/src-d/go-git.v4",
+        sum = "h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE=",
+        version = "v4.13.1",
+    )
+
+    go_repository(
         name = "in_gopkg_tomb_v1",
         importpath = "gopkg.in/tomb.v1",
-        version = "v1.0.0-20141024135613-dd632973f1e7",
         sum = "h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.0.0-20141024135613-dd632973f1e7",
     )
     go_repository(
+        name = "in_gopkg_warnings_v0",
+        importpath = "gopkg.in/warnings.v0",
+        sum = "h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=",
+        version = "v0.1.2",
+    )
+
+    go_repository(
         name = "in_gopkg_yaml_v2",
         importpath = "gopkg.in/yaml.v2",
-        version = "v2.2.8",
-        sum = "h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=",
+        version = "v2.4.0",
     )
     go_repository(
-        name = "io_k8s_api",
-        importpath = "k8s.io/api",
-        version = "v0.19.7",
-        sum = "h1:MpHhls03C2pyzoYcpbe4QqYiiZjdvW+tuWq6TbjV14Y=",
+        name = "in_gopkg_yaml_v3",
+        importpath = "gopkg.in/yaml.v3",
+        sum = "h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=",
+        version = "v3.0.0-20210107192922-496545a6307b",
+    )
+
+    go_repository(
+        name = "io_etcd_go_bbolt",
+        importpath = "go.etcd.io/bbolt",
+        sum = "h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=",
+        version = "v1.3.6",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+        importpath = "go.etcd.io/etcd",
+        sum = "h1:1JFLBqwIgdyHN1ZtgjTBwO+blA6gVOmZurpiMEsETKo=",
+        version = "v0.5.0-alpha.5.0.20200910180754-dd1b699fc489",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_api_v3",
+        build_file_proto_mode = "disable",
+        importpath = "go.etcd.io/etcd/api/v3",
+        sum = "h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_client_pkg_v3",
+        importpath = "go.etcd.io/etcd/client/pkg/v3",
+        sum = "h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_client_v2",
+        importpath = "go.etcd.io/etcd/client/v2",
+        sum = "h1:ymrVwTkefuqA/rPkSW7/B4ApijbPVefRumkY+stNfS0=",
+        version = "v2.305.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_client_v3",
+        importpath = "go.etcd.io/etcd/client/v3",
+        sum = "h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_etcdctl_v3",
+        importpath = "go.etcd.io/etcd/etcdctl/v3",
+        sum = "h1:i8DGjR9gBRoS6NEHF3XBxxh7QwL1DyilXMCkHpyy6zM=",
+        version = "v3.5.0",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_etcdutl_v3",
+        importpath = "go.etcd.io/etcd/etcdutl/v3",
+        sum = "h1:XDNv2bGD6Ylz3Gb9lIGV/IYLk1bwTvyCIi1EI4hyyqo=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_pkg_v3",
+        importpath = "go.etcd.io/etcd/pkg/v3",
+        patch_args = ["-p1"],
+        pre_patches = [
+            "//third_party/go/patches:etcd-fix-stub.patch",
         ],
+        sum = "h1:YZUojdoPhOyl5QILYnR8LTUbbNefu/sV4ma+ZMr2tto=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_raft_v3",
+        build_file_proto_mode = "disable",
+        importpath = "go.etcd.io/etcd/raft/v3",
+        sum = "h1:uCC37qOXqBvKqTGHGyhASsaCsnTuJugl1GvneJNwHWo=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_server_v3",
+        build_file_proto_mode = "disable",
+        importpath = "go.etcd.io/etcd/server/v3",
+        sum = "h1:B6ytJvS4Fmt8nkjzS2/8POf4tuPhFMluE0lWd4dx/7U=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_tests_v3",
+        importpath = "go.etcd.io/etcd/tests/v3",
+        sum = "h1:uk7/uMGVebpBDl+roivowHt6gJ5Fnqwik3syDkoSKdo=",
+        version = "v3.5.2",
+    )
+    go_repository(
+        name = "io_etcd_go_etcd_v3",
+        importpath = "go.etcd.io/etcd/v3",
+        sum = "h1:fs7tB+L/xRDi/+p9qKuaPGCtMX6vkovLRXTqvEE98Ek=",
+        version = "v3.5.0",
+    )
+    go_repository(
+        name = "io_gitea_code_sdk_gitea",
+        importpath = "code.gitea.io/sdk/gitea",
+        sum = "h1:CdI3J82Mqn0mElyEKa5DUSr3Wi2R+qm/6uVtCkSSqSM=",
+        version = "v0.11.3",
+    )
+
+    go_repository(
+        name = "io_k8s_api",
+        build_file_proto_mode = "disable",
+        importpath = "k8s.io/api",
+        replace = "k8s.io/api",
+        sum = "h1:85gnfXQOWbJa1SiWGpE9EEtHs0UVvDyIsSMpEtl2D4E=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_apiextensions_apiserver",
-        importpath = "k8s.io/apiextensions-apiserver",
-        version = "v0.19.7",
-        sum = "h1:aV9DANMSCCYBEMbtoT/5oesrtcciQrjy9yqWVtZZL5A=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "k8s.io/apiextensions-apiserver",
+        replace = "k8s.io/apiextensions-apiserver",
+        sum = "h1:AFDUEu/yEf0YnuZhqhIFhPLPhhcQQVuR1u3WCh0rveU=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_apimachinery",
-        importpath = "k8s.io/apimachinery",
-        version = "v0.19.8-rc.0",
-        sum = "h1:/vt04+wL+Y79Qsu8hAo2K4QJA+AKGkJCYmoTTVrUiPQ=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "k8s.io/apimachinery",
+        replace = "k8s.io/apimachinery",
+        sum = "h1:fhnuMd/xUL3Cjfl64j5ULKZ1/J9n8NuQEgNL+WXWfdM=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_apiserver",
-        importpath = "k8s.io/apiserver",
-        version = "v0.19.7",
-        sum = "h1:fOOELJ9TNC6DgKL3GUkQLE/EBMLjwBseTstx2eRP61o=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "k8s.io/apiserver",
+        replace = "k8s.io/apiserver",
+        sum = "h1:zNvQlG+C/ERjuUz4p7eY/0IWHaMixRSBoxgmyIdwo9Y=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_cli_runtime",
         importpath = "k8s.io/cli-runtime",
-        version = "v0.19.7",
-        sum = "h1:VkHsqrQYCD6+yBm2k9lOxLJtfo1tmb/TdYIHQ2RSCsY=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/cli-runtime",
+        sum = "h1:C3AFQmo4TK4dlVPLOI62gtHEHu0OfA2Cp4UVRZ1JXns=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_client_go",
         importpath = "k8s.io/client-go",
-        version = "v0.19.7",
-        sum = "h1:SoJ4mzZ9LyXBGDe8MmpMznw0CwQ1ITWgsmG7GixvhUU=",
-        pre_patches = [
-            "//third_party/go/patches:k8s-client-go.patch",
-        ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/client-go",
+        sum = "h1:YVWvPeerA2gpUudLelvsolzH7c2sFoXXR5wM/sWqNFU=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_cloud_provider",
         importpath = "k8s.io/cloud-provider",
-        version = "v0.19.7",
-        sum = "h1:01fiPTLkTU/MNKZBcMmeYQ5DWqRS4d3GhYGGGlkjgOw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/cloud-provider",
+        sum = "h1:Nx42V7+Vpaad3qZE031MpTfCDl3jeQrX6wuwieES/nc=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_cluster_bootstrap",
         importpath = "k8s.io/cluster-bootstrap",
-        version = "v0.19.7",
-        sum = "h1:xlI+YfeS5gOVa33WVh1viiPZMDN9j7BAiY0iJkg2LwI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/cluster-bootstrap",
+        sum = "h1:tYz2h91tY1zcxMk3qMajcPgkixqvB4+uFrOiznlp7Fo=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_code_generator",
         importpath = "k8s.io/code-generator",
-        version = "v0.19.9-rc.0",
-        sum = "h1:ci5Y09V0Uiim61fltZsjHYp+i6eNaMMmtIlIveHqQ9Y=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/code-generator",
+        sum = "h1:MmDMH74oo8YD4r+KdUzd/VVmXUeXf5u0owLI9wZWP5Y=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_component_base",
         importpath = "k8s.io/component-base",
-        version = "v0.19.7",
-        sum = "h1:ZXS2VRWOWBOc2fTd1zjzhi/b/mkqFT9FDqiNsn1cH30=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/component-base",
+        sum = "h1:SziYh48+QKxK+ykJ3Ejqd98XdZIseVBG7sBaNLPqy6M=",
+        version = "v0.23.4",
     )
     go_repository(
+        name = "io_k8s_component_helpers",
+        importpath = "k8s.io/component-helpers",
+        replace = "k8s.io/component-helpers",
+        sum = "h1:zCLeBuo3Qs0BqtJu767RXJgs5S9ruFJZcbM1aD+cMmc=",
+        version = "v0.23.4",
+    )
+    go_repository(
+        name = "io_k8s_controller_manager",
+        importpath = "k8s.io/controller-manager",
+        replace = "k8s.io/controller-manager",
+        sum = "h1:u3M3RI/Ppt0C8JDj8in60jWbRYihihK6h3H/I4ozWbE=",
+        version = "v0.23.4",
+    )
+
+    go_repository(
         name = "io_k8s_cri_api",
-        importpath = "k8s.io/cri-api",
-        version = "v0.19.8-rc.0",
-        sum = "h1:aXNNIIoVcmIB/mlz/otcULQOgnErxnLB4uaWENHKblA=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "k8s.io/cri-api",
+        replace = "k8s.io/cri-api",
+        sum = "h1:f1bp27XIBAdJEShjDEKBB3Lx/oZ9GgpQ3bFEx7hV0nI=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_csi_translation_lib",
         importpath = "k8s.io/csi-translation-lib",
-        version = "v0.19.7",
-        sum = "h1:Spr0XWqXufEUQA47axmPTm1xOabdMYG9MUbJVaRRb0g=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/csi-translation-lib",
+        sum = "h1:n6x1Sd338WFB0GQFEMPmsEZblgRo7Bx3AUVebrWPrjM=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_gengo",
         importpath = "k8s.io/gengo",
-        version = "v0.0.0-20200428234225-8167cfdcfc14",
-        sum = "h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA=",
+        version = "v0.0.0-20210813121822-485abfe95c7c",
     )
     go_repository(
         name = "io_k8s_heapster",
         importpath = "k8s.io/heapster",
-        version = "v1.2.0-beta.1",
         sum = "h1:lUsE/AHOMHpi3MLlBEkaU8Esxm5QhdyCrv1o7ot0s84=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.2.0-beta.1",
     )
     go_repository(
+        name = "io_k8s_klog",
+        importpath = "k8s.io/klog",
+        sum = "h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
         name = "io_k8s_klog_v2",
         importpath = "k8s.io/klog/v2",
-        version = "v2.2.0",
-        sum = "h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:P4RRucWk/lFOlDdkAr3mc7iWFkgKrZY9qZMAgek06S4=",
+        version = "v2.40.1",
     )
     go_repository(
         name = "io_k8s_kube_aggregator",
-        importpath = "k8s.io/kube-aggregator",
-        version = "v0.19.7",
-        sum = "h1:Eol5vPNFKaDScdVuTh0AofhuSr4cJxP5Vfv8JXW8OAQ=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "k8s.io/kube-aggregator",
+        replace = "k8s.io/kube-aggregator",
+        sum = "h1:gLk78rGLVfUXCdD14NrKg/JFBmNNCZ8FEs3tYt+W6Zk=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_kube_controller_manager",
         importpath = "k8s.io/kube-controller-manager",
-        version = "v0.19.7",
-        sum = "h1:3rNXjHM5LHcv2HiO2JjdV4yW3EN+2tCPaKXWL/Cl8TM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/kube-controller-manager",
+        sum = "h1:m9RTyxWipaFs/Bb0Z3XIgXEVHEEIIVspa7tev+kXz8w=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_kube_openapi",
         importpath = "k8s.io/kube-openapi",
-        version = "v0.0.0-20200805222855-6aeccd4b50c6",
-        sum = "h1:+WnxoVtG8TMiudHBSEtrVL1egv36TkkJm+bA8AxicmQ=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4=",
+        version = "v0.0.0-20211115234752-e816edb12b65",
     )
     go_repository(
         name = "io_k8s_kube_proxy",
         importpath = "k8s.io/kube-proxy",
-        version = "v0.19.7",
-        sum = "h1:QQUwEnHA1jawodclndlmK/6Ifc9XVNlUaQ4Vq5RVbI8=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/kube-proxy",
+        sum = "h1:jkpSBIbaGtLsHfdQR7oCs37iQtIgU2XlRXDwjsY2NM8=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_kube_scheduler",
         importpath = "k8s.io/kube-scheduler",
-        version = "v0.19.7",
-        sum = "h1:TlQFoH7rATVqU7myNZ4FBgnXdGIwR7iBBNk3ir8Y9WM=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/kube-scheduler",
+        sum = "h1:NR/WCkM5Rmz3lzZq8vgKZW6fJFbyqfiCHn8xYkibxBw=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_kubectl",
         importpath = "k8s.io/kubectl",
-        version = "v0.19.7",
-        sum = "h1:pSsha+MBr9KLhn0IKrRikeAZ7g2oeShIGHLgqAzE3Ak=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/kubectl",
+        sum = "h1:mAa+zEOlyZieecEy+xSrhjkpMcukYyHWzcNdX28dzMY=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_kubelet",
-        importpath = "k8s.io/kubelet",
-        version = "v0.19.7",
-        sum = "h1:cPp0fXN99cxyXeoI3nG2ZBORUvR0liT+bg6ofCybJzw=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+        importpath = "k8s.io/kubelet",
+        patch_args = ["-p1"],
+        patches = [
+            "//third_party/go/patches:kubelet-fix-path.patch",
         ],
+        replace = "k8s.io/kubelet",
+        sum = "h1:yptgklhQ3dtHHIpH/RgI0861XWoJ9/YIBnnxYS6l8VI=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_kubernetes",
-        importpath = "k8s.io/kubernetes",
-        version = "v1.19.7",
-        sum = "h1:Yk9W5SL1KR2mwy0nNZwjFXNImfK7ihrbKhXttidNTiE=",
         build_file_proto_mode = "disable",
-        build_tags = [
-            "providerless",
-        ],
+        build_tags = ["providerless", "dockerless"],  #keep
+        importpath = "k8s.io/kubernetes",
+        patch_args = ["-p1"],
         patches = [
-            "//third_party/go/patches:k8s-kubernetes.patch",
-            "//third_party/go/patches:k8s-kubernetes-build.patch",
             "//third_party/go/patches:k8s-native-metrics.patch",
-            "//third_party/go/patches:k8s-use-native.patch",
-            "//third_party/go/patches:k8s-revert-seccomp-runtime-default.patch",
             "//third_party/go/patches:k8s-removed-block-device-pseudo-locks.patch",
+            "//third_party/go/patches:k8s-jose-semver-fix.patch",
         ],
         pre_patches = [
-            "//third_party/go/patches:k8s-e2e-tests-providerless.patch",
-            "//third_party/go/patches:k8s-fix-paths.patch",
             "//third_party/go/patches:k8s-fix-logs-path.patch",
             "//third_party/go/patches:k8s-drop-legacy-log-path.patch",
+            "//third_party/go/patches:k8s-adopt-to-go-jose-2.3.patch",
+            "//third_party/go/patches:k8s-adopt-to-runc-1.1.patch",
+            "//third_party/go/patches:k8s-backport-no-dockershim.patch",
+            "@monogon_k8s_pregenerate_openapi_patch//file",
         ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:25dqAMS96u+9L/A7AHdEW7aMTcmHoQMbMPug6Fa61JE=",
+        version = "v1.23.4",
     )
     go_repository(
         name = "io_k8s_legacy_cloud_providers",
         importpath = "k8s.io/legacy-cloud-providers",
-        version = "v0.19.7",
-        sum = "h1:YJ/l/8/Hn56I9m1cudK8aNypRA/NvI/hYhg8fo/CTus=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/legacy-cloud-providers",
+        sum = "h1:apiVRic5Yg1o5hqgMZoClpWQB2cL/rFnpM1d40qR7xA=",
+        version = "v0.23.4",
     )
     go_repository(
         name = "io_k8s_metrics",
-        importpath = "k8s.io/metrics",
-        version = "v0.19.7",
-        sum = "h1:fpTtFhNtS0DwJiYGGsL4YoSjHlLw8qugkgw3EXSWaUA=",
         build_file_proto_mode = "disable",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        importpath = "k8s.io/metrics",
+        replace = "k8s.io/metrics",
+        sum = "h1:99+9V/J1PuCqwvYFiuiuZcDImTx4SfFFiwsIB0ZTqUQ=",
+        version = "v0.23.4",
     )
     go_repository(
-        name = "io_k8s_repo_infra",
-        importpath = "k8s.io/repo-infra",
-        version = "v0.1.4-0.20210105022653-a3483874bd37",
-        sum = "h1:0GPavEcPKBA0rYl7f6dO0mXYmx7t9RaXD3be2g23Ps4=",
-        pre_patches = [
-            "//third_party/go/patches:k8s-infra-bzl4-compat.patch",
-            "//third_party/go/patches:k8s-infra-fix-go116.patch",
-        ],
+        name = "io_k8s_mount_utils",
+        importpath = "k8s.io/mount-utils",
         patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+        pre_patches = [
+            "//third_party/go/patches:k8s-native-mounter.patch",
         ],
+        replace = "k8s.io/mount-utils",
+        sum = "h1:tWUj5A0DJ29haMiO7F3pNdP2HwyMWczzvqQmikFc9s8=",
+        version = "v0.23.4",
     )
     go_repository(
+        name = "io_k8s_pod_security_admission",
+        importpath = "k8s.io/pod-security-admission",
+        replace = "k8s.io/pod-security-admission",
+        sum = "h1:f7gLBbS/E03kCY0CBR3LjFqpsdPjnBT8nyBbFUbqoSk=",
+        version = "v0.23.4",
+    )
+
+    go_repository(
         name = "io_k8s_sample_apiserver",
         importpath = "k8s.io/sample-apiserver",
-        version = "v0.19.7",
-        sum = "h1:ZWD6dsvqpqhWj3jKRb19/m/bo/0r+TRgjkX+h5m7f4g=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        replace = "k8s.io/sample-apiserver",
+        sum = "h1:I74oWhsHzZ0ZowqXtBtW6nqamu0wmNXqlcQBbKOOpDY=",
+        version = "v0.23.4",
     )
-    go_repository(
-        name = "io_k8s_utils",
-        importpath = "k8s.io/utils",
-        version = "v0.0.0-20200729134348-d5654de09c73",
-        sum = "h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg=",
-        patches = [
-            "//third_party/go/patches:k8s-native-mounter.patch",
-        ],
-        patch_args = ["-p1"],
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
-    )
+
     go_repository(
         name = "io_k8s_sigs_apiserver_network_proxy_konnectivity_client",
         importpath = "sigs.k8s.io/apiserver-network-proxy/konnectivity-client",
-        version = "v0.0.9",
-        sum = "h1:rusRLrDhjBp6aYtl9sGEvQJr6faoHoDLd0YcUBTZguI=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:KQOkVzXrLNb0EP6W0FD6u3CCPAwgXFYwZitbj7K0P0Y=",
+        version = "v0.0.27",
     )
     go_repository(
-        name = "io_k8s_sigs_kustomize",
-        importpath = "sigs.k8s.io/kustomize",
-        version = "v2.0.3+incompatible",
-        sum = "h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        name = "io_k8s_sigs_json",
+        importpath = "sigs.k8s.io/json",
+        sum = "h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s=",
+        version = "v0.0.0-20211020170558-c049b76a60c6",
     )
+
+    go_repository(
+        name = "io_k8s_sigs_kustomize_api",
+        importpath = "sigs.k8s.io/kustomize/api",
+        sum = "h1:KgU7hfYoscuqag84kxtzKdEC3mKMb99DPI3a0eaV1d0=",
+        version = "v0.10.1",
+    )
+    go_repository(
+        name = "io_k8s_sigs_kustomize_cmd_config",
+        importpath = "sigs.k8s.io/kustomize/cmd/config",
+        sum = "h1:2GD3+knDaqZo6rSibkc4kKGp8auNBJrGPZQCTWN4Rtc=",
+        version = "v0.10.2",
+    )
+    go_repository(
+        name = "io_k8s_sigs_kustomize_kustomize_v4",
+        importpath = "sigs.k8s.io/kustomize/kustomize/v4",
+        sum = "h1:6hgMEo3Gt0XmhDt4vo0FJ0LRDMc4i8JC6SUW24D4hQM=",
+        version = "v4.4.1",
+    )
+    go_repository(
+        name = "io_k8s_sigs_kustomize_kyaml",
+        importpath = "sigs.k8s.io/kustomize/kyaml",
+        sum = "h1:9c+ETyNfSrVhxvphs+K2dzT3dh5oVPPEqPOE/cUpScY=",
+        version = "v0.13.0",
+    )
+
     go_repository(
         name = "io_k8s_sigs_structured_merge_diff_v4",
         importpath = "sigs.k8s.io/structured-merge-diff/v4",
-        version = "v4.0.1",
-        sum = "h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        sum = "h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=",
+        version = "v4.2.1",
     )
     go_repository(
         name = "io_k8s_sigs_yaml",
         importpath = "sigs.k8s.io/yaml",
-        version = "v1.2.0",
         sum = "h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=",
-        build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
-        ],
+        version = "v1.2.0",
     )
     go_repository(
-        name = "ml_vbom_util",
-        importpath = "vbom.ml/util",
-        version = "v0.0.0-20160121211510-db5cfe13f5cc",
-        sum = "h1:MksmcCZQWAQJCTA5T0jgI/0sJ51AVm4Z41MrmfczEoc=",
+        name = "io_k8s_system_validators",
+        importpath = "k8s.io/system-validators",
+        sum = "h1:21qaPNdZ+mQrm4qc5shU0T5Eh49t/miFqZsn4sW8Hr0=",
+        version = "v1.6.0",
+    )
+
+    go_repository(
+        name = "io_k8s_utils",
+        importpath = "k8s.io/utils",
+        sum = "h1:ck1fRPWPJWsMd8ZRFsWc6mh/zHp5fZ/shhbrgPUxDAE=",
+        version = "v0.0.0-20211116205334-6203023598ed",
+    )
+    go_repository(
+        name = "io_opencensus_go",
+        importpath = "go.opencensus.io",
+        sum = "h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=",
+        version = "v0.23.0",
+    )
+    go_repository(
+        name = "io_opencensus_go_contrib_exporter_aws",
+        importpath = "contrib.go.opencensus.io/exporter/aws",
+        sum = "h1:YsbWYxDZkC7x2OxlsDEYvvEXZ3cBI3qBgUK5BqkZvRw=",
+        version = "v0.0.0-20181029163544-2befc13012d0",
+    )
+    go_repository(
+        name = "io_opencensus_go_contrib_exporter_ocagent",
+        importpath = "contrib.go.opencensus.io/exporter/ocagent",
+        sum = "h1:TKXjQSRS0/cCDrP7KvkgU6SmILtF/yV2TOs/02K/WZQ=",
+        version = "v0.5.0",
+    )
+    go_repository(
+        name = "io_opencensus_go_contrib_exporter_stackdriver",
+        importpath = "contrib.go.opencensus.io/exporter/stackdriver",
+        sum = "h1:lIFYmQsqejvlq+GobFUbC5F0prD5gvhP6r0gWLZRDq4=",
+        version = "v0.13.8",
+    )
+    go_repository(
+        name = "io_opencensus_go_contrib_integrations_ocsql",
+        importpath = "contrib.go.opencensus.io/integrations/ocsql",
+        sum = "h1:kfg5Yyy1nYUrqzyfW5XX+dzMASky8IJXhtHe0KTYNS4=",
+        version = "v0.1.4",
+    )
+    go_repository(
+        name = "io_opencensus_go_contrib_resource",
+        importpath = "contrib.go.opencensus.io/resource",
+        sum = "h1:4r2CANuYhKGmYWP02+5E94rLRcS/YeD+KlxSrOsMxk0=",
+        version = "v0.1.1",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_contrib",
+        importpath = "go.opentelemetry.io/contrib",
+        replace = "go.opentelemetry.io/contrib",
+        sum = "h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc",
+        importpath = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc",
+        replace = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc",
+        sum = "h1:sO4WKdPAudZGKPcpZT4MJn6JaDmpyLrMPDGGyA1SttE=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp",
+        importpath = "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
+        replace = "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
+        sum = "h1:Q3C9yzW6I9jqEc8sawxzxZmY48fs9u220KXq6d5s3XU=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel",
+        importpath = "go.opentelemetry.io/otel",
+        replace = "go.opentelemetry.io/otel",
+        sum = "h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_exporters_otlp",
+        importpath = "go.opentelemetry.io/otel/exporters/otlp",
+        replace = "go.opentelemetry.io/otel/exporters/otlp",
+        sum = "h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_exporters_otlp_internal_retry",
+        importpath = "go.opentelemetry.io/otel/exporters/otlp/internal/retry",
+        sum = "h1:R/OBkMoGgfy2fLhs2QhkCI1w4HLEQX92GCcJB6SSdNk=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace",
+        importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace",
+        sum = "h1:giGm8w67Ja7amYNfYMdme7xSp2pIxThWopw8+QP51Yk=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc",
+        importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc",
+        sum = "h1:VQbUHoJqytHHSJ1OZodPH9tvZZSVzUHjPHpkO85sT6k=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp",
+        importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp",
+        sum = "h1:Ydage/P0fRrSPpZeCVxzjqGcI6iVmG2xb43+IR8cjqM=",
+        version = "v1.3.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_metric",
+        importpath = "go.opentelemetry.io/otel/metric",
+        replace = "go.opentelemetry.io/otel/metric",
+        sum = "h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_oteltest",
+        importpath = "go.opentelemetry.io/otel/oteltest",
+        replace = "go.opentelemetry.io/otel/oteltest",
+        sum = "h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_sdk",
+        importpath = "go.opentelemetry.io/otel/sdk",
+        replace = "go.opentelemetry.io/otel/sdk",
+        sum = "h1:JsxtGXd06J8jrnya7fdI/U/MR6yXA5DtbZy+qoHQlr8=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_sdk_export_metric",
+        importpath = "go.opentelemetry.io/otel/sdk/export/metric",
+        replace = "go.opentelemetry.io/otel/sdk/export/metric",
+        sum = "h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_sdk_metric",
+        importpath = "go.opentelemetry.io/otel/sdk/metric",
+        replace = "go.opentelemetry.io/otel/sdk/metric",
+        sum = "h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_otel_trace",
+        importpath = "go.opentelemetry.io/otel/trace",
+        replace = "go.opentelemetry.io/otel/trace",
+        sum = "h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw=",
+        version = "v0.20.0",
+    )
+    go_repository(
+        name = "io_opentelemetry_go_proto_otlp",
+        importpath = "go.opentelemetry.io/proto/otlp",
+        replace = "go.opentelemetry.io/proto/otlp",
+        sum = "h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8=",
+        version = "v0.7.0",
+    )
+    go_repository(
+        name = "io_rsc_binaryregexp",
+        importpath = "rsc.io/binaryregexp",
+        sum = "h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=",
+        version = "v0.2.0",
+    )
+    go_repository(
+        name = "io_rsc_pdf",
+        importpath = "rsc.io/pdf",
+        sum = "h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=",
+        version = "v0.1.1",
+    )
+    go_repository(
+        name = "io_rsc_quote_v3",
+        importpath = "rsc.io/quote/v3",
+        sum = "h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=",
+        version = "v3.1.0",
+    )
+    go_repository(
+        name = "io_rsc_sampler",
+        importpath = "rsc.io/sampler",
+        sum = "h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=",
+        version = "v1.3.0",
+    )
+
+    go_repository(
+        name = "net_starlark_go",
+        importpath = "go.starlark.net",
+        sum = "h1:YiRMXXgG+Pg26t1fjq+iAjaauKWMC9cmGFrtOEuwDDg=",
+        version = "v0.0.0-20200821142938-949cc6f4b097",
+    )
+    go_repository(
+        name = "org_bazil_fuse",
+        importpath = "bazil.org/fuse",
+        sum = "h1:SRsZGA7aFnCZETmov57jwPrWuTmaZK6+4R4v5FUe1/c=",
+        version = "v0.0.0-20200407214033-5883e5a4b512",
+    )
+    go_repository(
+        name = "org_bitbucket_bertimus9_systemstat",
+        importpath = "bitbucket.org/bertimus9/systemstat",
+        sum = "h1:N9r8OBSXAgEUfho3SQtZLY8zo6E1OdOMvelvP22aVFc=",
+        version = "v0.0.0-20180207000608-0eeff89b0690",
+    )
+    go_repository(
+        name = "org_bitbucket_creachadair_shell",
+        importpath = "bitbucket.org/creachadair/shell",
+        sum = "h1:reJflDbKqnlnqb4Oo2pQ1/BqmY/eCWcNGHrIUO8qIzc=",
+        version = "v0.0.6",
+    )
+
+    go_repository(
+        name = "org_golang_google_api",
+        importpath = "google.golang.org/api",
+        sum = "h1:67zQnAE0T2rB0A3CwLSas0K+SbVzSxP+zTLkQLexeiw=",
+        version = "v0.70.0",
+    )
+    go_repository(
+        name = "org_golang_google_appengine",
+        importpath = "google.golang.org/appengine",
+        sum = "h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=",
+        version = "v1.6.7",
+    )
+    go_repository(
+        name = "org_golang_google_cloud",
+        importpath = "google.golang.org/cloud",
+        sum = "h1:Cpp2P6TPjujNoC5M2KHY6g7wfyLYfIWRZaSdIKfDasA=",
+        version = "v0.0.0-20151119220103-975617b05ea8",
+    )
+
+    go_repository(
+        name = "org_golang_google_genproto",
+        importpath = "google.golang.org/genproto",
+        sum = "h1:TU4rFa5APdKTq0s6B7WTsH6Xmx0Knj86s6Biz56mErE=",
+        version = "v0.0.0-20220218161850-94dd64e39d7c",
+    )
+    go_repository(
+        name = "org_golang_google_grpc",
+        importpath = "google.golang.org/grpc",
+        sum = "h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M=",
+        version = "v1.45.0",
+    )
+    go_repository(
+        name = "org_golang_google_grpc_cmd_protoc_gen_go_grpc",
+        importpath = "google.golang.org/grpc/cmd/protoc-gen-go-grpc",
+        sum = "h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=",
+        version = "v1.1.0",
+    )
+    go_repository(
+        name = "org_golang_google_protobuf",
+        importpath = "google.golang.org/protobuf",
+        sum = "h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=",
+        version = "v1.27.1",
+    )
+
+    go_repository(
+        name = "org_golang_x_arch",
+        importpath = "golang.org/x/arch",
+        sum = "h1:QlVATYS7JBoZMVaf+cNjb90WD/beKVHnIxFKT4QaHVI=",
+        version = "v0.0.0-20190927153633-4e8777c89be4",
+    )
+
+    go_repository(
+        name = "org_golang_x_crypto",
+        importpath = "golang.org/x/crypto",
+        sum = "h1:lnZ4LoV0UMdibeCUfIB2a4uFwRu491WX/VB2reB8xNc=",
+        version = "v0.0.0-20220208050332-20e1d8d225ab",
+    )
+    go_repository(
+        name = "org_golang_x_exp",
+        importpath = "golang.org/x/exp",
+        sum = "h1:GrkO5AtFUU9U/1f5ctbIBXtBGeSJbWwIYfIsTcFMaX4=",
+        version = "v0.0.0-20210220032938-85be41e4509f",
+    )
+    go_repository(
+        name = "org_golang_x_image",
+        importpath = "golang.org/x/image",
+        sum = "h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=",
+        version = "v0.0.0-20190802002840-cff245a6509b",
+    )
+    go_repository(
+        name = "org_golang_x_lint",
+        importpath = "golang.org/x/lint",
+        sum = "h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=",
+        version = "v0.0.0-20210508222113-6edffad5e616",
+    )
+    go_repository(
+        name = "org_golang_x_mobile",
+        importpath = "golang.org/x/mobile",
+        sum = "h1:kgfVkAEEQXXQ0qc6dH7n6y37NAYmTFmz0YRwrRjgxKw=",
+        version = "v0.0.0-20201217150744-e6ae53a27f4f",
+    )
+
+    go_repository(
+        name = "org_golang_x_mod",
         build_extra_args = [
-            "-go_naming_convention=go_default_library",
-            "-go_naming_convention_external=go_default_library",
+            "-go_naming_convention=import_alias",
+            "-go_naming_convention_external=import_alias",
         ],
+        importpath = "golang.org/x/mod",
+        sum = "h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=",
+        version = "v0.5.1",
+    )
+    go_repository(
+        name = "org_golang_x_net",
+        importpath = "golang.org/x/net",
+        sum = "h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc=",
+        version = "v0.0.0-20220225172249-27dd8689420f",
+    )
+    go_repository(
+        name = "org_golang_x_oauth2",
+        importpath = "golang.org/x/oauth2",
+        sum = "h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg=",
+        version = "v0.0.0-20211104180415-d3ed0bb246c8",
+    )
+
+    go_repository(
+        name = "org_golang_x_sync",
+        build_extra_args = [
+            "-go_naming_convention=import_alias",
+            "-go_naming_convention_external=import_alias",
+        ],
+        importpath = "golang.org/x/sync",
+        sum = "h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=",
+        version = "v0.0.0-20210220032951-036812b2e83c",
+    )
+    go_repository(
+        name = "org_golang_x_sys",
+        importpath = "golang.org/x/sys",
+        sum = "h1:y/woIyUBFbpQGKS0u1aHF/40WUDnek3fPOyD08H5Vng=",
+        version = "v0.0.0-20220310020820-b874c991c1a5",
+    )
+    go_repository(
+        name = "org_golang_x_term",
+        importpath = "golang.org/x/term",
+        sum = "h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=",
+        version = "v0.0.0-20210927222741-03fcf44c2211",
+    )
+
+    go_repository(
+        name = "org_golang_x_text",
+        importpath = "golang.org/x/text",
+        sum = "h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=",
+        version = "v0.3.7",
+    )
+    go_repository(
+        name = "org_golang_x_time",
+        importpath = "golang.org/x/time",
+        sum = "h1:GZokNIeuVkl3aZHJchRrr13WCsols02MLUcz1U9is6M=",
+        version = "v0.0.0-20211116232009-f0f3c7e86c11",
+    )
+    go_repository(
+        name = "org_golang_x_tools",
+        importpath = "golang.org/x/tools",
+        patch_args = ["-p1"],
+        patches = [
+            "//third_party/go/patches:goimports-group-merging.patch",
+        ],
+        sum = "h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8=",
+        version = "v0.1.9",
+    )
+    go_repository(
+        name = "org_golang_x_xerrors",
+        importpath = "golang.org/x/xerrors",
+        sum = "h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=",
+        version = "v0.0.0-20200804184101-5ec99f83aff1",
+    )
+
+    go_repository(
+        name = "org_gonum_v1_gonum",
+        importpath = "gonum.org/v1/gonum",
+        sum = "h1:4r+yNT0+8SWcOkXP+63H2zQbN+USnC73cjGUxnDF94Q=",
+        version = "v0.6.2",
+    )
+    go_repository(
+        name = "org_gonum_v1_netlib",
+        importpath = "gonum.org/v1/netlib",
+        sum = "h1:jRyg0XfpwWlhEV8mDfdNGBeSJM2fuyh9Yjrnd8kF2Ts=",
+        version = "v0.0.0-20190331212654-76723241ea4e",
+    )
+    go_repository(
+        name = "org_gonum_v1_plot",
+        importpath = "gonum.org/v1/plot",
+        sum = "h1:Qh4dB5D/WpoUUp3lSod7qgoyEHbDGPUWjIbnqdqqe1k=",
+        version = "v0.0.0-20190515093506-e2840ee46a6b",
+    )
+    go_repository(
+        name = "org_modernc_cc",
+        importpath = "modernc.org/cc",
+        sum = "h1:nPibNuDEx6tvYrUAtvDTTw98rx5juGsa5zuDnKwEEQQ=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "org_modernc_golex",
+        importpath = "modernc.org/golex",
+        sum = "h1:wWpDlbK8ejRfSyi0frMyhilD3JBvtcx2AdGDnU+JtsE=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "org_modernc_mathutil",
+        importpath = "modernc.org/mathutil",
+        sum = "h1:93vKjrJopTPrtTNpZ8XIovER7iCIH1QU7wNbOQXC60I=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "org_modernc_strutil",
+        importpath = "modernc.org/strutil",
+        sum = "h1:XVFtQwFVwc02Wk+0L/Z/zDDXO81r5Lhe6iMKmGX3KhE=",
+        version = "v1.0.0",
+    )
+    go_repository(
+        name = "org_modernc_xc",
+        importpath = "modernc.org/xc",
+        sum = "h1:7ccXrupWZIS3twbUGrtKmHS2DXY6xegFua+6O3xgAFU=",
+        version = "v1.0.0",
+    )
+
+    go_repository(
+        name = "org_mongodb_go_mongo_driver",
+        importpath = "go.mongodb.org/mongo-driver",
+        sum = "h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA=",
+        version = "v1.1.2",
+    )
+    go_repository(
+        name = "org_mozilla_go_pkcs7",
+        importpath = "go.mozilla.org/pkcs7",
+        sum = "h1:A/5uWzF44DlIgdm/PQFwfMkW0JX+cIcQi/SwLAmZP5M=",
+        version = "v0.0.0-20200128120323-432b2356ecb1",
+    )
+
+    go_repository(
+        name = "org_uber_go_atomic",
+        importpath = "go.uber.org/atomic",
+        sum = "h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=",
+        version = "v1.7.0",
+    )
+    go_repository(
+        name = "org_uber_go_goleak",
+        importpath = "go.uber.org/goleak",
+        sum = "h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=",
+        version = "v1.1.12",
+    )
+
+    go_repository(
+        name = "org_uber_go_multierr",
+        importpath = "go.uber.org/multierr",
+        sum = "h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=",
+        version = "v1.8.0",
+    )
+    go_repository(
+        name = "org_uber_go_tools",
+        importpath = "go.uber.org/tools",
+        sum = "h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=",
+        version = "v0.0.0-20190618225709-2cfd321de3ee",
+    )
+
+    go_repository(
+        name = "org_uber_go_zap",
+        importpath = "go.uber.org/zap",
+        sum = "h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=",
+        version = "v1.19.0",
+    )
+    go_repository(
+        name = "tools_gotest",
+        importpath = "gotest.tools",
+        sum = "h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=",
+        version = "v2.2.0+incompatible",
+    )
+
+    go_repository(
+        name = "tools_gotest_v3",
+        importpath = "gotest.tools/v3",
+        sum = "h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=",
+        version = "v3.0.3",
     )
