@@ -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 )
@@ -318,8 +324,15 @@ func TestBuildGenericLabels(t *testing.T) {
318324
319325type mockOKEClient struct {}
320326
321- func (c mockOKEClient ) GetNodePool (context.Context , oke.GetNodePoolRequest ) (oke.GetNodePoolResponse , error ) {
322- return oke.GetNodePoolResponse {}, nil
327+ func (c mockOKEClient ) GetNodePool (ctx context.Context , req oke.GetNodePoolRequest ) (oke.GetNodePoolResponse , error ) {
328+ return oke.GetNodePoolResponse {
329+ NodePool : oke.NodePool {
330+ Id : req .NodePoolId ,
331+ NodeConfigDetails : & oke.NodePoolNodeConfigDetails {
332+ Size : common .Int (1 ),
333+ },
334+ },
335+ }, nil
323336}
324337func (c mockOKEClient ) UpdateNodePool (context.Context , oke.UpdateNodePoolRequest ) (oke.UpdateNodePoolResponse , error ) {
325338 return oke.UpdateNodePoolResponse {}, nil
@@ -333,7 +346,39 @@ func (c mockOKEClient) DeleteNode(context.Context, oke.DeleteNodeRequest) (oke.D
333346 }, nil
334347}
335348
336- func (c mockOKEClient ) ListNodePools (context.Context , oke.ListNodePoolsRequest ) (oke.ListNodePoolsResponse , error ) {
349+ func (c mockOKEClient ) ListNodePools (ctx context.Context , req oke.ListNodePoolsRequest ) (oke.ListNodePoolsResponse , error ) {
350+ // below test data added for auto-discovery tests
351+ if req .CompartmentId != nil && * req .CompartmentId == autoDiscoveryCompartment {
352+ freeformTags1 := map [string ]string {
353+ "ca-managed" : "true" ,
354+ }
355+ freeformTags2 := map [string ]string {
356+ "ca-managed" : "true" ,
357+ "minSize" : "4" ,
358+ "maxSize" : "10" ,
359+ }
360+ definedTags := map [string ]map [string ]interface {}{
361+ "namespace" : {
362+ "foo" : "bar" ,
363+ },
364+ }
365+ resp := oke.ListNodePoolsResponse {
366+ Items : []oke.NodePoolSummary {
367+ {
368+ Id : common .String ("node-pool-1" ),
369+ FreeformTags : freeformTags1 ,
370+ DefinedTags : definedTags ,
371+ },
372+ {
373+ Id : common .String ("node-pool-2" ),
374+ FreeformTags : freeformTags2 ,
375+ DefinedTags : definedTags ,
376+ },
377+ },
378+ }
379+ return resp , nil
380+ }
381+
337382 return oke.ListNodePoolsResponse {}, nil
338383}
339384
@@ -390,8 +435,41 @@ func TestRemoveInstance(t *testing.T) {
390435 }
391436}
392437
438+ func TestNodeGroupAutoDiscovery (t * testing.T ) {
439+ 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 )
440+ nodeGroup , err := nodeGroupFromArg (nodeGroupArg )
441+ if err != nil {
442+ t .Errorf ("Error: #{err}" )
443+ }
444+ nodePoolCache := newNodePoolCache (nil )
445+ nodePoolCache .okeClient = mockOKEClient {}
446+
447+ cloudConfig := & ocicommon.CloudConfig {}
448+ cloudConfig .Global .RefreshInterval = 5 * time .Minute
449+ cloudConfig .Global .CompartmentID = autoDiscoveryCompartment
450+
451+ manager := & ociManagerImpl {
452+ nodePoolCache : nodePoolCache ,
453+ nodeGroups : []nodeGroupAutoDiscovery {* nodeGroup },
454+ okeClient : mockOKEClient {},
455+ cfg : cloudConfig ,
456+ staticNodePools : map [string ]NodePool {},
457+ }
458+ // test data to use as initial nodepools
459+ nodepool2 := & nodePool {
460+ id : "node-pool-2" , minSize : 1 , maxSize : 5 ,
461+ }
462+ manager .staticNodePools [nodepool2 .id ] = nodepool2
463+ nodepool3 := & nodePool {
464+ id : "node-pool-3" , minSize : 2 , maxSize : 5 ,
465+ }
466+ manager .staticNodePools [nodepool3 .id ] = nodepool3
467+
468+ manager .forceRefresh ()
469+ }
470+
393471func TestNodeGroupFromArg (t * testing.T ) {
394- 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"
472+ 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 )
395473 nodeGroupAutoDiscovery , err := nodeGroupFromArg (nodeGroupArg )
396474 if err != nil {
397475 t .Errorf ("Error: #{err}" )
0 commit comments