@@ -6,10 +6,12 @@ package nodepools
66
77import (
88 "context"
9+ "fmt"
910 "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/oci/nodepools/consts"
1011 "net/http"
1112 "reflect"
1213 "testing"
14+ "time"
1315
1416 apiv1 "k8s.io/api/core/v1"
1517 "k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
@@ -20,6 +22,10 @@ import (
2022 oke "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/oci/vendor-internal/github.com/oracle/oci-go-sdk/v65/containerengine"
2123)
2224
25+ const (
26+ autoDiscoveryCompartment = "ocid1.compartment.oc1.test-region.test"
27+ )
28+
2329func TestNodePoolFromArgs (t * testing.T ) {
2430 value := `1:5:ocid`
2531 nodePool , err := nodePoolFromArg (value )
@@ -321,8 +327,15 @@ func TestBuildGenericLabels(t *testing.T) {
321327
322328type mockOKEClient struct {}
323329
324- func (c mockOKEClient ) GetNodePool (context.Context , oke.GetNodePoolRequest ) (oke.GetNodePoolResponse , error ) {
325- return oke.GetNodePoolResponse {}, nil
330+ func (c mockOKEClient ) GetNodePool (ctx context.Context , req oke.GetNodePoolRequest ) (oke.GetNodePoolResponse , error ) {
331+ return oke.GetNodePoolResponse {
332+ NodePool : oke.NodePool {
333+ Id : req .NodePoolId ,
334+ NodeConfigDetails : & oke.NodePoolNodeConfigDetails {
335+ Size : common .Int (1 ),
336+ },
337+ },
338+ }, nil
326339}
327340func (c mockOKEClient ) UpdateNodePool (context.Context , oke.UpdateNodePoolRequest ) (oke.UpdateNodePoolResponse , error ) {
328341 return oke.UpdateNodePoolResponse {}, nil
@@ -336,7 +349,39 @@ func (c mockOKEClient) DeleteNode(context.Context, oke.DeleteNodeRequest) (oke.D
336349 }, nil
337350}
338351
339- func (c mockOKEClient ) ListNodePools (context.Context , oke.ListNodePoolsRequest ) (oke.ListNodePoolsResponse , error ) {
352+ func (c mockOKEClient ) ListNodePools (ctx context.Context , req oke.ListNodePoolsRequest ) (oke.ListNodePoolsResponse , error ) {
353+ // below test data added for auto-discovery tests
354+ if req .CompartmentId != nil && * req .CompartmentId == autoDiscoveryCompartment {
355+ freeformTags1 := map [string ]string {
356+ "ca-managed" : "true" ,
357+ }
358+ freeformTags2 := map [string ]string {
359+ "ca-managed" : "true" ,
360+ "minSize" : "4" ,
361+ "maxSize" : "10" ,
362+ }
363+ definedTags := map [string ]map [string ]interface {}{
364+ "namespace" : {
365+ "foo" : "bar" ,
366+ },
367+ }
368+ resp := oke.ListNodePoolsResponse {
369+ Items : []oke.NodePoolSummary {
370+ {
371+ Id : common .String ("node-pool-1" ),
372+ FreeformTags : freeformTags1 ,
373+ DefinedTags : definedTags ,
374+ },
375+ {
376+ Id : common .String ("node-pool-2" ),
377+ FreeformTags : freeformTags2 ,
378+ DefinedTags : definedTags ,
379+ },
380+ },
381+ }
382+ return resp , nil
383+ }
384+
340385 return oke.ListNodePoolsResponse {}, nil
341386}
342387
@@ -393,8 +438,41 @@ func TestRemoveInstance(t *testing.T) {
393438 }
394439}
395440
441+ func TestNodeGroupAutoDiscovery (t * testing.T ) {
442+ var nodeGroupArg = fmt .Sprintf ("clusterId:ocid1.cluster.oc1.test-region.test,compartmentId:%s,nodepoolTags:ca-managed=true&namespace.foo=bar,min:1,max:5" , autoDiscoveryCompartment )
443+ nodeGroup , err := nodeGroupFromArg (nodeGroupArg )
444+ if err != nil {
445+ t .Errorf ("Error: #{err}" )
446+ }
447+ nodePoolCache := newNodePoolCache (nil )
448+ nodePoolCache .okeClient = mockOKEClient {}
449+
450+ cloudConfig := & ocicommon.CloudConfig {}
451+ cloudConfig .Global .RefreshInterval = 5 * time .Minute
452+ cloudConfig .Global .CompartmentID = autoDiscoveryCompartment
453+
454+ manager := & ociManagerImpl {
455+ nodePoolCache : nodePoolCache ,
456+ nodeGroups : []nodeGroupAutoDiscovery {* nodeGroup },
457+ okeClient : mockOKEClient {},
458+ cfg : cloudConfig ,
459+ staticNodePools : map [string ]NodePool {},
460+ }
461+ // test data to use as initial nodepools
462+ nodepool2 := & nodePool {
463+ id : "node-pool-2" , minSize : 1 , maxSize : 5 ,
464+ }
465+ manager .staticNodePools [nodepool2 .id ] = nodepool2
466+ nodepool3 := & nodePool {
467+ id : "node-pool-3" , minSize : 2 , maxSize : 5 ,
468+ }
469+ manager .staticNodePools [nodepool3 .id ] = nodepool3
470+
471+ manager .forceRefresh ()
472+ }
473+
396474func TestNodeGroupFromArg (t * testing.T ) {
397- var nodeGroupArg = "clusterId:ocid1.cluster.oc1.test-region.test,compartmentId:ocid1.compartment.oc1.test-region.test ,nodepoolTags:ca-managed=true&namespace.foo=bar,min:1,max:5"
475+ var nodeGroupArg = fmt . Sprintf ( "clusterId:ocid1.cluster.oc1.test-region.test,compartmentId:%s ,nodepoolTags:ca-managed=true&namespace.foo=bar,min:1,max:5" , autoDiscoveryCompartment )
398476 nodeGroupAutoDiscovery , err := nodeGroupFromArg (nodeGroupArg )
399477 if err != nil {
400478 t .Errorf ("Error: #{err}" )
0 commit comments