Skip to content

Commit 67b504e

Browse files
committed
Onboarding: Replace flavor selection logic with value
The logic was unfortunately brittle, so let's drop it in favor of a configuration value.
1 parent 9f13080 commit 67b504e

File tree

2 files changed

+7
-35
lines changed

2 files changed

+7
-35
lines changed

internal/controller/onboarding_controller.go

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import (
3636
logger "sigs.k8s.io/controller-runtime/pkg/log"
3737

3838
"github.com/gophercloud/gophercloud/v2"
39-
"github.com/gophercloud/gophercloud/v2/openstack/compute/v2/flavors"
4039
"github.com/gophercloud/gophercloud/v2/openstack/compute/v2/hypervisors"
4140
"github.com/gophercloud/gophercloud/v2/openstack/compute/v2/servers"
4241
"github.com/gophercloud/gophercloud/v2/openstack/compute/v2/services"
@@ -63,6 +62,7 @@ const (
6362
type OnboardingController struct {
6463
k8sclient.Client
6564
Scheme *runtime.Scheme
65+
TestFlavorID string
6666
computeClient *gophercloud.ServiceClient
6767
testComputeClient *gophercloud.ServiceClient
6868
testImageClient *gophercloud.ServiceClient
@@ -490,10 +490,7 @@ func (r *OnboardingController) createOrGetTestServer(ctx context.Context, zone,
490490
return foundServer, nil
491491
}
492492

493-
flavorRef, err := r.findTestFlavor(ctx)
494-
if err != nil {
495-
return nil, err
496-
}
493+
flavorRef := r.TestFlavorID
497494

498495
imageRef, err := r.findTestImage(ctx)
499496
if err != nil {
@@ -576,35 +573,17 @@ func (r *OnboardingController) findTestImage(ctx context.Context) (string, error
576573
return "", fmt.Errorf("couldn't find image with name %v", testImageName)
577574
}
578575

579-
func (r *OnboardingController) findTestFlavor(ctx context.Context) (string, error) {
580-
flavorPages, err := flavors.ListDetail(r.testComputeClient, flavors.ListOpts{SortDir: "asc", SortKey: "memory_mb"}).AllPages(ctx)
581-
if err != nil {
582-
return "", err
583-
}
584-
585-
extractedFlavors, err := flavors.ExtractFlavors(flavorPages)
586-
if err != nil {
587-
return "", err
588-
}
589-
590-
for _, flavor := range extractedFlavors {
591-
_, found := flavor.ExtraSpecs["capabilities:hypervisor_type"]
592-
if !found {
593-
// Flavor does not restrict the hypervisor-type
594-
return flavor.ID, nil
595-
}
596-
}
597-
598-
return "", errors.New("couldn't find flavor")
599-
}
600-
601576
func (r *OnboardingController) patchStatus(ctx context.Context, hv, base *kvmv1.Hypervisor) error {
602577
return r.Status().Patch(ctx, hv, k8sclient.MergeFromWithOptions(base,
603578
k8sclient.MergeFromWithOptimisticLock{}), k8sclient.FieldOwner(OnboardingControllerName))
604579
}
605580

606581
// SetupWithManager sets up the controller with the Manager.
607582
func (r *OnboardingController) SetupWithManager(mgr ctrl.Manager) error {
583+
if r.TestFlavorID == "" {
584+
r.TestFlavorID = "1"
585+
}
586+
608587
ctx := context.Background()
609588

610589
var err error

internal/controller/onboarding_controller_test.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ var _ = Describe("Onboarding Controller", func() {
220220
onboardingReconciler = &OnboardingController{
221221
Client: k8sClient,
222222
Scheme: k8sClient.Scheme(),
223+
TestFlavorID: "1",
223224
computeClient: client.ServiceClient(fakeServer),
224225
testComputeClient: client.ServiceClient(fakeServer),
225226
testImageClient: client.ServiceClient(fakeServer),
@@ -384,14 +385,6 @@ var _ = Describe("Onboarding Controller", func() {
384385
Expect(err).NotTo(HaveOccurred())
385386
})
386387

387-
// Only needed for mocking the test
388-
fakeServer.Mux.HandleFunc("GET /flavors/detail", func(w http.ResponseWriter, r *http.Request) {
389-
w.Header().Add("Content-Type", "application/json")
390-
w.WriteHeader(http.StatusOK)
391-
_, err := fmt.Fprint(w, flavorDetailsBody)
392-
Expect(err).NotTo(HaveOccurred())
393-
})
394-
395388
fakeServer.Mux.HandleFunc("GET /images", func(w http.ResponseWriter, r *http.Request) {
396389
w.Header().Add("Content-Type", "application/json")
397390
w.WriteHeader(http.StatusOK)

0 commit comments

Comments
 (0)