Skip to content

Commit bbaf826

Browse files
committed
Onboarding: Logic instead of hard-coded value for flavor
The logic is fairly straight forward, find the smallest flavor that hasn't the hypervisor-type fixed. We might want to adjust that eventually to maybe match the hypervisor-type, but in our environment we have a tiny test-flavor that fits that description.
1 parent 54a8707 commit bbaf826

File tree

1 file changed

+65
-55
lines changed

1 file changed

+65
-55
lines changed

internal/controller/onboarding_controller.go

Lines changed: 65 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ const (
6262
testAggregateName = "tenant_filter_tests"
6363
testProjectName = "test"
6464
testDomainName = "cc3test"
65-
testFlavorName = "c_k_c2_m2_v2"
6665
testImageName = "cirros-d240801-kvm"
6766
testPrefixName = "ohooc-"
6867
testVolumeType = "kvm-pilot"
@@ -484,72 +483,22 @@ func (r *OnboardingController) createOrGetTestServer(ctx context.Context, zone,
484483
return foundServer, nil
485484
}
486485

487-
flavorPages, err := flavors.ListDetail(r.testComputeClient, nil).AllPages(ctx)
486+
flavorRef, err := r.findTestFlavor(ctx)
488487
if err != nil {
489488
return nil, err
490489
}
491-
extractedFlavors, err := flavors.ExtractFlavors(flavorPages)
492-
if err != nil {
493-
return nil, err
494-
}
495-
496-
var flavorRef string
497-
for _, flavor := range extractedFlavors {
498-
if flavor.Name == testFlavorName {
499-
flavorRef = flavor.ID
500-
break
501-
}
502-
}
503-
504-
if flavorRef == "" {
505-
return nil, errors.New("couldn't find flavor")
506-
}
507-
508-
var imageRef string
509-
510-
imagePages, err := images.List(r.testImageClient, images.ListOpts{Name: testImageName}).AllPages(ctx)
511-
if err != nil {
512-
return nil, err
513-
}
514-
515-
imagesList, err := images.ExtractImages(imagePages)
516-
if err != nil {
517-
return nil, err
518-
}
519-
520-
for _, image := range imagesList {
521-
if image.Name == testImageName {
522-
imageRef = image.ID
523-
break
524-
}
525-
}
526-
527-
if imageRef == "" {
528-
return nil, errors.New("couldn't find image")
529-
}
530490

531-
falseVal := false
532-
networkPages, err := networks.List(r.testNetworkClient, networks.ListOpts{Shared: &falseVal}).AllPages(ctx)
491+
imageRef, err := r.findTestImage(ctx)
533492
if err != nil {
534493
return nil, fmt.Errorf("could not list networks due to %w", err)
535494
}
536495

537-
extractedNetworks, err := networks.ExtractNetworks(networkPages)
496+
networkRef, err := r.findTestNetwork(ctx)
538497
if err != nil {
539498
return nil, fmt.Errorf("could not extract network due to %w", err)
540499
}
541500

542-
var networkRef string
543-
for _, network := range extractedNetworks {
544-
networkRef = network.ID
545-
break
546-
}
547-
548-
if networkRef == "" {
549-
return nil, errors.New("couldn't find network")
550-
}
551-
552-
log.Info("creating server", "name", serverName)
501+
log.Info("creating server", "name", serverName, "flavor", flavorRef)
553502
server, err := servers.Create(ctx, r.testComputeClient, servers.CreateOpts{
554503
Name: serverName,
555504
AvailabilityZone: fmt.Sprintf("%v:%v", zone, computeHost),
@@ -581,6 +530,67 @@ func (r *OnboardingController) createOrGetTestServer(ctx context.Context, zone,
581530
return server, nil
582531
}
583532

533+
func (r *OnboardingController) findTestNetwork(ctx context.Context) (string, error) {
534+
falseVal := false
535+
networkPages, err := networks.List(r.testNetworkClient, networks.ListOpts{Shared: &falseVal}).AllPages(ctx)
536+
if err != nil {
537+
return "", err
538+
}
539+
540+
extractedNetworks, err := networks.ExtractNetworks(networkPages)
541+
if err != nil {
542+
return "", err
543+
}
544+
545+
for _, network := range extractedNetworks {
546+
return network.ID, nil
547+
}
548+
549+
return "", errors.New("couldn't find network")
550+
}
551+
552+
func (r *OnboardingController) findTestImage(ctx context.Context) (string, error) {
553+
imagePages, err := images.List(r.testImageClient, images.ListOpts{Name: testImageName}).AllPages(ctx)
554+
if err != nil {
555+
return "", err
556+
}
557+
558+
imagesList, err := images.ExtractImages(imagePages)
559+
if err != nil {
560+
return "", err
561+
}
562+
563+
for _, image := range imagesList {
564+
if image.Name == testImageName {
565+
return image.ID, nil
566+
}
567+
}
568+
569+
return "", errors.New("couldn't find image")
570+
}
571+
572+
func (r *OnboardingController) findTestFlavor(ctx context.Context) (string, error) {
573+
flavorPages, err := flavors.ListDetail(r.testComputeClient, flavors.ListOpts{SortDir: "asc", SortKey: "memory_mb"}).AllPages(ctx)
574+
if err != nil {
575+
return "", err
576+
}
577+
578+
extractedFlavors, err := flavors.ExtractFlavors(flavorPages)
579+
if err != nil {
580+
return "", err
581+
}
582+
583+
for _, flavor := range extractedFlavors {
584+
_, found := flavor.ExtraSpecs["capabilities:hypervisor_type"]
585+
if !found {
586+
// Flavor does not restrict the hypervisor-type
587+
return flavor.ID, nil
588+
}
589+
}
590+
591+
return "", errors.New("couldn't find flavor")
592+
}
593+
584594
// SetupWithManager sets up the controller with the Manager.
585595
func (r *OnboardingController) SetupWithManager(mgr ctrl.Manager) error {
586596
ctx := context.Background()

0 commit comments

Comments
 (0)