Skip to content

Commit 4041278

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 982973d commit 4041278

File tree

6 files changed

+30
-15
lines changed

6 files changed

+30
-15
lines changed

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/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
@@ -109,6 +109,9 @@ type OpenStackMachineStatus struct {
109109
// Addresses contains the OpenStack instance associated addresses.
110110
Addresses []corev1.NodeAddress `json:"addresses,omitempty"`
111111

112+
// ImageID contains the ID of the image this machine was created with.
113+
ImageID string `json:"imageID,omitempty"`
114+
112115
// ServerGroupID contains the ID of the server group this machine is assigned to.
113116
ServerGroupID string `json:"serverGroupID,omitempty"`
114117

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,6 +1606,10 @@ spec:
16061606
description: MachineStatusError defines errors states for Machine
16071607
objects.
16081608
type: string
1609+
imageID:
1610+
description: ImageID contains the ID of the image this machine was
1611+
created with.
1612+
type: string
16091613
instanceState:
16101614
description: InstanceState is the state of the OpenStack instance
16111615
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)
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 serverGroupID != "" {
607605
// we return serverGroupID without check

0 commit comments

Comments
 (0)