Skip to content

Commit f6d6a88

Browse files
committed
api: Report ImageID in Machine.Status
We use the opportunity to streamline some logic in the process. Signed-off-by: Stephen Finucane <[email protected]>
1 parent c4f5742 commit f6d6a88

File tree

9 files changed

+36
-18
lines changed

9 files changed

+36
-18
lines changed

api/v1alpha5/conversion.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ func Convert_v1alpha7_OpenStackMachineStatus_To_v1alpha5_OpenStackMachineStatus(
219219
}
220220

221221
in.ServerGroupID = ""
222+
in.ImageID = ""
222223

223224
return nil
224225
}

api/v1alpha5/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1alpha6/conversion.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func restorev1alpha7MachineSpec(previous *infrav1.OpenStackMachineSpec, dst *inf
6666

6767
func restorev1alpha7MachineStatus(previous *infrav1.OpenStackMachineStatus, dst *infrav1.OpenStackMachineStatus) {
6868
dst.ServerGroupID = previous.ServerGroupID
69+
dst.ImageID = previous.ImageID
6970
}
7071

7172
func restorev1alpha7Bastion(previous **infrav1.Bastion, dst **infrav1.Bastion) {
@@ -369,6 +370,7 @@ func Convert_v1alpha7_OpenStackMachineStatus_To_v1alpha6_OpenStackMachineStatus(
369370
}
370371

371372
in.ServerGroupID = ""
373+
in.ImageID = ""
372374

373375
return nil
374376
}

api/v1alpha6/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1alpha7/openstackmachine_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ type OpenStackMachineStatus struct {
113113
// Addresses contains the OpenStack instance associated addresses.
114114
Addresses []corev1.NodeAddress `json:"addresses,omitempty"`
115115

116+
// ImageID contains the ID of the image this machine was created with.
117+
ImageID string `json:"imageID,omitempty"`
118+
116119
// ServerGroupID contains the ID of the server group this machine is assigned to.
117120
ServerGroupID string `json:"serverGroupID,omitempty"`
118121

config/crd/bases/infrastructure.cluster.x-k8s.io_openstackmachines.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,6 +1609,10 @@ spec:
16091609
description: MachineStatusError defines errors states for Machine
16101610
objects.
16111611
type: string
1612+
imageID:
1613+
description: ImageID contains the ID of the image this machine was
1614+
created with.
1615+
type: string
16121616
instanceState:
16131617
description: InstanceState is the state of the OpenStack instance
16141618
for this machine.

controllers/openstackmachine_controller.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,14 @@ func (r *OpenStackMachineReconciler) reconcileNormal(ctx context.Context, scope
358358
})
359359
openStackMachine.Status.Addresses = addresses
360360

361+
if openStackMachine.Status.ImageID == "" {
362+
imageID, err := computeService.GetImageID(openStackMachine.Spec.ImageUUID, openStackMachine.Spec.Image)
363+
if err != nil {
364+
return ctrl.Result{}, fmt.Errorf("get image: %w", err)
365+
}
366+
openStackMachine.Status.ImageID = imageID
367+
}
368+
361369
if openStackMachine.Status.ServerGroupID == "" {
362370
serverGroupID, err := computeService.GetServerGroupID(openStackMachine.Spec.ServerGroupID, openStackMachine.Spec.ServerGroup) //nolint:staticcheck
363371
if err != nil {

pkg/cloud/services/compute/instance.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func (s *Service) createInstanceImpl(eventObject runtime.Object, openStackCluste
239239
var server *clients.ServerExt
240240
portList := []servers.Network{}
241241

242-
imageID, err := s.getImageID(instanceSpec.ImageUUID, instanceSpec.Image)
242+
imageID, err := s.GetImageID(instanceSpec.ImageUUID, instanceSpec.Image)
243243
if err != nil {
244244
return nil, fmt.Errorf("error getting image ID: %v", err)
245245
}
@@ -568,8 +568,18 @@ func applyServerGroupID(opts servers.CreateOptsBuilder, serverGroupID string) se
568568
return opts
569569
}
570570

571-
// Helper function for getting image id from name.
572-
func (s *Service) getImageIDFromName(imageName string) (string, error) {
571+
// Helper function for getting image ID from name or ID.
572+
func (s *Service) GetImageID(imageUUID, imageName string) (string, error) {
573+
if imageUUID != "" {
574+
// we return imageUUID without check
575+
return imageUUID, nil
576+
}
577+
578+
if imageName == "" {
579+
// nothing to lookup if unset
580+
return "", nil
581+
}
582+
573583
var opts images.ListOpts
574584

575585
opts.Name = imageName
@@ -590,18 +600,6 @@ func (s *Service) getImageIDFromName(imageName string) (string, error) {
590600
}
591601
}
592602

593-
// Helper function for getting image ID from name or ID.
594-
func (s *Service) getImageID(imageUUID, imageName string) (string, error) {
595-
if imageUUID != "" {
596-
// we return imageUUID without check
597-
return imageUUID, nil
598-
} else if imageName != "" {
599-
return s.getImageIDFromName(imageName)
600-
}
601-
602-
return "", nil
603-
}
604-
605603
func (s *Service) GetServerGroupID(serverGroupID string, serverGroupFilter *infrav1.ServerGroupFilter) (string, error) {
606604
if serverGroupFilter == nil {
607605
if serverGroupID == "" {

pkg/cloud/services/compute/instance_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -324,13 +324,13 @@ func TestService_getImageID(t *testing.T) {
324324
}
325325
tt.expect(mockScopeFactory.ImageClient.EXPECT())
326326

327-
got, err := s.getImageID(tt.imageUUID, tt.imageName)
327+
got, err := s.GetImageID(tt.imageUUID, tt.imageName)
328328
if (err != nil) != tt.wantErr {
329-
t.Errorf("Service.getImageID() error = %v, wantErr %v", err, tt.wantErr)
329+
t.Errorf("Service.GetImageID() error = %v, wantErr %v", err, tt.wantErr)
330330
return
331331
}
332332
if got != tt.want {
333-
t.Errorf("Service.getImageID() = %v, want %v", got, tt.want)
333+
t.Errorf("Service.GetImageID() = %v, want %v", got, tt.want)
334334
}
335335
})
336336
}

0 commit comments

Comments
 (0)