Skip to content

Commit 35351cb

Browse files
authored
Merge pull request #992 from shiftstack/mapo-fixes
✨Add InstanceStatus.AvailabilityZone()
2 parents 754371d + 38bf35d commit 35351cb

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

pkg/cloud/services/compute/instance.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -498,19 +498,18 @@ func (s *Service) GetInstanceStatus(resourceID string) (instance *InstanceStatus
498498
if resourceID == "" {
499499
return nil, fmt.Errorf("resourceId should be specified to get detail")
500500
}
501+
501502
mc := metrics.NewMetricPrometheusContext("server", "get")
502-
server, err := servers.Get(s.computeClient, resourceID).Extract()
503+
var server ServerExt
504+
err = servers.Get(s.computeClient, resourceID).ExtractInto(&server)
503505
if mc.ObserveRequestIgnoreNotFound(err) != nil {
504506
if capoerrors.IsNotFound(err) {
505507
return nil, nil
506508
}
507509
return nil, fmt.Errorf("get server %q detail failed: %v", resourceID, err)
508510
}
509-
if server == nil {
510-
return nil, nil
511-
}
512511

513-
return &InstanceStatus{server: server}, nil
512+
return &InstanceStatus{server: &server}, nil
514513
}
515514

516515
func (s *Service) GetInstanceStatusByName(eventObject runtime.Object, name string) (instance *InstanceStatus, err error) {
@@ -531,7 +530,8 @@ func (s *Service) GetInstanceStatusByName(eventObject runtime.Object, name strin
531530
if mc.ObserveRequest(err) != nil {
532531
return nil, fmt.Errorf("get server list: %v", err)
533532
}
534-
serverList, err := servers.ExtractServers(allPages)
533+
var serverList []ServerExt
534+
err = servers.ExtractServersInto(allPages, &serverList)
535535
if err != nil {
536536
return nil, fmt.Errorf("extract server list: %v", err)
537537
}

pkg/cloud/services/compute/instance_types.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,18 @@ import (
2020
"encoding/json"
2121
"fmt"
2222

23+
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/availabilityzones"
2324
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
2425

2526
infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha4"
2627
)
2728

29+
// ServerExt is the base gophercloud Server with extensions used by InstanceStatus.
30+
type ServerExt struct {
31+
servers.Server
32+
availabilityzones.ServerAvailabilityZoneExt
33+
}
34+
2835
// InstanceSpec defines the fields which can be set on a new OpenStack instance.
2936
//
3037
// InstanceSpec does not contain all of the fields of infrav1.Instance, as not
@@ -55,10 +62,10 @@ type InstanceIdentifier struct {
5562

5663
// InstanceStatus represents instance data which has been returned by OpenStack.
5764
type InstanceStatus struct {
58-
server *servers.Server
65+
server *ServerExt
5966
}
6067

61-
func NewInstanceStatusFromServer(server *servers.Server) *InstanceStatus {
68+
func NewInstanceStatusFromServer(server *ServerExt) *InstanceStatus {
6269
return &InstanceStatus{server}
6370
}
6471

@@ -91,6 +98,10 @@ func (is *InstanceStatus) SSHKeyName() string {
9198
return is.server.KeyName
9299
}
93100

101+
func (is *InstanceStatus) AvailabilityZone() string {
102+
return is.server.AvailabilityZone
103+
}
104+
94105
// APIInstance returns an infrav1.Instance object for use by the API.
95106
func (is *InstanceStatus) APIInstance() (*infrav1.Instance, error) {
96107
i := infrav1.Instance{

test/e2e/shared/openstack.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ func getOpenStackServers(e2eCtx *E2EContext) (map[string]server, error) {
170170
return nil, fmt.Errorf("error listing server: %v", err)
171171
}
172172

173-
serverList, err := servers.ExtractServers(allPages)
173+
var serverList []compute.ServerExt
174+
err = servers.ExtractServersInto(allPages, &serverList)
174175
if err != nil {
175176
return nil, fmt.Errorf("error extracting server: %v", err)
176177
}

0 commit comments

Comments
 (0)