Skip to content

Commit d15a4ea

Browse files
committed
fix support for older cs versions
1 parent 13601bf commit d15a4ea

File tree

3 files changed

+16
-20
lines changed

3 files changed

+16
-20
lines changed

controllers/cloudstackcluster_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,11 @@ func (r *CloudStackClusterReconciliationRunner) GetOrCreateCluster() (ctrl.Resul
107107
err = r.CSUser.GetOrCreateCluster(r.CAPICluster, r.ReconciliationSubject, &r.FailureDomains.Items[0].Spec)
108108
if err != nil {
109109
if strings.Contains(err.Error(), "Kubernetes Service plugin is disabled") {
110-
r.Log.Info("Kubernetes Service plugin is disabled on CloudStack. Skipping creating unmanaged kubernets cluster")
110+
r.Log.Info("Kubernetes Service plugin is disabled on CloudStack. Skipping ExternalManaged kubernetes cluster creation")
111111
return ctrl.Result{}, nil
112112
}
113-
return r.RequeueWithMessage(fmt.Sprintf("Creating unmanaged kubernetes cluster failed. Error: %s", err.Error()))
113+
// Not requeing the failure to support CloudStack v4.18 and before
114+
r.Log.Info(fmt.Sprintf("Failed creating ExternalManaged kubernetes cluster on CloudStack. Error: %s", err.Error()))
114115
}
115116
return ctrl.Result{}, nil
116117
}

pkg/cloud/cluster.go

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,24 @@ func withExternalManaged() cloudstack.OptionFunc {
5151
func (c *client) GetOrCreateCluster(cluster *clusterv1.Cluster, csCluster *infrav1.CloudStackCluster, fd *infrav1.CloudStackFailureDomainSpec) error {
5252
// Get cluster
5353
if csCluster.Status.CloudStackClusterID != "" {
54-
_, count, err := c.cs.Kubernetes.GetKubernetesClusterByID(csCluster.Status.CloudStackClusterID, withExternalManaged())
54+
externalManagedCluster, count, err := c.cs.Kubernetes.GetKubernetesClusterByID(csCluster.Status.CloudStackClusterID, withExternalManaged())
5555
if err != nil {
5656
return err
57-
}
58-
if count == 1 {
57+
} else if count > 0 {
58+
csCluster.Status.CloudStackClusterID = externalManagedCluster.Id
5959
return nil
6060
}
6161
}
6262

6363
// Check if a cluster exists with the same name
64-
clusterName := fmt.Sprintf("%s - %s", cluster.GetName(), csCluster.GetName())
65-
csUnmanagedCluster, count, err := c.cs.Kubernetes.GetKubernetesClusterByName(clusterName, withExternalManaged())
64+
clusterName := fmt.Sprintf("%s - %s - %s", cluster.GetName(), csCluster.GetName(), csCluster.GetUID())
65+
externalManagedCluster, count, err := c.cs.Kubernetes.GetKubernetesClusterByName(clusterName, withExternalManaged())
6666
if err != nil && !strings.Contains(err.Error(), "No match found for ") {
6767
return err
6868
}
69-
if count <= 0 {
69+
if count > 0 {
70+
csCluster.Status.CloudStackClusterID = externalManagedCluster.Id
71+
} else if err == nil || (err != nil && strings.Contains(err.Error(), "No match found for ")) {
7072
// Create cluster
7173
domain := Domain{Path: rootDomain}
7274
if csCluster.Spec.FailureDomains[0].Domain != "" {
@@ -91,27 +93,20 @@ func (c *client) GetOrCreateCluster(cluster *clusterv1.Cluster, csCluster *infra
9193
setIfNotEmpty(csCluster.Spec.ControlPlaneEndpoint.Host, params.SetExternalloadbalanceripaddress)
9294
params.SetClustertype("ExternalManaged")
9395

94-
r, err := c.cs.Kubernetes.CreateKubernetesCluster(params)
96+
cloudStackCKSCluster, err := c.cs.Kubernetes.CreateKubernetesCluster(params)
9597
if err != nil {
9698
return err
9799
}
98-
csUnmanagedCluster, count, err = c.cs.Kubernetes.GetKubernetesClusterByID(r.Id)
99-
if err != nil {
100-
return err
101-
}
102-
if count == 0 {
103-
return errors.New("cluster not found")
104-
}
100+
csCluster.Status.CloudStackClusterID = cloudStackCKSCluster.Id
105101
}
106-
csCluster.Status.CloudStackClusterID = csUnmanagedCluster.Id
107102
return nil
108103
}
109104

110105
func (c *client) DeleteCluster(csCluster *infrav1.CloudStackCluster) error {
111106
if csCluster.Status.CloudStackClusterID != "" {
112107
csUnmanagedCluster, count, err := c.cs.Kubernetes.GetKubernetesClusterByID(csCluster.Status.CloudStackClusterID, withExternalManaged())
113-
if err != nil {
114-
return err
108+
if err != nil && strings.Contains(err.Error(), " not found") {
109+
return nil
115110
}
116111
if count != 0 {
117112
params := c.cs.Kubernetes.NewDeleteKubernetesClusterParams(csUnmanagedCluster.Id)
@@ -121,7 +116,6 @@ func (c *client) DeleteCluster(csCluster *infrav1.CloudStackCluster) error {
121116
}
122117
}
123118
csCluster.Status.CloudStackClusterID = ""
124-
return nil
125119
}
126120
return nil
127121
}

pkg/cloud/isolated_network.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ func (c *client) CreateIsolatedNetwork(fd *infrav1.CloudStackFailureDomain, isoN
101101

102102
// Do isolated network creation.
103103
p := c.cs.Network.NewCreateNetworkParams(isoNet.Spec.Name, offeringID, fd.Spec.Zone.ID)
104+
p.SetDisplaytext(isoNet.Spec.Name)
104105
resp, err := c.cs.Network.CreateNetwork(p)
105106
if err != nil {
106107
c.customMetrics.EvaluateErrorAndIncrementAcsReconciliationErrorCounter(err)

0 commit comments

Comments
 (0)