Skip to content

Commit f4c2fde

Browse files
committed
Add process with apiGroup in capi provider
1 parent 24ba0e7 commit f4c2fde

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

cluster-autoscaler/cloudprovider/clusterapi/clusterapi_controller.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ type machineController struct {
8282
nodeInformer cache.SharedIndexInformer
8383
managementClient dynamic.Interface
8484
managementScaleClient scale.ScalesGetter
85+
managementDiscoveryClient discovery.DiscoveryInterface
8586
machineSetResource schema.GroupVersionResource
8687
machineResource schema.GroupVersionResource
8788
machinePoolResource schema.GroupVersionResource
@@ -457,7 +458,7 @@ func newMachineController(
457458
managementInformerFactory := dynamicinformer.NewFilteredDynamicSharedInformerFactory(managementClient, 0, namespaceToWatch(autoDiscoverySpecs), nil)
458459

459460
CAPIGroup := getCAPIGroup()
460-
CAPIVersion, err := getAPIGroupPreferredVersion(managementDiscoveryClient, CAPIGroup)
461+
CAPIVersion, err := getCAPIGroupPreferredVersion(managementDiscoveryClient, CAPIGroup)
461462
if err != nil {
462463
return nil, fmt.Errorf("could not find preferred version for CAPI group %q: %v", CAPIGroup, err)
463464
}
@@ -561,6 +562,7 @@ func newMachineController(
561562
nodeInformer: nodeInformer,
562563
managementClient: managementClient,
563564
managementScaleClient: managementScaleClient,
565+
managementDiscoveryClient: managementDiscoveryClient,
564566
machineSetResource: gvrMachineSet,
565567
machinePoolResource: gvrMachinePool,
566568
machinePoolsAvailable: machinePoolsAvailable,
@@ -586,11 +588,15 @@ func groupVersionHasResource(client discovery.DiscoveryInterface, groupVersion,
586588
return false, nil
587589
}
588590

589-
func getAPIGroupPreferredVersion(client discovery.DiscoveryInterface, APIGroup string) (string, error) {
591+
func getCAPIGroupPreferredVersion(client discovery.DiscoveryInterface, APIGroup string) (string, error) {
590592
if version := os.Getenv(CAPIVersionEnvVar); version != "" {
591593
return version, nil
592594
}
593595

596+
return getAPIGroupPreferredVersion(client, APIGroup)
597+
}
598+
599+
func getAPIGroupPreferredVersion(client discovery.DiscoveryInterface, APIGroup string) (string, error) {
594600
groupList, err := client.ServerGroups()
595601
if err != nil {
596602
return "", fmt.Errorf("failed to get ServerGroups: %v", err)

cluster-autoscaler/cloudprovider/clusterapi/clusterapi_controller_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"context"
2121
"encoding/json"
2222
"fmt"
23-
"k8s.io/apimachinery/pkg/types"
2423
"math/rand"
2524
"path"
2625
"reflect"
@@ -36,6 +35,7 @@ import (
3635
"k8s.io/apimachinery/pkg/labels"
3736
"k8s.io/apimachinery/pkg/runtime"
3837
"k8s.io/apimachinery/pkg/runtime/schema"
38+
"k8s.io/apimachinery/pkg/types"
3939
"k8s.io/apimachinery/pkg/util/wait"
4040
fakediscovery "k8s.io/client-go/discovery/fake"
4141
"k8s.io/client-go/dynamic"
@@ -416,9 +416,9 @@ func createTestConfigs(specs ...testSpec) []*testConfig {
416416
"template": map[string]interface{}{
417417
"spec": map[string]interface{}{
418418
"infrastructureRef": map[string]interface{}{
419-
"apiVersion": "infrastructure.cluster.x-k8s.io/v1beta1",
420-
"kind": machineTemplateKind,
421-
"name": "TestMachineTemplate",
419+
"apiGroup": "infrastructure.cluster.x-k8s.io",
420+
"kind": machineTemplateKind,
421+
"name": "TestMachineTemplate",
422422
},
423423
},
424424
},
@@ -1595,7 +1595,7 @@ func TestGetAPIGroupPreferredVersion(t *testing.T) {
15951595
for _, tc := range testCases {
15961596
t.Run(tc.description, func(t *testing.T) {
15971597
t.Setenv(CAPIVersionEnvVar, tc.envVar)
1598-
version, err := getAPIGroupPreferredVersion(discoveryClient, tc.APIGroup)
1598+
version, err := getCAPIGroupPreferredVersion(discoveryClient, tc.APIGroup)
15991599
if (err != nil) != tc.error {
16001600
t.Errorf("expected to have error: %t. Had an error: %t", tc.error, err != nil)
16011601
}

cluster-autoscaler/cloudprovider/clusterapi/clusterapi_unstructured.go

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -380,17 +380,33 @@ func (r unstructuredScalableResource) readInfrastructureReferenceResource() (*un
380380
return nil, nil
381381
}
382382

383-
apiversion, ok := infraref["apiVersion"]
384-
if !ok {
385-
return nil, nil
383+
var apiversion string
384+
385+
apiGroup, ok := infraref["apiGroup"]
386+
if ok {
387+
if apiversion, err = getAPIGroupPreferredVersion(r.controller.managementDiscoveryClient, apiGroup); err != nil {
388+
klog.V(4).Infof("Unable to read preferred version from api group %s, error: %v", apiGroup, err)
389+
return nil, err
390+
}
391+
apiversion = fmt.Sprintf("%s/%s", apiGroup, apiversion)
392+
} else {
393+
// Fall back to ObjectReference in capi v1beta1
394+
apiversion, ok = infraref["apiVersion"]
395+
if !ok {
396+
klog.V(4).Info("Missing apiVersion")
397+
return nil, errors.New("Missing apiVersion")
398+
}
386399
}
400+
387401
kind, ok := infraref["kind"]
388402
if !ok {
389-
return nil, nil
403+
klog.V(4).Info("Missing kind")
404+
return nil, errors.New("Missing kind")
390405
}
391406
name, ok := infraref["name"]
392407
if !ok {
393-
return nil, nil
408+
klog.V(4).Info("Missing name")
409+
return nil, errors.New("Missing name")
394410
}
395411
// kind needs to be lower case and plural
396412
kind = fmt.Sprintf("%ss", strings.ToLower(kind))

0 commit comments

Comments
 (0)