Skip to content

Commit 9ec6d9c

Browse files
author
Joshua Reed
committed
Fixup deletion and ag owner refs.
1 parent 9aa26dc commit 9ec6d9c

File tree

9 files changed

+48
-192
lines changed

9 files changed

+48
-192
lines changed

controllers/cloudstackcluster_controller.go

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -92,24 +92,14 @@ func (r *CloudStackClusterReconciliationRunner) Reconcile() (res ctrl.Result, re
9292
r.GetZones(r.Zones),
9393
r.VerifyZoneCRDs,
9494
r.SetFailureDomains,
95-
r.ResolveClusterDetails)
95+
r.SetReady)
9696
}
9797

98-
// ResolveClusterDetails fetches cluster specific details like domain and account IDs.
99-
func (r *CloudStackClusterReconciliationRunner) ResolveClusterDetails() (ctrl.Result, error) {
100-
// Ensure that CAPI won't prematurely delete this CloudStackCluster.
98+
// SetReady adds a finalizer and sets the cluster status to ready.
99+
func (r *CloudStackClusterReconciliationRunner) SetReady() (ctrl.Result, error) {
101100
controllerutil.AddFinalizer(r.ReconciliationSubject, infrav1.ClusterFinalizer)
102-
103-
// Create and or fetch cluster components.
104-
err := r.CSUser.GetOrCreateCluster(r.ReconciliationSubject)
105-
if err == nil {
106-
r.Log.Info("Fetched cluster info successfully.")
107-
r.Log.V(1).Info("Post fetch cluster status.", "clusterStatus", r.ReconciliationSubject.Status)
108-
109-
// Set cluster to ready to indicate readiness to CAPI.
110-
r.ReconciliationSubject.Status.Ready = true
111-
}
112-
return ctrl.Result{}, err
101+
r.ReconciliationSubject.Status.Ready = true
102+
return ctrl.Result{}, nil
113103
}
114104

115105
// CheckZoneDetails verifies the Zone CRDs found match against those requested.
@@ -150,9 +140,6 @@ func (r *CloudStackClusterReconciliationRunner) ReconcileDelete() (ctrl.Result,
150140
}
151141
return r.RequeueWithMessage("Child Zones still present, requeueing.")
152142
}
153-
if err := r.CSUser.DisposeClusterResources(r.ReconciliationSubject); err != nil {
154-
return ctrl.Result{}, err
155-
}
156143
controllerutil.RemoveFinalizer(r.ReconciliationSubject, infrav1.ClusterFinalizer)
157144
return ctrl.Result{}, nil
158145
}

controllers/cloudstackmachine_controller.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func (r *CloudStackMachineReconciliationRunner) ConsiderAffinity() (ctrl.Result,
117117
return res, err
118118
}
119119
if !r.AffinityGroup.Status.Ready {
120-
return r.RequeueWithMessage("Required afinity group not ready.")
120+
return r.RequeueWithMessage("Required affinity group not ready.")
121121
}
122122
return ctrl.Result{}, nil
123123
}
@@ -230,7 +230,10 @@ func (r *CloudStackMachineReconciliationRunner) AddToLBIfNeeded() (retRes ctrl.R
230230

231231
func (r *CloudStackMachineReconciliationRunner) ReconcileDelete() (retRes ctrl.Result, reterr error) {
232232
r.Log.Info("Deleting instance", "instance-id", r.ReconciliationSubject.Spec.InstanceID)
233-
if err := r.CSUser.DestroyVMInstance(r.ReconciliationSubject); err != nil {
233+
// Use CSClient instead of CSUser here to expunge as admin.
234+
// The CloudStack-Go API does not return an error, but the VM won't delete with Expunge set if requested by
235+
// non-domain admin user.
236+
if err := r.CSClient.DestroyVMInstance(r.ReconciliationSubject); err != nil {
234237
if err.Error() == "VM deletion in progress" {
235238
r.Log.Info(err.Error())
236239
return ctrl.Result{RequeueAfter: utils.DestoryVMRequeueInterval}, nil

controllers/utils/affinity_group.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
infrav1 "github.com/aws/cluster-api-provider-cloudstack/api/v1beta1"
2424
"github.com/pkg/errors"
25+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2526
capiv1 "sigs.k8s.io/cluster-api/api/v1beta1"
2627
ctrl "sigs.k8s.io/controller-runtime"
2728
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -40,25 +41,30 @@ func (r *ReconciliationRunner) GetOrCreateAffinityGroup(name string, affinityTyp
4041
return ctrl.Result{}, nil
4142
} // Didn't find a group, so create instead.
4243

44+
// Set affinity group type.
4345
if affinityType == infrav1.ProAffinity {
4446
ag.Spec.Type = "host affinity"
4547
} else if affinityType == infrav1.AntiAffinity {
4648
ag.Spec.Type = "host anti-affinity"
4749
} else {
4850
return ctrl.Result{}, errors.Errorf("unrecognized affinity type %s", affinityType)
4951
}
52+
53+
// Setup basic metadata.
54+
ag.Name = name
5055
ag.Spec.Name = name
56+
ag.ObjectMeta = r.NewChildObjectMeta(lowerName)
5157

58+
// Replace owner reference with controller of CAPI and CloudStack machines.
5259
for _, ref := range r.ReconciliationSubject.GetOwnerReferences() {
53-
if ref.Kind == "EtcdadmCluster" || ref.Kind == "KubeadmControlPlane" || ref.Kind == "MachineSet" {
54-
ag.OwnerReferences = append(ag.OwnerReferences, ref)
60+
if strings.EqualFold(ref.Kind, "EtcdadmCluster") ||
61+
strings.EqualFold(ref.Kind, "KubeadmControlPlane") ||
62+
strings.EqualFold(ref.Kind, "MachineSet") {
63+
ag.OwnerReferences = []metav1.OwnerReference{ref}
5564
break
5665
}
5766
}
5867

59-
ag.Name = name
60-
ag.Spec.Name = name
61-
ag.ObjectMeta = r.NewChildObjectMeta(lowerName)
6268
if err := r.K8sClient.Create(r.RequestCtx, ag); err != nil && !ContainsAlreadyExistsSubstring(err) {
6369
return r.ReturnWrappedError(err, "creating affinity group CRD:")
6470
}

controllers/utils/base_reconciler.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -225,15 +225,13 @@ func (r *ReconciliationRunner) SetCSUser() (ctrl.Result, error) {
225225
r.CSUser = r.CSClient
226226
if r.CSCluster.Spec.Account != "" {
227227
user := &cloud.User{}
228-
user.Account.Domain.Name = r.CSCluster.Spec.Domain
229-
user.Account.Domain.ID = r.CSCluster.Spec.Domain
228+
user.Account.Domain.Path = r.CSCluster.Spec.Domain
230229
user.Account.Name = r.CSCluster.Spec.Account
231-
user.Account.ID = r.CSCluster.Spec.Account
232230
if found, err := r.CSClient.GetUserWithKeys(user); err != nil {
233231
return ctrl.Result{}, err
234232
} else if !found {
235233
return ctrl.Result{}, errors.Errorf("could not find sufficient user (with API keys) in domain/account %s/%s",
236-
r.CSCluster.Spec.Account, r.CSCluster.Spec.Domain)
234+
r.CSCluster.Spec.Domain, r.CSCluster.Spec.Account)
237235
}
238236
cfg := cloud.Config{APIKey: user.APIKey, SecretKey: user.SecretKey}
239237
if client, err := r.CSClient.NewClientFromSpec(cfg); err != nil {

pkg/cloud/client.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
//go:generate mockgen -destination=../mocks/mock_client.go -package=mocks github.com/aws/cluster-api-provider-cloudstack/pkg/cloud Client
2828

2929
type Client interface {
30-
ClusterIface
3130
VMIface
3231
NetworkIface
3332
AffinityGroupIface

pkg/cloud/cluster.go

Lines changed: 0 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -15,114 +15,3 @@ limitations under the License.
1515
*/
1616

1717
package cloud
18-
19-
import (
20-
"strings"
21-
22-
infrav1 "github.com/aws/cluster-api-provider-cloudstack/api/v1beta1"
23-
"github.com/hashicorp/go-multierror"
24-
"github.com/pkg/errors"
25-
)
26-
27-
const rootDomain = "ROOT"
28-
const domainDelimiter = "/"
29-
30-
type ClusterIface interface {
31-
GetOrCreateCluster(*infrav1.CloudStackCluster) error
32-
DisposeClusterResources(cluster *infrav1.CloudStackCluster) error
33-
ResolveZones(*infrav1.CloudStackCluster) error
34-
}
35-
36-
func (c *client) ResolveZones(csCluster *infrav1.CloudStackCluster) (retErr error) {
37-
for _, specZone := range csCluster.Spec.Zones {
38-
if zoneID, count, err := c.cs.Zone.GetZoneID(specZone.Name); err != nil {
39-
retErr = multierror.Append(retErr, errors.Wrapf(err, "could not get Zone ID from %s", specZone))
40-
} else if count != 1 {
41-
retErr = multierror.Append(retErr, errors.Errorf(
42-
"expected 1 Zone with name %s, but got %d", specZone.Name, count))
43-
} else {
44-
specZone.ID = zoneID
45-
}
46-
47-
if resp, count, err := c.cs.Zone.GetZoneByID(specZone.ID); err != nil {
48-
return multierror.Append(retErr, errors.Wrapf(err, "could not get Zone by ID %s", specZone.ID))
49-
} else if count != 1 {
50-
return multierror.Append(retErr, errors.Errorf(
51-
"expected 1 Zone with UUID %s, but got %d", specZone.ID, count))
52-
} else {
53-
zone := infrav1.Zone{Network: specZone.Network}
54-
zone.Name = resp.Name
55-
zone.ID = resp.Id
56-
csCluster.Status.Zones[resp.Id] = zone
57-
}
58-
}
59-
60-
return nil
61-
}
62-
63-
func (c *client) GetOrCreateCluster(csCluster *infrav1.CloudStackCluster) (retErr error) {
64-
if csCluster.Status.Zones == nil {
65-
csCluster.Status.Zones = make(map[string]infrav1.Zone)
66-
}
67-
68-
if retErr := c.ResolveDomainAndAccount(csCluster); retErr != nil {
69-
return retErr
70-
}
71-
72-
return nil
73-
}
74-
75-
func (c *client) ResolveDomainAndAccount(csCluster *infrav1.CloudStackCluster) error {
76-
if (csCluster.Spec.Domain != "" && csCluster.Spec.Account == "") ||
77-
(csCluster.Spec.Domain == "" && csCluster.Spec.Account != "") {
78-
return errors.Errorf("Both domain and account must be specified or none of them must be specified")
79-
}
80-
81-
if csCluster.Spec.Domain != "" && csCluster.Spec.Account != "" {
82-
p := c.cs.Domain.NewListDomainsParams()
83-
tokens := strings.Split(csCluster.Spec.Domain, domainDelimiter)
84-
domainName := tokens[len(tokens)-1]
85-
p.SetListall(true)
86-
p.SetName(domainName)
87-
88-
resp, retErr := c.cs.Domain.ListDomains(p)
89-
if retErr != nil {
90-
return retErr
91-
}
92-
93-
var domainPath string
94-
if csCluster.Spec.Domain == rootDomain {
95-
domainPath = rootDomain
96-
} else {
97-
domainPath = strings.Join([]string{rootDomain, csCluster.Spec.Domain}, domainDelimiter)
98-
}
99-
for _, domain := range resp.Domains {
100-
if domain.Path == domainPath {
101-
csCluster.Status.DomainID = domain.Id
102-
break
103-
}
104-
}
105-
if csCluster.Status.DomainID == "" {
106-
return errors.Errorf("domain not found for domain path %s", csCluster.Spec.Domain)
107-
}
108-
109-
listAccountParams := c.cs.Account.NewListAccountsParams()
110-
listAccountParams.SetDomainid(csCluster.Status.DomainID)
111-
listAccountParams.SetName(csCluster.Spec.Account)
112-
listAccountResp, retErr := c.cs.Account.ListAccounts(listAccountParams)
113-
if retErr != nil {
114-
return retErr
115-
} else if listAccountResp.Count == 0 {
116-
return errors.Errorf("could not find account %s in domain ID %s",
117-
csCluster.Spec.Account, csCluster.Status.DomainID)
118-
} else if listAccountResp.Count > 1 {
119-
return errors.Errorf("expected 1 Account with account name %s in domain ID %s, but got %d",
120-
csCluster.Spec.Account, csCluster.Status.DomainID, listAccountResp.Count)
121-
}
122-
}
123-
return nil
124-
}
125-
126-
func (c *client) DisposeClusterResources(csCluster *infrav1.CloudStackCluster) (retError error) {
127-
return nil
128-
}

pkg/cloud/instance.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func (c *client) ResolveTemplate(
109109
zoneID string,
110110
) (templateID string, retErr error) {
111111
if len(csMachine.Spec.Template.ID) > 0 {
112-
csTemplate, count, err := c.cs.Template.GetTemplateByID(csMachine.Spec.Template.ID, "all")
112+
csTemplate, count, err := c.cs.Template.GetTemplateByID(csMachine.Spec.Template.ID, "executable")
113113
if err != nil {
114114
return "", multierror.Append(retErr, errors.Wrapf(
115115
err, "could not get Template by ID %s", csMachine.Spec.Template.ID))
@@ -124,7 +124,7 @@ func (c *client) ResolveTemplate(
124124
}
125125
return csMachine.Spec.Template.ID, nil
126126
}
127-
templateID, count, err := c.cs.Template.GetTemplateID(csMachine.Spec.Template.Name, "all", zoneID)
127+
templateID, count, err := c.cs.Template.GetTemplateID(csMachine.Spec.Template.Name, "executable", zoneID)
128128
if err != nil {
129129
return "", multierror.Append(retErr, errors.Wrapf(
130130
err, "could not get Template ID from %s", csMachine.Spec.Template.Name))
@@ -162,8 +162,6 @@ func (c *client) GetOrCreateVMInstance(
162162

163163
// Create VM instance.
164164
p := c.cs.VirtualMachine.NewDeployVirtualMachineParams(offeringID, templateID, csMachine.Status.ZoneID)
165-
setIfNotEmpty(csCluster.Spec.Account, p.SetAccount)
166-
setIfNotEmpty(csCluster.Status.DomainID, p.SetDomainid)
167165
p.SetNetworkids([]string{zone.Spec.Network.ID})
168166
setIfNotEmpty(csMachine.Name, p.SetName)
169167
setIfNotEmpty(csMachine.Name, p.SetDisplayname)
@@ -199,8 +197,6 @@ func (c *client) GetOrCreateVMInstance(
199197
listVirtualMachineParams.SetZoneid(csMachine.Status.ZoneID)
200198
listVirtualMachineParams.SetNetworkid(zone.Spec.Network.ID)
201199
listVirtualMachineParams.SetName(csMachine.Name)
202-
setIfNotEmpty(csCluster.Status.DomainID, listVirtualMachineParams.SetDomainid)
203-
setIfNotEmpty(csCluster.Spec.Account, listVirtualMachineParams.SetAccount)
204200
if listVirtualMachinesResponse, err2 := c.cs.VirtualMachine.ListVirtualMachines(listVirtualMachineParams); err2 == nil && listVirtualMachinesResponse.Count > 0 {
205201
csMachine.Spec.InstanceID = pointer.StringPtr(listVirtualMachinesResponse.VirtualMachines[0].Id)
206202
}
@@ -215,10 +211,10 @@ func (c *client) GetOrCreateVMInstance(
215211

216212
// DestroyVMInstance Destroys a VM instance. Assumes machine has been fetched prior and has an instance ID.
217213
func (c *client) DestroyVMInstance(csMachine *infrav1.CloudStackMachine) error {
218-
219214
// Attempt deletion regardless of machine state.
220-
p := c.cs.VirtualMachine.NewDestroyVirtualMachineParams(*csMachine.Spec.InstanceID)
215+
p := c.csAsync.VirtualMachine.NewDestroyVirtualMachineParams(*csMachine.Spec.InstanceID)
221216
p.SetExpunge(true)
217+
222218
if _, err := c.csAsync.VirtualMachine.DestroyVirtualMachine(p); err != nil &&
223219
strings.Contains(strings.ToLower(err.Error()), "unable to find uuid for id") {
224220
// VM doesn't exist. Success...
@@ -239,5 +235,6 @@ func (c *client) DestroyVMInstance(csMachine *infrav1.CloudStackMachine) error {
239235
return err
240236
}
241237

238+
return nil
242239
return errors.New("VM deletion in progress")
243240
}

pkg/cloud/instance_test.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,11 @@ var _ = Describe("Instance", func() {
149149
ShouldNot(Succeed())
150150
})
151151

152-
const allFilter = "all"
153152
It("returns errors while fetching template", func() {
154153
expectVMNotFound()
155154
sos.EXPECT().GetServiceOfferingID(dummies.CSMachine1.Spec.Offering.Name).
156155
Return(dummies.CSMachine1.Spec.Offering.ID, 1, nil)
157-
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, allFilter, dummies.Zone1.ID).
156+
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, "", dummies.Zone1.ID).
158157
Return("", -1, unknownError)
159158
Ω(client.GetOrCreateVMInstance(
160159
dummies.CSMachine1, dummies.CAPIMachine, dummies.CSCluster, dummies.CSZone1, dummies.CSAffinityGroup, "")).
@@ -165,7 +164,7 @@ var _ = Describe("Instance", func() {
165164
expectVMNotFound()
166165
sos.EXPECT().GetServiceOfferingID(dummies.CSMachine1.Spec.Offering.Name).
167166
Return(dummies.CSMachine1.Spec.Offering.ID, 1, nil)
168-
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, allFilter, dummies.Zone1.ID).Return("", 2, nil)
167+
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, "", dummies.Zone1.ID).Return("", 2, nil)
169168
Ω(client.GetOrCreateVMInstance(
170169
dummies.CSMachine1, dummies.CAPIMachine, dummies.CSCluster, dummies.CSZone1, dummies.CSAffinityGroup, "")).
171170
ShouldNot(Succeed())
@@ -175,7 +174,7 @@ var _ = Describe("Instance", func() {
175174
expectVMNotFound()
176175
sos.EXPECT().GetServiceOfferingID(dummies.CSMachine1.Spec.Offering.Name).
177176
Return(offeringFakeID, 1, nil)
178-
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, allFilter, dummies.Zone1.ID).
177+
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, "", dummies.Zone1.ID).
179178
Return(templateFakeID, 1, nil)
180179
vms.EXPECT().NewDeployVirtualMachineParams(offeringFakeID, templateFakeID, dummies.Zone1.ID).
181180
Return(&cloudstack.DeployVirtualMachineParams{})
@@ -200,7 +199,7 @@ var _ = Describe("Instance", func() {
200199
dummies.CSCluster.Status.DomainID = domainID
201200
vms.EXPECT().GetVirtualMachinesMetricByID(*dummies.CSMachine1.Spec.InstanceID).Return(nil, -1, notFoundError)
202201
sos.EXPECT().GetServiceOfferingID(dummies.CSMachine1.Spec.Offering.Name).Return(offeringFakeID, 1, nil)
203-
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, allFilter, dummies.Zone1.ID).
202+
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, "", dummies.Zone1.ID).
204203
Return(templateFakeID, 1, nil)
205204
vms.EXPECT().GetVirtualMachinesMetricByID(*dummies.CSMachine1.Spec.InstanceID).
206205
Return(&cloudstack.VirtualMachinesMetric{}, 1, nil)
@@ -248,7 +247,7 @@ var _ = Describe("Instance", func() {
248247
dummies.CSMachine1.Spec.Template.Name = "template"
249248

250249
sos.EXPECT().GetServiceOfferingID(dummies.CSMachine1.Spec.Offering.Name).Return(offeringFakeID, 1, nil)
251-
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, allFilter, dummies.Zone1.ID).
250+
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, "", dummies.Zone1.ID).
252251
Return(templateFakeID, 1, nil)
253252

254253
ActionAndAssert()
@@ -261,7 +260,7 @@ var _ = Describe("Instance", func() {
261260
dummies.CSMachine1.Spec.Template.Name = "template"
262261

263262
sos.EXPECT().GetServiceOfferingByID(dummies.CSMachine1.Spec.Offering.ID).Return(&cloudstack.ServiceOffering{Name: ""}, 1, nil)
264-
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, allFilter, dummies.Zone1.ID).
263+
ts.EXPECT().GetTemplateID(dummies.CSMachine1.Spec.Template.Name, "", dummies.Zone1.ID).
265264
Return(templateFakeID, 1, nil)
266265

267266
ActionAndAssert()
@@ -274,7 +273,7 @@ var _ = Describe("Instance", func() {
274273
dummies.CSMachine1.Spec.Template.Name = ""
275274

276275
sos.EXPECT().GetServiceOfferingID(dummies.CSMachine1.Spec.Offering.Name).Return(offeringFakeID, 1, nil)
277-
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, allFilter).Return(&cloudstack.Template{Name: ""}, 1, nil)
276+
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, "").Return(&cloudstack.Template{Name: ""}, 1, nil)
278277

279278
ActionAndAssert()
280279
})
@@ -286,7 +285,7 @@ var _ = Describe("Instance", func() {
286285
dummies.CSMachine1.Spec.Template.Name = ""
287286

288287
sos.EXPECT().GetServiceOfferingByID(dummies.CSMachine1.Spec.Offering.ID).Return(&cloudstack.ServiceOffering{Name: "offering"}, 1, nil)
289-
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, allFilter).Return(&cloudstack.Template{Name: "template"}, 1, nil)
288+
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, "").Return(&cloudstack.Template{Name: "template"}, 1, nil)
290289

291290
ActionAndAssert()
292291
})
@@ -298,7 +297,7 @@ var _ = Describe("Instance", func() {
298297
dummies.CSMachine1.Spec.Template.Name = "template"
299298

300299
sos.EXPECT().GetServiceOfferingByID(dummies.CSMachine1.Spec.Offering.ID).Return(&cloudstack.ServiceOffering{Name: "offering"}, 1, nil)
301-
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, allFilter).Return(&cloudstack.Template{Name: "template"}, 1, nil)
300+
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, "").Return(&cloudstack.Template{Name: "template"}, 1, nil)
302301

303302
ActionAndAssert()
304303
})
@@ -331,7 +330,7 @@ var _ = Describe("Instance", func() {
331330
dummies.CSMachine1.Spec.Template.Name = "template"
332331

333332
sos.EXPECT().GetServiceOfferingByID(dummies.CSMachine1.Spec.Offering.ID).Return(&cloudstack.ServiceOffering{Name: "offering"}, 1, nil)
334-
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, allFilter).Return(&cloudstack.Template{Name: "template-not-match"}, 1, nil)
333+
ts.EXPECT().GetTemplateByID(dummies.CSMachine1.Spec.Template.ID, "").Return(&cloudstack.Template{Name: "template-not-match"}, 1, nil)
335334
requiredRegexp := "template name %s does not match name %s returned using UUID %s"
336335
Ω(client.GetOrCreateVMInstance(
337336
dummies.CSMachine1, dummies.CAPIMachine, dummies.CSCluster, dummies.CSZone1, dummies.CSAffinityGroup, "")).

0 commit comments

Comments
 (0)