Skip to content

Commit 0f41913

Browse files
committed
API changes for Dependent & Referenced resources
1 parent 9c7f4a9 commit 0f41913

15 files changed

+158
-122
lines changed

api/v1alpha5/conversion_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func TestConvertFrom(t *testing.T) {
7979
Spec: OpenStackMachineSpec{},
8080
ObjectMeta: metav1.ObjectMeta{
8181
Annotations: map[string]string{
82-
"cluster.x-k8s.io/conversion-data": "{\"spec\":{\"cloudName\":\"\",\"flavor\":\"\",\"image\":{}},\"status\":{\"dependentResources\":{},\"ready\":false,\"referencedResources\":{}}}",
82+
"cluster.x-k8s.io/conversion-data": "{\"spec\":{\"cloudName\":\"\",\"flavor\":\"\",\"image\":{}},\"status\":{\"ready\":false}}",
8383
},
8484
},
8585
},

api/v1alpha6/conversion.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ func restorev1alpha8ClusterStatus(previous *infrav1.OpenStackClusterStatus, dst
129129
dst.WorkerSecurityGroup = previous.WorkerSecurityGroup
130130
dst.BastionSecurityGroup = previous.BastionSecurityGroup
131131

132-
if previous.Bastion != nil {
132+
if previous.Bastion != nil && previous.Bastion.ReferencedResources != nil {
133133
dst.Bastion.ReferencedResources = previous.Bastion.ReferencedResources
134134
}
135-
if previous.Bastion != nil && previous.Bastion.DependentResources.PortsStatus != nil {
136-
dst.Bastion.DependentResources.PortsStatus = previous.Bastion.DependentResources.PortsStatus
135+
if previous.Bastion != nil && previous.Bastion.DependentResources != nil {
136+
dst.Bastion.DependentResources = previous.Bastion.DependentResources
137137
}
138138
}
139139

@@ -379,13 +379,13 @@ var v1alpha8OpenStackMachineRestorer = conversion.RestorerFor[*infrav1.OpenStack
379379
restorev1alpha8MachineSpec,
380380
),
381381
"depresources": conversion.UnconditionalFieldRestorer(
382-
func(c *infrav1.OpenStackMachine) *infrav1.DependentMachineResources {
382+
func(c *infrav1.OpenStackMachine) **infrav1.DependentMachineResources {
383383
return &c.Status.DependentResources
384384
},
385385
),
386386
// No equivalent in v1alpha6
387387
"refresources": conversion.UnconditionalFieldRestorer(
388-
func(c *infrav1.OpenStackMachine) *infrav1.ReferencedMachineResources {
388+
func(c *infrav1.OpenStackMachine) **infrav1.ReferencedMachineResources {
389389
return &c.Status.ReferencedResources
390390
},
391391
),

api/v1alpha7/conversion.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,12 @@ func restorev1alpha8ClusterStatus(previous *infrav1.OpenStackClusterStatus, dst
121121
restorev1alpha8SecurityGroupStatus(previous.BastionSecurityGroup, dst.BastionSecurityGroup)
122122

123123
// ReferencedResources have no equivalent in v1alpha7
124-
if previous.Bastion != nil {
124+
if previous.Bastion != nil && previous.Bastion.ReferencedResources != nil {
125125
dst.Bastion.ReferencedResources = previous.Bastion.ReferencedResources
126126
}
127127

128-
if previous.Bastion != nil && previous.Bastion.DependentResources.PortsStatus != nil {
129-
dst.Bastion.DependentResources.PortsStatus = previous.Bastion.DependentResources.PortsStatus
128+
if previous.Bastion != nil && previous.Bastion.DependentResources != nil {
129+
dst.Bastion.DependentResources = previous.Bastion.DependentResources
130130
}
131131
}
132132

@@ -354,14 +354,14 @@ var v1alpha8OpenStackMachineRestorer = conversion.RestorerFor[*infrav1.OpenStack
354354
restorev1alpha8MachineSpec,
355355
),
356356
"depresources": conversion.UnconditionalFieldRestorer(
357-
func(c *infrav1.OpenStackMachine) *infrav1.DependentMachineResources {
357+
func(c *infrav1.OpenStackMachine) **infrav1.DependentMachineResources {
358358
return &c.Status.DependentResources
359359
},
360360
),
361361

362362
// No equivalent in v1alpha7
363363
"refresources": conversion.UnconditionalFieldRestorer(
364-
func(c *infrav1.OpenStackMachine) *infrav1.ReferencedMachineResources {
364+
func(c *infrav1.OpenStackMachine) **infrav1.ReferencedMachineResources {
365365
return &c.Status.ReferencedResources
366366
},
367367
),

api/v1alpha8/openstackmachine_types.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,10 @@ type OpenStackMachineStatus struct {
117117
InstanceState *InstanceState `json:"instanceState,omitempty"`
118118

119119
// ReferencedResources contains resolved references to resources that the machine depends on.
120-
ReferencedResources ReferencedMachineResources `json:"referencedResources,omitempty"`
120+
ReferencedResources *ReferencedMachineResources `json:"referencedResources,omitempty"`
121121

122122
// DependentResources contains resolved dependent resources that were created by the machine.
123-
DependentResources DependentMachineResources `json:"dependentResources,omitempty"`
123+
DependentResources *DependentMachineResources `json:"dependentResources,omitempty"`
124124

125125
FailureReason *errors.MachineStatusError `json:"failureReason,omitempty"`
126126

api/v1alpha8/types.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -174,14 +174,14 @@ type AddressPair struct {
174174
}
175175

176176
type BastionStatus struct {
177-
ID string `json:"id,omitempty"`
178-
Name string `json:"name,omitempty"`
179-
SSHKeyName string `json:"sshKeyName,omitempty"`
180-
State InstanceState `json:"state,omitempty"`
181-
IP string `json:"ip,omitempty"`
182-
FloatingIP string `json:"floatingIP,omitempty"`
183-
ReferencedResources ReferencedMachineResources `json:"referencedResources,omitempty"`
184-
DependentResources DependentMachineResources `json:"dependentResources,omitempty"`
177+
ID string `json:"id,omitempty"`
178+
Name string `json:"name,omitempty"`
179+
SSHKeyName string `json:"sshKeyName,omitempty"`
180+
State InstanceState `json:"state,omitempty"`
181+
IP string `json:"ip,omitempty"`
182+
FloatingIP string `json:"floatingIP,omitempty"`
183+
ReferencedResources *ReferencedMachineResources `json:"referencedResources,omitempty"`
184+
DependentResources *DependentMachineResources `json:"dependentResources,omitempty"`
185185
}
186186

187187
type RootVolume struct {

api/v1alpha8/zz_generated.deepcopy.go

Lines changed: 20 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controllers/openstackcluster_controller.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -126,20 +126,22 @@ func (r *OpenStackClusterReconciler) Reconcile(ctx context.Context, req ctrl.Req
126126
if openStackCluster.Status.Bastion == nil {
127127
openStackCluster.Status.Bastion = &infrav1.BastionStatus{}
128128
}
129-
changed, err := compute.ResolveReferencedMachineResources(scope, openStackCluster, &openStackCluster.Spec.Bastion.Instance, &openStackCluster.Status.Bastion.ReferencedResources)
130-
if err != nil {
131-
return reconcile.Result{}, err
132-
}
133-
if changed {
129+
if openStackCluster.Status.Bastion.ReferencedResources == nil {
130+
openStackCluster.Status.Bastion.ReferencedResources = &infrav1.ReferencedMachineResources{}
131+
err := compute.ResolveReferencedMachineResources(scope, openStackCluster, &openStackCluster.Spec.Bastion.Instance, openStackCluster.Status.Bastion.ReferencedResources)
132+
if err != nil {
133+
return reconcile.Result{}, err
134+
}
134135
// If the referenced resources have changed, we need to update the OpenStackCluster status now.
135136
return reconcile.Result{}, nil
136137
}
137138

138-
changed, err = compute.ResolveDependentBastionResources(scope, openStackCluster, bastionName(cluster.Name))
139-
if err != nil {
140-
return reconcile.Result{}, err
141-
}
142-
if changed {
139+
if openStackCluster.Status.Bastion.DependentResources == nil {
140+
openStackCluster.Status.Bastion.DependentResources = &infrav1.DependentMachineResources{}
141+
err = compute.ResolveDependentBastionResources(scope, openStackCluster, bastionName(cluster.Name))
142+
if err != nil {
143+
return reconcile.Result{}, err
144+
}
143145
// If the dependent resources have changed, we need to update the OpenStackCluster status now.
144146
return reconcile.Result{}, nil
145147
}
@@ -291,7 +293,7 @@ func deleteBastion(scope scope.Scope, cluster *clusterv1.Cluster, openStackClust
291293
}
292294
}
293295

294-
if openStackCluster.Status.Bastion != nil && len(openStackCluster.Status.Bastion.DependentResources.PortsStatus) > 0 {
296+
if openStackCluster.Status.Bastion != nil && openStackCluster.Status.Bastion.DependentResources != nil && len(openStackCluster.Status.Bastion.DependentResources.PortsStatus) > 0 {
295297
trunkSupported, err := networkingService.IsTrunkExtSupported()
296298
if err != nil {
297299
return err
@@ -402,7 +404,7 @@ func reconcileBastion(scope scope.Scope, cluster *clusterv1.Cluster, openStackCl
402404
}
403405
}
404406

405-
err = getOrCreateBastionPorts(scope, cluster, openStackCluster, networkingService, cluster.Name)
407+
err = getOrCreateBastionPorts(cluster, openStackCluster, networkingService, cluster.Name)
406408
if err != nil {
407409
handleUpdateOSCError(openStackCluster, fmt.Errorf("failed to get or create ports for bastion: %w", err))
408410
return ctrl.Result{}, fmt.Errorf("failed to get or create ports for bastion: %w", err)
@@ -542,7 +544,7 @@ func getBastionSecurityGroups(openStackCluster *infrav1.OpenStackCluster) []infr
542544
return instanceSpecSecurityGroups
543545
}
544546

545-
func getOrCreateBastionPorts(scope scope.Scope, cluster *clusterv1.Cluster, openStackCluster *infrav1.OpenStackCluster, networkingService *networking.Service, clusterName string) error {
547+
func getOrCreateBastionPorts(cluster *clusterv1.Cluster, openStackCluster *infrav1.OpenStackCluster, networkingService *networking.Service, clusterName string) error {
546548
if openStackCluster.Status.Bastion == nil {
547549
openStackCluster.Status.Bastion = &infrav1.BastionStatus{}
548550
}

controllers/openstackcluster_controller_test.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ var _ = Describe("OpenStackCluster controller", func() {
230230
Expect(err).To(BeNil())
231231
testCluster.Status = infrav1.OpenStackClusterStatus{
232232
Bastion: &infrav1.BastionStatus{
233-
ReferencedResources: infrav1.ReferencedMachineResources{
233+
ReferencedResources: &infrav1.ReferencedMachineResources{
234234
ImageID: "imageID",
235235
PortsOpts: []infrav1.PortOpts{
236236
{
@@ -240,7 +240,7 @@ var _ = Describe("OpenStackCluster controller", func() {
240240
},
241241
},
242242
},
243-
DependentResources: infrav1.DependentMachineResources{
243+
DependentResources: &infrav1.DependentMachineResources{
244244
PortsStatus: []infrav1.PortStatus{
245245
{
246246
ID: "portID1",
@@ -279,7 +279,7 @@ var _ = Describe("OpenStackCluster controller", func() {
279279
Expect(testCluster.Status.Bastion).To(Equal(&infrav1.BastionStatus{
280280
ID: "adopted-bastion-uuid",
281281
State: "ACTIVE",
282-
ReferencedResources: infrav1.ReferencedMachineResources{
282+
ReferencedResources: &infrav1.ReferencedMachineResources{
283283
ImageID: "imageID",
284284
PortsOpts: []infrav1.PortOpts{
285285
{
@@ -289,7 +289,7 @@ var _ = Describe("OpenStackCluster controller", func() {
289289
},
290290
},
291291
},
292-
DependentResources: infrav1.DependentMachineResources{
292+
DependentResources: &infrav1.DependentMachineResources{
293293
PortsStatus: []infrav1.PortStatus{
294294
{
295295
ID: "portID1",
@@ -320,7 +320,7 @@ var _ = Describe("OpenStackCluster controller", func() {
320320
},
321321
Bastion: &infrav1.BastionStatus{
322322
ID: "adopted-fip-bastion-uuid",
323-
ReferencedResources: infrav1.ReferencedMachineResources{
323+
ReferencedResources: &infrav1.ReferencedMachineResources{
324324
ImageID: "imageID",
325325
PortsOpts: []infrav1.PortOpts{
326326
{
@@ -330,7 +330,7 @@ var _ = Describe("OpenStackCluster controller", func() {
330330
},
331331
},
332332
},
333-
DependentResources: infrav1.DependentMachineResources{
333+
DependentResources: &infrav1.DependentMachineResources{
334334
PortsStatus: []infrav1.PortStatus{
335335
{
336336
ID: "portID1",
@@ -362,7 +362,7 @@ var _ = Describe("OpenStackCluster controller", func() {
362362
ID: "adopted-fip-bastion-uuid",
363363
FloatingIP: "1.2.3.4",
364364
State: "ACTIVE",
365-
ReferencedResources: infrav1.ReferencedMachineResources{
365+
ReferencedResources: &infrav1.ReferencedMachineResources{
366366
ImageID: "imageID",
367367
PortsOpts: []infrav1.PortOpts{
368368
{
@@ -372,7 +372,7 @@ var _ = Describe("OpenStackCluster controller", func() {
372372
},
373373
},
374374
},
375-
DependentResources: infrav1.DependentMachineResources{
375+
DependentResources: &infrav1.DependentMachineResources{
376376
PortsStatus: []infrav1.PortStatus{
377377
{
378378
ID: "portID1",
@@ -403,7 +403,7 @@ var _ = Describe("OpenStackCluster controller", func() {
403403
},
404404
Bastion: &infrav1.BastionStatus{
405405
ID: "requeue-bastion-uuid",
406-
ReferencedResources: infrav1.ReferencedMachineResources{
406+
ReferencedResources: &infrav1.ReferencedMachineResources{
407407
ImageID: "imageID",
408408
PortsOpts: []infrav1.PortOpts{
409409
{
@@ -413,7 +413,7 @@ var _ = Describe("OpenStackCluster controller", func() {
413413
},
414414
},
415415
},
416-
DependentResources: infrav1.DependentMachineResources{
416+
DependentResources: &infrav1.DependentMachineResources{
417417
PortsStatus: []infrav1.PortStatus{
418418
{
419419
ID: "portID1",
@@ -439,7 +439,7 @@ var _ = Describe("OpenStackCluster controller", func() {
439439
Expect(testCluster.Status.Bastion).To(Equal(&infrav1.BastionStatus{
440440
ID: "requeue-bastion-uuid",
441441
State: "BUILD",
442-
ReferencedResources: infrav1.ReferencedMachineResources{
442+
ReferencedResources: &infrav1.ReferencedMachineResources{
443443
ImageID: "imageID",
444444
PortsOpts: []infrav1.PortOpts{
445445
{
@@ -449,7 +449,7 @@ var _ = Describe("OpenStackCluster controller", func() {
449449
},
450450
},
451451
},
452-
DependentResources: infrav1.DependentMachineResources{
452+
DependentResources: &infrav1.DependentMachineResources{
453453
PortsStatus: []infrav1.PortStatus{
454454
{
455455
ID: "portID1",
@@ -471,7 +471,7 @@ var _ = Describe("OpenStackCluster controller", func() {
471471
Expect(err).To(BeNil())
472472
testCluster.Status = infrav1.OpenStackClusterStatus{
473473
Bastion: &infrav1.BastionStatus{
474-
ReferencedResources: infrav1.ReferencedMachineResources{
474+
ReferencedResources: &infrav1.ReferencedMachineResources{
475475
ImageID: "imageID",
476476
},
477477
},
@@ -521,7 +521,7 @@ var _ = Describe("OpenStackCluster controller", func() {
521521
}
522522
testCluster.Status = infrav1.OpenStackClusterStatus{
523523
Bastion: &infrav1.BastionStatus{
524-
DependentResources: infrav1.DependentMachineResources{
524+
DependentResources: &infrav1.DependentMachineResources{
525525
PortsStatus: []infrav1.PortStatus{
526526
{
527527
ID: "port-id",
@@ -601,7 +601,7 @@ var _ = Describe("OpenStackCluster controller", func() {
601601
}
602602
testCluster.Status = infrav1.OpenStackClusterStatus{
603603
Bastion: &infrav1.BastionStatus{
604-
DependentResources: infrav1.DependentMachineResources{
604+
DependentResources: &infrav1.DependentMachineResources{
605605
PortsStatus: []infrav1.PortStatus{
606606
{
607607
ID: "port-id",

0 commit comments

Comments
 (0)