Skip to content

Commit

Permalink
Merge pull request #149 from damdo/support-vsphere
Browse files Browse the repository at this point in the history
OCPCLOUD-1609,OCPCLOUD-1610: Add Support for VSphere
  • Loading branch information
openshift-merge-bot[bot] committed Mar 12, 2024
2 parents 7b6b8ee + e97432f commit 8342a83
Show file tree
Hide file tree
Showing 70 changed files with 7,478 additions and 19 deletions.
3 changes: 3 additions & 0 deletions Makefile
Expand Up @@ -87,6 +87,9 @@ gcp-cluster:
powervs-cluster:
./hack/clusters/create-powervs.sh

vsphere-cluster:
./hack/clusters/create-vsphere.sh

define ensure-home
@ export HOME=$${HOME:=/tmp/kubebuilder-testing}; \
if [ $${HOME} == "/" ]; then \
Expand Down
11 changes: 11 additions & 0 deletions cmd/cluster-capi-operator/main.go
Expand Up @@ -23,6 +23,7 @@ import (
azurev1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1"
gcpv1 "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
ibmpowervsv1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2"
vspherev1 "sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
clusterctlv1 "sigs.k8s.io/cluster-api/cmd/clusterctl/api/v1alpha3"
capiflags "sigs.k8s.io/cluster-api/util/flags"
Expand Down Expand Up @@ -106,6 +107,7 @@ func init() {
utilruntime.Must(clusterv1.AddToScheme(scheme))
utilruntime.Must(clusterctlv1.AddToScheme(scheme))
utilruntime.Must(ibmpowervsv1.AddToScheme(scheme))
utilruntime.Must(vspherev1.AddToScheme(scheme))
// +kubebuilder:scaffold:scheme
}

Expand Down Expand Up @@ -191,6 +193,7 @@ func main() {
case configv1.AWSPlatformType,
configv1.GCPPlatformType,
configv1.PowerVSPlatformType,
configv1.VSpherePlatformType,
configv1.OpenStackPlatformType:
setupReconcilers(mgr, platform, containerImages, applyClient, apiextensionsClient)
setupWebhooks(mgr)
Expand Down Expand Up @@ -311,6 +314,14 @@ func setupInfraClusterReconciler(mgr manager.Manager, platform configv1.Platform
klog.Error(err, "unable to create controller", "controller", "IBMPowerVSCluster")
os.Exit(1)
}
case configv1.VSpherePlatformType:
if err := (&cluster.GenericInfraClusterReconciler{
ClusterOperatorStatusClient: getClusterOperatorStatusClient(mgr, "cluster-capi-operator-infra-cluster-resource-controller"),
InfraCluster: &vspherev1.VSphereCluster{},
}).SetupWithManager(mgr); err != nil {
klog.Error(err, "unable to create controller", "controller", "VSphereCluster")
os.Exit(1)
}
default:
klog.Infof("detected platform %q is not supported, skipping InfraCluster controller setup", platform)
}
Expand Down
1 change: 1 addition & 0 deletions dev-images.json
Expand Up @@ -5,5 +5,6 @@
"azure-cluster-api-controllers": "quay.io/ademicev/cluster-api-provider-azure:latest",
"gcp-cluster-api-controllers": "quay.io/ademicev/cluster-api-provider-gcp:latest",
"ibmcloud-cluster-api-controllers": "quay.io/kabhat/ibmcloud-cluster-api-controllers:dev",
"vsphere-cluster-api-controllers": "quay.io/dodvarka/cluster-api-provider-vsphere:latest",
"kube-rbac-proxy": "gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0"
}
2 changes: 2 additions & 0 deletions e2e/e2e_test.go
Expand Up @@ -11,6 +11,7 @@ import (
awsv1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
gcpv1 "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
ibmpowervsv1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2"
vspherev1 "sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
runtimeclient "sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/config"
Expand Down Expand Up @@ -39,6 +40,7 @@ func init() {
utilruntime.Must(clusterv1.AddToScheme(scheme.Scheme))
utilruntime.Must(mapiv1.AddToScheme(scheme.Scheme))
utilruntime.Must(ibmpowervsv1.AddToScheme(scheme.Scheme))
utilruntime.Must(vspherev1.AddToScheme(scheme.Scheme))
}

func TestAPIs(t *testing.T) {
Expand Down
12 changes: 12 additions & 0 deletions e2e/framework/cluster.go
Expand Up @@ -29,6 +29,18 @@ func CreateCoreCluster(cl client.Client, clusterName, infraClusterKind string) *
},
},
}
// TODO(damdo): is there a way to avoid doing this in the generic framework?
if infraClusterKind == "VSphereCluster" {
host, port, err := GetControlPlaneHostAndPort(cl)
if err != nil {
Expect(err).ToNot(HaveOccurred())
}

cluster.Spec.ControlPlaneEndpoint = clusterv1.APIEndpoint{
Host: host,
Port: port,
}
}

if err := cl.Create(ctx, cluster); err != nil && !apierrors.IsAlreadyExists(err) {
Expect(err).ToNot(HaveOccurred())
Expand Down
34 changes: 34 additions & 0 deletions e2e/framework/util.go
@@ -0,0 +1,34 @@
package framework

import (
"fmt"
"net/url"
"strconv"

configv1 "github.com/openshift/api/config/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
)

func GetControlPlaneHostAndPort(cl client.Client) (string, int32, error) {
var infraCluster configv1.Infrastructure
namespacedName := client.ObjectKey{
Namespace: CAPINamespace,
Name: "cluster",
}

if err := cl.Get(ctx, namespacedName, &infraCluster); err != nil {
return "", 0, fmt.Errorf("failed to get the infrastructure object: %w", err)
}

apiUrl, err := url.Parse(infraCluster.Status.APIServerURL)
if err != nil {
return "", 0, fmt.Errorf("failed to parse the API server URL: %w", err)
}

port, err := strconv.ParseInt(apiUrl.Port(), 10, 32)
if err != nil {
return apiUrl.Hostname(), 0, fmt.Errorf("failed to parse port: %w", err)
}

return apiUrl.Hostname(), int32(port), nil
}
3 changes: 2 additions & 1 deletion e2e/go.mod
Expand Up @@ -18,6 +18,7 @@ require (
sigs.k8s.io/cluster-api-provider-aws/v2 v2.4.0
sigs.k8s.io/cluster-api-provider-gcp v1.5.1-0.20240226200925-8c0c11dcff84
sigs.k8s.io/cluster-api-provider-ibmcloud v0.7.0
sigs.k8s.io/cluster-api-provider-vsphere v1.9.2
sigs.k8s.io/controller-runtime v0.16.5
sigs.k8s.io/yaml v1.4.0
)
Expand Down Expand Up @@ -66,7 +67,7 @@ require (
golang.org/x/term v0.17.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.16.1 // indirect
golang.org/x/tools v0.17.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/protobuf v1.32.0 // indirect
Expand Down
6 changes: 4 additions & 2 deletions e2e/go.sum
Expand Up @@ -187,8 +187,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand Down Expand Up @@ -236,6 +236,8 @@ sigs.k8s.io/cluster-api-provider-gcp v1.5.1-0.20240226200925-8c0c11dcff84 h1:eaq
sigs.k8s.io/cluster-api-provider-gcp v1.5.1-0.20240226200925-8c0c11dcff84/go.mod h1:DztBN9QZcR4z+aCll+BZV35fEdwHzNgpCt6PU7Fe9qA=
sigs.k8s.io/cluster-api-provider-ibmcloud v0.7.0 h1:3IDw0U2ZFX/RQmJ2mFu3ibQ5mBUUcG1ShcHm7eLHGJ4=
sigs.k8s.io/cluster-api-provider-ibmcloud v0.7.0/go.mod h1:/tqPsGYcODyLUP+DcqMZDeF2l2jiE9qET32s8/eeJTA=
sigs.k8s.io/cluster-api-provider-vsphere v1.9.2 h1:fIXMlg5Zfy6CfmUD8kC/pTeDhJK8SlW8WCrPA5WqVak=
sigs.k8s.io/cluster-api-provider-vsphere v1.9.2/go.mod h1:mvYaJ1J0uYjj/95W2uzgPmhghXWW+49cNSO/ku7Ob+w=
sigs.k8s.io/controller-runtime v0.16.5 h1:yr1cEJbX08xsTW6XEIzT13KHHmIyX8Umvme2cULvFZw=
sigs.k8s.io/controller-runtime v0.16.5/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
Expand Down
5 changes: 4 additions & 1 deletion e2e/vendor/modules.txt
Expand Up @@ -271,7 +271,7 @@ golang.org/x/text/unicode/norm
# golang.org/x/time v0.5.0
## explicit; go 1.18
golang.org/x/time/rate
# golang.org/x/tools v0.16.1
# golang.org/x/tools v0.17.0
## explicit; go 1.18
golang.org/x/tools/go/ast/inspector
# gomodules.xyz/jsonpatch/v2 v2.4.0
Expand Down Expand Up @@ -640,6 +640,9 @@ sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1
# sigs.k8s.io/cluster-api-provider-ibmcloud v0.7.0
## explicit; go 1.20
sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2
# sigs.k8s.io/cluster-api-provider-vsphere v1.9.2
## explicit; go 1.20
sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1
# sigs.k8s.io/controller-runtime v0.16.5
## explicit; go 1.20
sigs.k8s.io/controller-runtime
Expand Down
201 changes: 201 additions & 0 deletions e2e/vendor/sigs.k8s.io/cluster-api-provider-vsphere/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 8342a83

Please sign in to comment.