From bf02f887f0db522879b4ed4ddefc04622c582203 Mon Sep 17 00:00:00 2001 From: Nick Maliwacki Date: Thu, 9 Aug 2018 17:03:06 -0700 Subject: [PATCH] Fix to build virtual-kubelet in windows --- vkubelet/lookup.go | 63 +++++++++++++++++++++++++++++++++++ vkubelet/lookup_windows.go | 50 ++++++++++++++++++++++++++++ vkubelet/provider.go | 22 ------------- vkubelet/vkubelet.go | 67 ++------------------------------------ 4 files changed, 116 insertions(+), 86 deletions(-) create mode 100644 vkubelet/lookup.go create mode 100644 vkubelet/lookup_windows.go diff --git a/vkubelet/lookup.go b/vkubelet/lookup.go new file mode 100644 index 000000000..1cfe1d613 --- /dev/null +++ b/vkubelet/lookup.go @@ -0,0 +1,63 @@ +// +build !windows + +package vkubelet + +import ( + "fmt" + + "github.com/virtual-kubelet/virtual-kubelet/manager" + "github.com/virtual-kubelet/virtual-kubelet/providers/aws" + "github.com/virtual-kubelet/virtual-kubelet/providers/azure" + "github.com/virtual-kubelet/virtual-kubelet/providers/azurebatch" + "github.com/virtual-kubelet/virtual-kubelet/providers/cri" + "github.com/virtual-kubelet/virtual-kubelet/providers/huawei" + "github.com/virtual-kubelet/virtual-kubelet/providers/hypersh" + "github.com/virtual-kubelet/virtual-kubelet/providers/mock" + "github.com/virtual-kubelet/virtual-kubelet/providers/sfmesh" + "github.com/virtual-kubelet/virtual-kubelet/providers/vic" + "github.com/virtual-kubelet/virtual-kubelet/providers/web" +) + +// Compile time proof that our implementations meet the Provider interface. +var _ Provider = (*aws.FargateProvider)(nil) +var _ Provider = (*azure.ACIProvider)(nil) +var _ Provider = (*hypersh.HyperProvider)(nil) +var _ Provider = (*web.BrokerProvider)(nil) +var _ Provider = (*mock.MockProvider)(nil) +var _ Provider = (*huawei.CCIProvider)(nil) +var _ Provider = (*azurebatch.Provider)(nil) +var _ Provider = (*sfmesh.SFMeshProvider)(nil) + +// start of providers not supported on windows +var _ Provider = (*cri.CRIProvider)(nil) +var _ Provider = (*vic.VicProvider)(nil) + +func lookupProvider(provider, providerConfig string, rm *manager.ResourceManager, nodeName, operatingSystem, internalIP string, daemonEndpointPort int32) (Provider, error) { + switch provider { + case "aws": + return aws.NewFargateProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "azure": + return azure.NewACIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "azurebatch": + return azurebatch.NewBatchProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "hyper": + return hypersh.NewHyperProvider(providerConfig, rm, nodeName, operatingSystem) + case "web": + return web.NewBrokerProvider(nodeName, operatingSystem, daemonEndpointPort) + case "mock": + return mock.NewMockProvider(providerConfig, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "huawei": + return huawei.NewCCIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "sfmesh": + return sfmesh.NewSFMeshProvider(rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + // start of providers not supported on windows + case "cri": + return cri.NewCRIProvider(nodeName, operatingSystem, internalIP, rm, daemonEndpointPort) + case "vic": + return vic.NewVicProvider(providerConfig, rm, nodeName, operatingSystem) + default: + fmt.Printf("Provider '%s' is not supported\n", provider) + } + var p Provider + return p, nil +} diff --git a/vkubelet/lookup_windows.go b/vkubelet/lookup_windows.go new file mode 100644 index 000000000..c37918e89 --- /dev/null +++ b/vkubelet/lookup_windows.go @@ -0,0 +1,50 @@ +package vkubelet + +import ( + "fmt" + + "github.com/virtual-kubelet/virtual-kubelet/manager" + "github.com/virtual-kubelet/virtual-kubelet/providers/aws" + "github.com/virtual-kubelet/virtual-kubelet/providers/azure" + "github.com/virtual-kubelet/virtual-kubelet/providers/azurebatch" + "github.com/virtual-kubelet/virtual-kubelet/providers/huawei" + "github.com/virtual-kubelet/virtual-kubelet/providers/hypersh" + "github.com/virtual-kubelet/virtual-kubelet/providers/mock" + "github.com/virtual-kubelet/virtual-kubelet/providers/sfmesh" + "github.com/virtual-kubelet/virtual-kubelet/providers/web" +) + +// Compile time proof that our implementations meet the Provider interface. +var _ Provider = (*aws.FargateProvider)(nil) +var _ Provider = (*azure.ACIProvider)(nil) +var _ Provider = (*hypersh.HyperProvider)(nil) +var _ Provider = (*web.BrokerProvider)(nil) +var _ Provider = (*mock.MockProvider)(nil) +var _ Provider = (*huawei.CCIProvider)(nil) +var _ Provider = (*azurebatch.Provider)(nil) +var _ Provider = (*sfmesh.SFMeshProvider)(nil) + +func lookupProvider(provider, providerConfig string, rm *manager.ResourceManager, nodeName, operatingSystem, internalIP string, daemonEndpointPort int32) (Provider, error) { + switch provider { + case "aws": + return aws.NewFargateProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "azure": + return azure.NewACIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "azurebatch": + return azurebatch.NewBatchProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "hyper": + return hypersh.NewHyperProvider(providerConfig, rm, nodeName, operatingSystem) + case "web": + return web.NewBrokerProvider(nodeName, operatingSystem, daemonEndpointPort) + case "mock": + return mock.NewMockProvider(providerConfig, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "huawei": + return huawei.NewCCIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + case "sfmesh": + return sfmesh.NewSFMeshProvider(rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + default: + fmt.Printf("Provider '%s' is not supported\n", provider) + } + var p Provider + return p, nil +} diff --git a/vkubelet/provider.go b/vkubelet/provider.go index 081157b58..6fab1d7a2 100644 --- a/vkubelet/provider.go +++ b/vkubelet/provider.go @@ -4,33 +4,11 @@ import ( "io" "time" - "github.com/virtual-kubelet/virtual-kubelet/providers/aws" - "github.com/virtual-kubelet/virtual-kubelet/providers/azure" - "github.com/virtual-kubelet/virtual-kubelet/providers/azurebatch" - "github.com/virtual-kubelet/virtual-kubelet/providers/cri" - "github.com/virtual-kubelet/virtual-kubelet/providers/huawei" - "github.com/virtual-kubelet/virtual-kubelet/providers/hypersh" - "github.com/virtual-kubelet/virtual-kubelet/providers/mock" - "github.com/virtual-kubelet/virtual-kubelet/providers/sfmesh" - "github.com/virtual-kubelet/virtual-kubelet/providers/vic" - "github.com/virtual-kubelet/virtual-kubelet/providers/web" "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/tools/remotecommand" ) -// Compile time proof that our implementations meet the Provider interface. -var _ Provider = (*aws.FargateProvider)(nil) -var _ Provider = (*azure.ACIProvider)(nil) -var _ Provider = (*hypersh.HyperProvider)(nil) -var _ Provider = (*vic.VicProvider)(nil) -var _ Provider = (*web.BrokerProvider)(nil) -var _ Provider = (*mock.MockProvider)(nil) -var _ Provider = (*huawei.CCIProvider)(nil) -var _ Provider = (*azurebatch.Provider)(nil) -var _ Provider = (*cri.CRIProvider)(nil) -var _ Provider = (*sfmesh.SFMeshProvider)(nil) - // Provider contains the methods required to implement a virtual-kubelet provider. type Provider interface { // CreatePod takes a Kubernetes Pod and deploys it within the provider. diff --git a/vkubelet/vkubelet.go b/vkubelet/vkubelet.go index 09e20174d..af40d46e8 100644 --- a/vkubelet/vkubelet.go +++ b/vkubelet/vkubelet.go @@ -11,16 +11,6 @@ import ( "time" "github.com/virtual-kubelet/virtual-kubelet/manager" - "github.com/virtual-kubelet/virtual-kubelet/providers/aws" - "github.com/virtual-kubelet/virtual-kubelet/providers/azure" - "github.com/virtual-kubelet/virtual-kubelet/providers/azurebatch" - "github.com/virtual-kubelet/virtual-kubelet/providers/cri" - "github.com/virtual-kubelet/virtual-kubelet/providers/huawei" - "github.com/virtual-kubelet/virtual-kubelet/providers/hypersh" - "github.com/virtual-kubelet/virtual-kubelet/providers/mock" - "github.com/virtual-kubelet/virtual-kubelet/providers/sfmesh" - "github.com/virtual-kubelet/virtual-kubelet/providers/vic" - "github.com/virtual-kubelet/virtual-kubelet/providers/web" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -81,60 +71,9 @@ func New(nodeName, operatingSystem, namespace, kubeConfig, taint, provider, prov internalIP := os.Getenv("VKUBELET_POD_IP") - var p Provider - switch provider { - case "aws": - p, err = aws.NewFargateProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) - if err != nil { - return nil, err - } - case "azure": - p, err = azure.NewACIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) - if err != nil { - return nil, err - } - case "azurebatch": - p, err = azurebatch.NewBatchProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) - if err != nil { - return nil, err - } - case "hyper": - p, err = hypersh.NewHyperProvider(providerConfig, rm, nodeName, operatingSystem) - if err != nil { - return nil, err - } - case "vic": - p, err = vic.NewVicProvider(providerConfig, rm, nodeName, operatingSystem) - if err != nil { - return nil, err - } - case "web": - p, err = web.NewBrokerProvider(nodeName, operatingSystem, daemonEndpointPort) - if err != nil { - return nil, err - } - case "mock": - p, err = mock.NewMockProvider(providerConfig, nodeName, operatingSystem, internalIP, daemonEndpointPort) - if err != nil { - return nil, err - } - case "cri": - p, err = cri.NewCRIProvider(nodeName, operatingSystem, internalIP, rm, daemonEndpointPort) - if err != nil { - return nil, err - } - case "huawei": - p, err = huawei.NewCCIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) - if err != nil { - return nil, err - } - case "sfmesh": - p, err = sfmesh.NewSFMeshProvider(rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) - if err != nil { - return nil, err - } - default: - fmt.Printf("Provider '%s' is not supported\n", provider) + p, err = lookupProvider(provider, providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) + if err != nil { + return nil, err } s := &Server{