blob: 6d4663eb6f8f605a4a7465e14ec53e9181b9275b [file] [log] [blame]
Serge Bazanskibb7db922020-04-30 12:43:10 +02001Copyright 2020 The Monogon Project Authors.
2
3Licensed under the Apache License, Version 2.0 (the "License");
4you may not use this file except in compliance with the License.
5You may obtain a copy of the License at
6
7 http://www.apache.org/licenses/LICENSE-2.0
8
9Unless required by applicable law or agreed to in writing, software
10distributed under the License is distributed on an "AS IS" BASIS,
11WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12See the License for the specific language governing permissions and
13limitations under the License.
14
15
16This fixes OpenAPI codegen for when included from the Smalltown workspace. It basically undoes vendorification.
17
18diff -ur io_k8s_kubernetes.orig/build/code_generation.bzl io_k8s_kubernetes/build/code_generation.bzl
19--- io_k8s_kubernetes.orig/build/code_generation.bzl 2020-04-15 13:43:57.785669620 +0200
20+++ io_k8s_kubernetes/build/code_generation.bzl 2020-04-16 18:19:44.297531873 +0200
21@@ -27,6 +27,12 @@
22 ...
23 )
24 """
25+ if pkg.startswith('staging/src/k8s.io/'):
26+ parts = pkg.split('/', 4)
27+ project = parts[3]
28+ project = project.replace('-', '_')
29+ path = parts[4]
30+ return "@io_k8s_%s//%s:go_default_library" % (project, path)
31 return "//%s:go_default_library" % pkg
32
33 def go_pkg(pkg):
34@@ -42,6 +48,8 @@
35 ...
36 )
37 """
38+ if pkg.startswith('staging/src/'):
39+ return pkg[len('staging/src/'):]
40 for prefix in ["staging/src", "vendor"]:
41 if pkg.startswith(prefix):
42 return paths.relativize(pkg, prefix)
43@@ -49,8 +57,8 @@
44
45 def openapi_deps():
46 deps = [
47- "//vendor/github.com/go-openapi/spec:go_default_library",
48- "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
49+ "@com_github_go_openapi_spec//:go_default_library",
50+ "@io_k8s_kube_openapi//pkg/common:go_default_library",
51 ]
52 deps.extend([bazel_go_library(pkg) for pkg in tags_values_pkgs["openapi-gen"]["true"]])
53 return deps
54@@ -76,7 +84,7 @@
55 # the generator must run from the repo root inside the generated GOPATH.
56 # All of bazel's $(location)s are relative to the original working directory, however.
57 cmd = " ".join([
58- "$(location //vendor/k8s.io/kube-openapi/cmd/openapi-gen)",
59+ "$(location @io_k8s_kube_openapi//cmd/openapi-gen)",
60 "--v 1",
61 "--logtostderr",
62 "--go-header-file $(location //" + openapi_vendor_prefix + "hack/boilerplate:boilerplate.generatego.txt)",
63@@ -88,6 +96,6 @@
64 "&& rm tmp_api_violations.report",
65 ]),
66 go_deps = openapi_deps(),
67- tools = ["//vendor/k8s.io/kube-openapi/cmd/openapi-gen"],
68+ tools = ["@io_k8s_kube_openapi//cmd/openapi-gen"],
69 message = "GenOpenAPI",
70 )
71
72The rest rips out a bunch of volume providers. We're only interested in CSI and hostpath/local.
73
74diff -ur io_k8s_kubernetes.orig/cmd/kube-apiserver/app/options/globalflags.go io_k8s_kubernetes/cmd/kube-apiserver/app/options/globalflags.go
75--- io_k8s_kubernetes.orig/cmd/kube-apiserver/app/options/globalflags.go 2020-04-15 13:43:57.811669689 +0200
76+++ io_k8s_kubernetes/cmd/kube-apiserver/app/options/globalflags.go 2020-04-17 13:29:41.578264893 +0200
77@@ -32,9 +32,6 @@
78 func AddCustomGlobalFlags(fs *pflag.FlagSet) {
79 // Lookup flags in global flag set and re-register the values with our flagset.
80
81- // Adds flags from k8s.io/kubernetes/pkg/cloudprovider/providers.
82- registerLegacyGlobalFlags(fs)
83-
84 // Adds flags from k8s.io/apiserver/pkg/admission.
85 globalflag.Register(fs, "default-not-ready-toleration-seconds")
86 globalflag.Register(fs, "default-unreachable-toleration-seconds")
87diff -ur io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/controllermanager.go io_k8s_kubernetes/cmd/kube-controller-manager/app/controllermanager.go
88--- io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/controllermanager.go 2020-04-15 13:43:57.812669692 +0200
89+++ io_k8s_kubernetes/cmd/kube-controller-manager/app/controllermanager.go 2020-04-17 13:30:39.975397151 +0200
90@@ -126,7 +126,6 @@
91 namedFlagSets := s.Flags(KnownControllers(), ControllersDisabledByDefault.List())
92 verflag.AddFlags(namedFlagSets.FlagSet("global"))
93 globalflag.AddGlobalFlags(namedFlagSets.FlagSet("global"), cmd.Name())
94- registerLegacyGlobalFlags(namedFlagSets)
95 for _, f := range namedFlagSets.FlagSets {
96 fs.AddFlagSet(f)
97 }
98diff -ur io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/plugins.go io_k8s_kubernetes/cmd/kube-controller-manager/app/plugins.go
99--- io_k8s_kubernetes.orig/cmd/kube-controller-manager/app/plugins.go 2020-04-15 13:43:57.813669694 +0200
100+++ io_k8s_kubernetes/cmd/kube-controller-manager/app/plugins.go 2020-04-17 13:34:19.393894095 +0200
101@@ -32,19 +32,9 @@
102 // Volume plugins
103 "k8s.io/kubernetes/pkg/volume"
104 "k8s.io/kubernetes/pkg/volume/csi"
105- "k8s.io/kubernetes/pkg/volume/fc"
106 "k8s.io/kubernetes/pkg/volume/flexvolume"
107- "k8s.io/kubernetes/pkg/volume/flocker"
108- "k8s.io/kubernetes/pkg/volume/glusterfs"
109 "k8s.io/kubernetes/pkg/volume/hostpath"
110- "k8s.io/kubernetes/pkg/volume/iscsi"
111 "k8s.io/kubernetes/pkg/volume/local"
112- "k8s.io/kubernetes/pkg/volume/nfs"
113- "k8s.io/kubernetes/pkg/volume/portworx"
114- "k8s.io/kubernetes/pkg/volume/quobyte"
115- "k8s.io/kubernetes/pkg/volume/rbd"
116- "k8s.io/kubernetes/pkg/volume/scaleio"
117- "k8s.io/kubernetes/pkg/volume/storageos"
118 volumeutil "k8s.io/kubernetes/pkg/volume/util"
119
120 utilfeature "k8s.io/apiserver/pkg/util/feature"
121@@ -58,18 +48,7 @@
122 // The list of plugins is manually compiled. This code and the plugin
123 // initialization code for kubelet really, really need a through refactor.
124 func ProbeAttachableVolumePlugins() ([]volume.VolumePlugin, error) {
125- var err error
126 allPlugins := []volume.VolumePlugin{}
127- allPlugins, err = appendAttachableLegacyProviderVolumes(allPlugins, utilfeature.DefaultFeatureGate)
128- if err != nil {
129- return allPlugins, err
130- }
131- allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
132- allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
133- allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
134- allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
135- allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
136- allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
137 allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
138 return allPlugins, nil
139 }
140@@ -83,18 +62,7 @@
141
142 // ProbeExpandableVolumePlugins returns volume plugins which are expandable
143 func ProbeExpandableVolumePlugins(config persistentvolumeconfig.VolumeConfiguration) ([]volume.VolumePlugin, error) {
144- var err error
145 allPlugins := []volume.VolumePlugin{}
146- allPlugins, err = appendExpandableLegacyProviderVolumes(allPlugins, utilfeature.DefaultFeatureGate)
147- if err != nil {
148- return allPlugins, err
149- }
150- allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
151- allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
152- allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
153- allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
154- allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
155- allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
156 return allPlugins, nil
157 }
158
159@@ -124,30 +92,7 @@
160 }
161 allPlugins = append(allPlugins, hostpath.ProbeVolumePlugins(hostPathConfig)...)
162
163- nfsConfig := volume.VolumeConfig{
164- RecyclerMinimumTimeout: int(config.PersistentVolumeRecyclerConfiguration.MinimumTimeoutNFS),
165- RecyclerTimeoutIncrement: int(config.PersistentVolumeRecyclerConfiguration.IncrementTimeoutNFS),
166- RecyclerPodTemplate: volume.NewPersistentVolumeRecyclerPodTemplate(),
167- }
168- if err := AttemptToLoadRecycler(config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, &nfsConfig); err != nil {
169- klog.Fatalf("Could not create NFS recycler pod from file %s: %+v", config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, err)
170- }
171- allPlugins = append(allPlugins, nfs.ProbeVolumePlugins(nfsConfig)...)
172- allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
173- // add rbd provisioner
174- allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
175- allPlugins = append(allPlugins, quobyte.ProbeVolumePlugins()...)
176- var err error
177- allPlugins, err = appendExpandableLegacyProviderVolumes(allPlugins, utilfeature.DefaultFeatureGate)
178- if err != nil {
179- return allPlugins, err
180- }
181-
182- allPlugins = append(allPlugins, flocker.ProbeVolumePlugins()...)
183- allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
184- allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
185 allPlugins = append(allPlugins, local.ProbeVolumePlugins()...)
186- allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
187
188 if utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) {
189 allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
190diff -ur io_k8s_kubernetes.orig/cmd/kubectl/BUILD io_k8s_kubernetes/cmd/kubectl/BUILD
191--- io_k8s_kubernetes.orig/cmd/kubectl/BUILD 2020-04-20 14:58:52.573455879 +0200
192+++ io_k8s_kubernetes/cmd/kubectl/BUILD 2020-04-20 14:56:41.199032687 +0200
193@@ -3,7 +3,7 @@
194 "go_binary",
195 "go_library",
196 )
197-load("//staging/src/k8s.io/component-base/version:def.bzl", "version_x_defs")
198+load("@//third_party/go:kubernetes_version_def.bzl", "version_x_defs")
199
200 go_binary(
201 name = "kubectl",
202
203
204We also take the opportunity to remove azure/gcp auth.
205
206diff -ur io_k8s_kubernetes.orig/cmd/kubelet/app/options/globalflags.go io_k8s_kubernetes/cmd/kubelet/app/options/globalflags.go
207--- io_k8s_kubernetes.orig/cmd/kubelet/app/options/globalflags.go 2020-04-15 13:43:57.827669732 +0200
208+++ io_k8s_kubernetes/cmd/kubelet/app/options/globalflags.go 2020-04-16 15:58:30.964945445 +0200
209@@ -28,10 +28,6 @@
210 "k8s.io/component-base/logs"
211 "k8s.io/component-base/version/verflag"
212 "k8s.io/klog"
213-
214- // ensure libs have a chance to globally register their flags
215- _ "k8s.io/kubernetes/pkg/credentialprovider/azure"
216- _ "k8s.io/kubernetes/pkg/credentialprovider/gcp"
217 )
218
219 // AddGlobalFlags explicitly registers flags that libraries (glog, verflag, etc.) register
220@@ -80,14 +76,8 @@
221
222 // addCredentialProviderFlags adds flags from k8s.io/kubernetes/pkg/credentialprovider
223 func addCredentialProviderFlags(fs *pflag.FlagSet) {
224- // lookup flags in global flag set and re-register the values with our flagset
225- global := pflag.CommandLine
226 local := pflag.NewFlagSet(os.Args[0], pflag.ExitOnError)
227
228- // TODO(#58034): This is not a static file, so it's not quite as straightforward as --google-json-key.
229- // We need to figure out how ACR users can dynamically provide pull credentials before we can deprecate this.
230- pflagRegister(global, local, "azure-container-registry-config")
231-
232 fs.AddFlagSet(local)
233 }
234
235diff -ur io_k8s_kubernetes.orig/cmd/kubelet/app/plugins.go io_k8s_kubernetes/cmd/kubelet/app/plugins.go
236--- io_k8s_kubernetes.orig/cmd/kubelet/app/plugins.go 2020-04-15 13:43:57.827669732 +0200
237+++ io_k8s_kubernetes/cmd/kubelet/app/plugins.go 2020-04-16 16:10:13.366081373 +0200
238@@ -19,8 +19,6 @@
239 // This file exists to force the desired plugin implementations to be linked.
240 import (
241 // Credential providers
242- _ "k8s.io/kubernetes/pkg/credentialprovider/aws"
243- _ "k8s.io/kubernetes/pkg/credentialprovider/azure"
244 _ "k8s.io/kubernetes/pkg/credentialprovider/gcp"
245
246 "k8s.io/component-base/featuregate"
247@@ -28,27 +26,13 @@
248
249 // Volume plugins
250 "k8s.io/kubernetes/pkg/volume"
251- "k8s.io/kubernetes/pkg/volume/cephfs"
252 "k8s.io/kubernetes/pkg/volume/configmap"
253 "k8s.io/kubernetes/pkg/volume/csi"
254- "k8s.io/kubernetes/pkg/volume/downwardapi"
255 "k8s.io/kubernetes/pkg/volume/emptydir"
256- "k8s.io/kubernetes/pkg/volume/fc"
257 "k8s.io/kubernetes/pkg/volume/flexvolume"
258- "k8s.io/kubernetes/pkg/volume/flocker"
259- "k8s.io/kubernetes/pkg/volume/git_repo"
260- "k8s.io/kubernetes/pkg/volume/glusterfs"
261 "k8s.io/kubernetes/pkg/volume/hostpath"
262- "k8s.io/kubernetes/pkg/volume/iscsi"
263 "k8s.io/kubernetes/pkg/volume/local"
264- "k8s.io/kubernetes/pkg/volume/nfs"
265- "k8s.io/kubernetes/pkg/volume/portworx"
266- "k8s.io/kubernetes/pkg/volume/projected"
267- "k8s.io/kubernetes/pkg/volume/quobyte"
268- "k8s.io/kubernetes/pkg/volume/rbd"
269- "k8s.io/kubernetes/pkg/volume/scaleio"
270 "k8s.io/kubernetes/pkg/volume/secret"
271- "k8s.io/kubernetes/pkg/volume/storageos"
272
273 // Cloud providers
274 _ "k8s.io/kubernetes/pkg/cloudprovider/providers"
275@@ -64,30 +48,11 @@
276 //
277 // Kubelet does not currently need to configure volume plugins.
278 // If/when it does, see kube-controller-manager/app/plugins.go for example of using volume.VolumeConfig
279- var err error
280- allPlugins, err = appendLegacyProviderVolumes(allPlugins, featureGate)
281- if err != nil {
282- return allPlugins, err
283- }
284 allPlugins = append(allPlugins, emptydir.ProbeVolumePlugins()...)
285- allPlugins = append(allPlugins, git_repo.ProbeVolumePlugins()...)
286 allPlugins = append(allPlugins, hostpath.ProbeVolumePlugins(volume.VolumeConfig{})...)
287- allPlugins = append(allPlugins, nfs.ProbeVolumePlugins(volume.VolumeConfig{})...)
288 allPlugins = append(allPlugins, secret.ProbeVolumePlugins()...)
289- allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
290- allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
291- allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...)
292- allPlugins = append(allPlugins, quobyte.ProbeVolumePlugins()...)
293- allPlugins = append(allPlugins, cephfs.ProbeVolumePlugins()...)
294- allPlugins = append(allPlugins, downwardapi.ProbeVolumePlugins()...)
295- allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...)
296- allPlugins = append(allPlugins, flocker.ProbeVolumePlugins()...)
297 allPlugins = append(allPlugins, configmap.ProbeVolumePlugins()...)
298- allPlugins = append(allPlugins, projected.ProbeVolumePlugins()...)
299- allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...)
300- allPlugins = append(allPlugins, scaleio.ProbeVolumePlugins()...)
301 allPlugins = append(allPlugins, local.ProbeVolumePlugins()...)
302- allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...)
303 allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...)
304 return allPlugins, nil
305 }
306diff -ur io_k8s_kubernetes.orig/cmd/kubelet/app/plugins_providers.go io_k8s_kubernetes/cmd/kubelet/app/plugins_providers.go
307--- io_k8s_kubernetes.orig/cmd/kubelet/app/plugins_providers.go 2020-04-15 13:43:57.827669732 +0200
308+++ io_k8s_kubernetes/cmd/kubelet/app/plugins_providers.go 2020-04-15 16:29:49.402465237 +0200
309@@ -24,13 +24,7 @@
310 "k8s.io/klog"
311 "k8s.io/kubernetes/pkg/features"
312 "k8s.io/kubernetes/pkg/volume"
313- "k8s.io/kubernetes/pkg/volume/awsebs"
314- "k8s.io/kubernetes/pkg/volume/azure_dd"
315- "k8s.io/kubernetes/pkg/volume/azure_file"
316- "k8s.io/kubernetes/pkg/volume/cinder"
317 "k8s.io/kubernetes/pkg/volume/csimigration"
318- "k8s.io/kubernetes/pkg/volume/gcepd"
319- "k8s.io/kubernetes/pkg/volume/vsphere_volume"
320 )
321
322 type probeFn func() []volume.VolumePlugin
323@@ -60,11 +54,6 @@
324
325 func appendLegacyProviderVolumes(allPlugins []volume.VolumePlugin, featureGate featuregate.FeatureGate) ([]volume.VolumePlugin, error) {
326 pluginMigrationStatus := make(map[string]pluginInfo)
327- pluginMigrationStatus[plugins.AWSEBSInTreePluginName] = pluginInfo{pluginMigrationFeature: features.CSIMigrationAWS, pluginMigrationCompleteFeature: features.CSIMigrationAWSComplete, pluginProbeFunction: awsebs.ProbeVolumePlugins}
328- pluginMigrationStatus[plugins.GCEPDInTreePluginName] = pluginInfo{pluginMigrationFeature: features.CSIMigrationGCE, pluginMigrationCompleteFeature: features.CSIMigrationGCEComplete, pluginProbeFunction: gcepd.ProbeVolumePlugins}
329- pluginMigrationStatus[plugins.CinderInTreePluginName] = pluginInfo{pluginMigrationFeature: features.CSIMigrationOpenStack, pluginMigrationCompleteFeature: features.CSIMigrationOpenStackComplete, pluginProbeFunction: cinder.ProbeVolumePlugins}
330- pluginMigrationStatus[plugins.AzureDiskInTreePluginName] = pluginInfo{pluginMigrationFeature: features.CSIMigrationAzureDisk, pluginMigrationCompleteFeature: features.CSIMigrationAzureDiskComplete, pluginProbeFunction: azure_dd.ProbeVolumePlugins}
331- pluginMigrationStatus[plugins.AzureFileInTreePluginName] = pluginInfo{pluginMigrationFeature: features.CSIMigrationAzureFile, pluginMigrationCompleteFeature: features.CSIMigrationAzureFileComplete, pluginProbeFunction: azure_file.ProbeVolumePlugins}
332
333 var err error
334 for pluginName, pluginInfo := range pluginMigrationStatus {
335@@ -74,6 +63,5 @@
336 }
337 }
338
339- allPlugins = append(allPlugins, vsphere_volume.ProbeVolumePlugins()...)
340 return allPlugins, nil
341 }
342diff -ur io_k8s_kubernetes.orig/cmd/kubelet/BUILD io_k8s_kubernetes/cmd/kubelet/BUILD
343--- io_k8s_kubernetes.orig/cmd/kubelet/BUILD 2020-04-15 13:43:57.827669732 +0200
344+++ io_k8s_kubernetes/cmd/kubelet/BUILD 2020-04-20 14:56:20.446965836 +0200
345@@ -5,7 +5,7 @@
346 go_binary = "go_binary_conditional_pure",
347 )
348 load("@io_bazel_rules_go//go:def.bzl", "go_library")
349-load("//staging/src/k8s.io/component-base/version:def.bzl", "version_x_defs")
350+load("@//third_party/go:kubernetes_version_def.bzl", "version_x_defs")
351
352 go_binary(
353 name = "kubelet",
354diff -ur io_k8s_kubernetes.orig/pkg/controller/nodeipam/ipam/cidr_allocator.go io_k8s_kubernetes/pkg/controller/nodeipam/ipam/cidr_allocator.go
355--- io_k8s_kubernetes.orig/pkg/controller/nodeipam/ipam/cidr_allocator.go 2020-04-15 13:43:57.860669820 +0200
356+++ io_k8s_kubernetes/pkg/controller/nodeipam/ipam/cidr_allocator.go 2020-04-17 13:18:36.157842990 +0200
357@@ -111,8 +111,6 @@
358 switch allocatorType {
359 case RangeAllocatorType:
360 return NewCIDRRangeAllocator(kubeClient, nodeInformer, allocatorParams, nodeList)
361- case CloudAllocatorType:
362- return NewCloudCIDRAllocator(kubeClient, cloud, nodeInformer)
363 default:
364 return nil, fmt.Errorf("invalid CIDR allocator type: %v", allocatorType)
365 }
366diff -ur io_k8s_kubernetes.orig/pkg/controller/nodeipam/nolegacyprovider.go io_k8s_kubernetes/pkg/controller/nodeipam/nolegacyprovider.go
367--- io_k8s_kubernetes.orig/pkg/controller/nodeipam/nolegacyprovider.go 2020-04-15 13:43:57.860669820 +0200
368+++ io_k8s_kubernetes/pkg/controller/nodeipam/nolegacyprovider.go 2020-04-17 13:27:12.440927122 +0200
369@@ -1,5 +1,3 @@
370-// +build providerless
371-
372 /*
373 Copyright 2019 The Kubernetes Authors.
374
375diff -ur io_k8s_kubernetes.orig/pkg/kubelet/cadvisor/cadvisor_linux.go io_k8s_kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go
376--- io_k8s_kubernetes.orig/pkg/kubelet/cadvisor/cadvisor_linux.go 2020-04-15 13:43:57.875669859 +0200
377+++ io_k8s_kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go 2020-04-15 18:24:28.683551309 +0200
378@@ -34,8 +34,6 @@
379
380 // Register cloud info providers.
381 // TODO(#68522): Remove this in 1.20+ once the cAdvisor endpoints are removed.
382- _ "github.com/google/cadvisor/utils/cloudinfo/aws"
383- _ "github.com/google/cadvisor/utils/cloudinfo/azure"
384 _ "github.com/google/cadvisor/utils/cloudinfo/gce"
385
386 "github.com/google/cadvisor/cache/memory"