Skip to content

Commit

Permalink
Support Edge Provider in Machine Controller (#1765)
Browse files Browse the repository at this point in the history
* support edge provider
Signed-off-by: Moath Qasim <moad.qassem@gmail.com>

Signed-off-by: Moath Qasim <moad.qassem@gmail.com>

* fix linting
Signed-off-by: Moath Qasim <moad.qassem@gmail.com>

Signed-off-by: Moath Qasim <moad.qassem@gmail.com>

---------

Signed-off-by: Moath Qasim <moad.qassem@gmail.com>
  • Loading branch information
moadqassem committed Feb 19, 2024
1 parent 2397824 commit bd68d2c
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 0 deletions.
4 changes: 4 additions & 0 deletions pkg/cloudprovider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/azure"
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/baremetal"
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/digitalocean"
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/edge"
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/equinixmetal"
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/fake"
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/gce"
Expand Down Expand Up @@ -85,6 +86,9 @@ var (
providerconfigtypes.CloudProviderFake: func(cvr *providerconfig.ConfigVarResolver) cloudprovidertypes.Provider {
return fake.New(cvr)
},
providerconfigtypes.CloudProviderEdge: func(cvr *providerconfig.ConfigVarResolver) cloudprovidertypes.Provider {
return edge.New(cvr)
},
providerconfigtypes.CloudProviderKubeVirt: func(cvr *providerconfig.ConfigVarResolver) cloudprovidertypes.Provider {
return kubevirt.New(cvr)
},
Expand Down
99 changes: 99 additions & 0 deletions pkg/cloudprovider/provider/edge/provider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
/*
Copyright 2024 The Machine Controller 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 edge

import (
"context"
"go.uber.org/zap"

clusterv1alpha1 "github.com/kubermatic/machine-controller/pkg/apis/cluster/v1alpha1"
"github.com/kubermatic/machine-controller/pkg/cloudprovider/instance"
cloudprovidertypes "github.com/kubermatic/machine-controller/pkg/cloudprovider/types"
"github.com/kubermatic/machine-controller/pkg/providerconfig"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
)

type provider struct{}

type CloudProviderSpec struct{}

type CloudProviderInstance struct{}

func (f CloudProviderInstance) Name() string {
return ""
}

func (f CloudProviderInstance) ID() string {
return ""
}

func (f CloudProviderInstance) ProviderID() string {
return ""
}

func (f CloudProviderInstance) Addresses() map[string]corev1.NodeAddressType {
return nil
}

func (f CloudProviderInstance) Status() instance.Status {
return instance.StatusUnknown
}

// New returns a edge cloud provider.
func New(_ *providerconfig.ConfigVarResolver) cloudprovidertypes.Provider {
return &provider{}
}

func (p *provider) AddDefaults(_ *zap.SugaredLogger, spec clusterv1alpha1.MachineSpec) (clusterv1alpha1.MachineSpec, error) {
return spec, nil
}

// Validate returns success or failure based according to its EdgeCloudProviderSpec.
func (p *provider) Validate(_ context.Context, _ *zap.SugaredLogger, _ clusterv1alpha1.MachineSpec) error {
return nil
}

func (p *provider) Get(_ context.Context, _ *zap.SugaredLogger, _ *clusterv1alpha1.Machine, _ *cloudprovidertypes.ProviderData) (instance.Instance, error) {
return CloudProviderInstance{}, nil
}

func (p *provider) GetCloudConfig(_ clusterv1alpha1.MachineSpec) (string, string, error) {
return "", "", nil
}

// Create creates a cloud instance according to the given machine.
func (p *provider) Create(_ context.Context, _ *zap.SugaredLogger, _ *clusterv1alpha1.Machine, _ *cloudprovidertypes.ProviderData, _ string) (instance.Instance, error) {
return CloudProviderInstance{}, nil
}

func (p *provider) Cleanup(_ context.Context, _ *zap.SugaredLogger, _ *clusterv1alpha1.Machine, _ *cloudprovidertypes.ProviderData) (bool, error) {
return true, nil
}

func (p *provider) MigrateUID(_ context.Context, _ *zap.SugaredLogger, _ *clusterv1alpha1.Machine, _ types.UID) error {
return nil
}

func (p *provider) MachineMetricsLabels(_ *clusterv1alpha1.Machine) (map[string]string, error) {
return map[string]string{}, nil
}

func (p *provider) SetMetricsForMachines(_ clusterv1alpha1.MachineList) error {
return nil
}
2 changes: 2 additions & 0 deletions pkg/providerconfig/types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ const (
CloudProviderVultr CloudProvider = "vultr"
CloudProviderVMwareCloudDirector CloudProvider = "vmware-cloud-director"
CloudProviderFake CloudProvider = "fake"
CloudProviderEdge CloudProvider = "edge"
CloudProviderAlibaba CloudProvider = "alibaba"
CloudProviderAnexia CloudProvider = "anexia"
CloudProviderScaleway CloudProvider = "scaleway"
Expand Down Expand Up @@ -100,6 +101,7 @@ var (
CloudProviderVsphere,
CloudProviderVMwareCloudDirector,
CloudProviderFake,
CloudProviderEdge,
CloudProviderAlibaba,
CloudProviderAnexia,
CloudProviderScaleway,
Expand Down

0 comments on commit bd68d2c

Please sign in to comment.