From 90e56a8e3c5fa97482d0d12906636ab57ee3df32 Mon Sep 17 00:00:00 2001 From: Nikita Bhatia Date: Mon, 22 Aug 2022 17:12:46 +0530 Subject: [PATCH 1/5] PWX-24572 : Set and Get InstanceGroupSize implementation --- oracle/oracle.go | 150 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 143 insertions(+), 7 deletions(-) diff --git a/oracle/oracle.go b/oracle/oracle.go index f8b93ef66..30c66f917 100644 --- a/oracle/oracle.go +++ b/oracle/oracle.go @@ -3,10 +3,12 @@ package oracle import ( "context" "encoding/json" + "errors" "fmt" "io/ioutil" "net/http" "os" + "time" "github.com/libopenstorage/cloudops" "github.com/oracle/oci-go-sdk/v65/common" @@ -35,6 +37,7 @@ const ( MetadataUserDataKey = "user_data" metadataTenancyIDKey = "oke-tenancy-id" metadataPoolIDKey = "oke-pool-id" + metadataClusterIdKey = "oke-cluster-id" envPrefix = "PX_ORACLE" envInstanceID = "INSTANCE_ID" envRegion = "INSTANCE_REGION" @@ -42,6 +45,7 @@ const ( envCompartmentID = "COMPARTMENT_ID" envTenancyID = "TENANCY_ID" envPoolID = "POOL_ID" + envClusterID = "CLUSTER_ID" ) type oracleOps struct { @@ -53,6 +57,7 @@ type oracleOps struct { compartmentID string tenancyID string poolID string + clusterId string storage core.BlockstorageClient compute core.ComputeClient containerEngine containerengine.ContainerEngineClient @@ -91,32 +96,37 @@ func NewClient() (cloudops.Ops, error) { func getInfoFromEnv(oracleOps *oracleOps) error { var err error - oracleOps.instance, err = cloudops.GetEnvValueStrict(envInstanceID) + oracleOps.instance, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envInstanceID) if err != nil { return err } - oracleOps.region, err = cloudops.GetEnvValueStrict(envRegion) + oracleOps.region, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envRegion) if err != nil { return err } - oracleOps.availabilityDomain, err = cloudops.GetEnvValueStrict(envAvailabilityDomain) + oracleOps.availabilityDomain, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envAvailabilityDomain) if err != nil { return err } - oracleOps.compartmentID, err = cloudops.GetEnvValueStrict(envCompartmentID) + oracleOps.compartmentID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envCompartmentID) if err != nil { return err } - oracleOps.tenancyID, err = cloudops.GetEnvValueStrict(envTenancyID) + oracleOps.tenancyID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envTenancyID) if err != nil { return err } - oracleOps.poolID, err = cloudops.GetEnvValueStrict(envPoolID) + oracleOps.poolID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envPoolID) + if err != nil { + return err + } + + oracleOps.clusterId, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envClusterID) if err != nil { return err } @@ -197,7 +207,7 @@ func GetMetadata() (map[string]interface{}, error) { } func getInfoFromMetadata(oracleOps *oracleOps) error { - var tenancyID, poolID string + var tenancyID, poolID, clusterId string var ok bool metadata, err := GetMetadata() if err != nil { @@ -212,6 +222,9 @@ func getInfoFromMetadata(oracleOps *oracleOps) error { if poolID, ok = okeMetadata[metadataPoolIDKey].(string); !ok { return fmt.Errorf("can not get pool ID from oracle metadata service. error: [%v]", err) } + if clusterId, ok = okeMetadata[metadataClusterIdKey].(string); !ok { + return fmt.Errorf("can not get cluster ID from oracle metadata service. error: [%v]", err) + } } } else { return fmt.Errorf("can not get OKE metadata from oracle metadata service. error: [%v]", err) @@ -219,6 +232,7 @@ func getInfoFromMetadata(oracleOps *oracleOps) error { } oracleOps.tenancyID = tenancyID oracleOps.poolID = poolID + oracleOps.clusterId = clusterId if oracleOps.instance, ok = metadata[metadataInstanceIDkey].(string); !ok { return fmt.Errorf("can not get instance id from oracle metadata service. error: [%v]", err) } @@ -444,3 +458,125 @@ func (o *oracleOps) Delete(volumeID string) error { } return nil } + +func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, timeout time.Duration) error { + + ctx := context.Background() + var cancel context.CancelFunc + if timeout > time.Nanosecond { + // If timeout is non-zero then + // add deadline to the operation else + // wait infinitely for operation to complete + ctx, cancel = context.WithTimeout(ctx, timeout) + defer cancel() + } + + instanceGroupSize := int(count) + + //get containerengine client + client, err := containerengine.NewContainerEngineClientWithConfigurationProvider(common.DefaultConfigProvider()) + if err != nil { + return err + } + + //get nodepool by ID to be updated + nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterId} + nodePools, err := client.ListNodePools(context.Background(), nodePoolReq) + if err != nil { + return err + } + + if len(nodePools.Items) == 0 { + return errors.New("No node pool found with name " + instanceGroupID) + } + numberOfDomains := len(nodePools.Items[0].NodeConfigDetails.PlacementConfigs) + totalClusterSize := numberOfDomains * instanceGroupSize + logrus.Println("Setting instanceGroupSize to ", totalClusterSize, " in total ", numberOfDomains, " regions.") + + //get all availabliity domain + nodePoolPlacementConfigDetails := make([]containerengine.NodePoolPlacementConfigDetails, numberOfDomains) + + for i, placementConfigs := range nodePools.Items[0].NodeConfigDetails.PlacementConfigs { + nodePoolPlacementConfigDetails[i].AvailabilityDomain = placementConfigs.AvailabilityDomain + nodePoolPlacementConfigDetails[i].SubnetId = placementConfigs.SubnetId + } + + //update node pools + req := containerengine.UpdateNodePoolRequest{ + NodePoolId: nodePools.Items[0].Id, //get node pool id + UpdateNodePoolDetails: containerengine.UpdateNodePoolDetails{ + NodeConfigDetails: &containerengine.UpdateNodePoolNodeConfigDetails{ + Size: &totalClusterSize, + PlacementConfigs: nodePoolPlacementConfigDetails, + }, + }, + } + + resp, err := client.UpdateNodePool(context.Background(), req) + if err != nil { + return err + } + + err = o.waitNodeStatus(resp.OpcRequestId, resp.OpcWorkRequestId, client) + if err != nil { + return err + } + + return nil +} + +func (o *oracleOps) waitNodeStatus(opcRequestId, opcWorkRequestId *string, client containerengine.ContainerEngineClient) error { + workReq := containerengine.GetWorkRequestRequest{OpcRequestId: opcRequestId, + WorkRequestId: opcWorkRequestId} + + f := func() (interface{}, bool, error) { + workResp, err := client.GetWorkRequest(context.Background(), workReq) + if err != nil { + return nil, true, err + } + + if workResp.Status == containerengine.WorkRequestStatusSucceeded { + return workResp.Status, false, nil + } + + logrus.Debugf("Node status is in [%s] state", workResp.Status) + return nil, true, fmt.Errorf("Node status is still in [%s] state", workResp.Status) + } + _, err := task.DoRetryWithTimeout(f, 5*time.Minute, 10*time.Second) + return err +} + +func (o *oracleOps) GetInstanceGroupSize(instanceGroupID string) (int64, error) { + client, err := containerengine.NewContainerEngineClientWithConfigurationProvider(common.DefaultConfigProvider()) + if err != nil { + return 0, err + } + + var count int64 + + nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterId} + nodePools, err := client.ListNodePools(context.Background(), nodePoolReq) + if err != nil { + return 0, err + } + + req := containerengine.GetNodePoolRequest{NodePoolId: nodePools.Items[0].Id} + + resp, err := client.GetNodePool(context.Background(), req) + + if err != nil { + return 0, err + } + + if len(resp.Nodes) == 0 { + return 0, errors.New("Got empty pool size") + } + + for _, node := range resp.Nodes { + if node.LifecycleState == containerengine.NodeLifecycleStateActive { + count++ + } + } + + return count, nil +} From 3e18f3b1dd42e8c48e0d0907a985af8479c195b6 Mon Sep 17 00:00:00 2001 From: Nikita Bhatia Date: Tue, 23 Aug 2022 13:05:20 +0530 Subject: [PATCH 2/5] PWX-24572: fix golint issues --- oracle/oracle.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/oracle/oracle.go b/oracle/oracle.go index 30c66f917..9a17951e9 100644 --- a/oracle/oracle.go +++ b/oracle/oracle.go @@ -37,7 +37,7 @@ const ( MetadataUserDataKey = "user_data" metadataTenancyIDKey = "oke-tenancy-id" metadataPoolIDKey = "oke-pool-id" - metadataClusterIdKey = "oke-cluster-id" + metadataClusterIDKey = "oke-cluster-id" envPrefix = "PX_ORACLE" envInstanceID = "INSTANCE_ID" envRegion = "INSTANCE_REGION" @@ -57,7 +57,7 @@ type oracleOps struct { compartmentID string tenancyID string poolID string - clusterId string + clusterID string storage core.BlockstorageClient compute core.ComputeClient containerEngine containerengine.ContainerEngineClient @@ -126,7 +126,7 @@ func getInfoFromEnv(oracleOps *oracleOps) error { return err } - oracleOps.clusterId, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envClusterID) + oracleOps.clusterID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envClusterID) if err != nil { return err } @@ -207,7 +207,7 @@ func GetMetadata() (map[string]interface{}, error) { } func getInfoFromMetadata(oracleOps *oracleOps) error { - var tenancyID, poolID, clusterId string + var tenancyID, poolID, clusterID string var ok bool metadata, err := GetMetadata() if err != nil { @@ -222,7 +222,7 @@ func getInfoFromMetadata(oracleOps *oracleOps) error { if poolID, ok = okeMetadata[metadataPoolIDKey].(string); !ok { return fmt.Errorf("can not get pool ID from oracle metadata service. error: [%v]", err) } - if clusterId, ok = okeMetadata[metadataClusterIdKey].(string); !ok { + if clusterID, ok = okeMetadata[metadataClusterIDKey].(string); !ok { return fmt.Errorf("can not get cluster ID from oracle metadata service. error: [%v]", err) } } @@ -232,7 +232,7 @@ func getInfoFromMetadata(oracleOps *oracleOps) error { } oracleOps.tenancyID = tenancyID oracleOps.poolID = poolID - oracleOps.clusterId = clusterId + oracleOps.clusterID = clusterID if oracleOps.instance, ok = metadata[metadataInstanceIDkey].(string); !ok { return fmt.Errorf("can not get instance id from oracle metadata service. error: [%v]", err) } @@ -480,7 +480,7 @@ func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, ti } //get nodepool by ID to be updated - nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterId} + nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterID} nodePools, err := client.ListNodePools(context.Background(), nodePoolReq) if err != nil { return err @@ -525,9 +525,9 @@ func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, ti return nil } -func (o *oracleOps) waitNodeStatus(opcRequestId, opcWorkRequestId *string, client containerengine.ContainerEngineClient) error { - workReq := containerengine.GetWorkRequestRequest{OpcRequestId: opcRequestId, - WorkRequestId: opcWorkRequestId} +func (o *oracleOps) waitNodeStatus(opcRequestID, opcWorkRequestID *string, client containerengine.ContainerEngineClient) error { + workReq := containerengine.GetWorkRequestRequest{OpcRequestId: opcRequestID, + WorkRequestId: opcWorkRequestID} f := func() (interface{}, bool, error) { workResp, err := client.GetWorkRequest(context.Background(), workReq) @@ -554,7 +554,7 @@ func (o *oracleOps) GetInstanceGroupSize(instanceGroupID string) (int64, error) var count int64 - nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterId} + nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterID} nodePools, err := client.ListNodePools(context.Background(), nodePoolReq) if err != nil { return 0, err From 70063bf617e938e19404acb39d3553831179ed89 Mon Sep 17 00:00:00 2001 From: Nikita Bhatia Date: Wed, 24 Aug 2022 13:10:52 +0530 Subject: [PATCH 3/5] PWX-24572 : addressing review comments --- oracle/oracle.go | 38 +++++++++++--------------------------- 1 file changed, 11 insertions(+), 27 deletions(-) diff --git a/oracle/oracle.go b/oracle/oracle.go index 9a17951e9..84b84724e 100644 --- a/oracle/oracle.go +++ b/oracle/oracle.go @@ -461,27 +461,11 @@ func (o *oracleOps) Delete(volumeID string) error { func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, timeout time.Duration) error { - ctx := context.Background() - var cancel context.CancelFunc - if timeout > time.Nanosecond { - // If timeout is non-zero then - // add deadline to the operation else - // wait infinitely for operation to complete - ctx, cancel = context.WithTimeout(ctx, timeout) - defer cancel() - } - instanceGroupSize := int(count) - //get containerengine client - client, err := containerengine.NewContainerEngineClientWithConfigurationProvider(common.DefaultConfigProvider()) - if err != nil { - return err - } - //get nodepool by ID to be updated nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterID} - nodePools, err := client.ListNodePools(context.Background(), nodePoolReq) + nodePools, err := o.containerEngine.ListNodePools(context.Background(), nodePoolReq) if err != nil { return err } @@ -512,12 +496,12 @@ func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, ti }, } - resp, err := client.UpdateNodePool(context.Background(), req) + resp, err := o.containerEngine.UpdateNodePool(context.Background(), req) if err != nil { return err } - err = o.waitNodeStatus(resp.OpcRequestId, resp.OpcWorkRequestId, client) + err = o.waitNodePoolStatus(resp.OpcRequestId, resp.OpcWorkRequestId) if err != nil { return err } @@ -525,12 +509,12 @@ func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, ti return nil } -func (o *oracleOps) waitNodeStatus(opcRequestID, opcWorkRequestID *string, client containerengine.ContainerEngineClient) error { +func (o *oracleOps) waitNodePoolStatus(opcRequestID, opcWorkRequestID *string) error { workReq := containerengine.GetWorkRequestRequest{OpcRequestId: opcRequestID, WorkRequestId: opcWorkRequestID} f := func() (interface{}, bool, error) { - workResp, err := client.GetWorkRequest(context.Background(), workReq) + workResp, err := o.containerEngine.GetWorkRequest(context.Background(), workReq) if err != nil { return nil, true, err } @@ -547,22 +531,22 @@ func (o *oracleOps) waitNodeStatus(opcRequestID, opcWorkRequestID *string, clien } func (o *oracleOps) GetInstanceGroupSize(instanceGroupID string) (int64, error) { - client, err := containerengine.NewContainerEngineClientWithConfigurationProvider(common.DefaultConfigProvider()) - if err != nil { - return 0, err - } var count int64 nodePoolReq := containerengine.ListNodePoolsRequest{CompartmentId: &o.compartmentID, Name: &instanceGroupID, ClusterId: &o.clusterID} - nodePools, err := client.ListNodePools(context.Background(), nodePoolReq) + nodePools, err := o.containerEngine.ListNodePools(context.Background(), nodePoolReq) if err != nil { return 0, err } + if len(nodePools.Items) == 0 { + return 0, nil + } + req := containerengine.GetNodePoolRequest{NodePoolId: nodePools.Items[0].Id} - resp, err := client.GetNodePool(context.Background(), req) + resp, err := o.containerEngine.GetNodePool(context.Background(), req) if err != nil { return 0, err From 78934331b291b9c6b3903c8c19610fd185acc9d4 Mon Sep 17 00:00:00 2001 From: Nikita Bhatia Date: Wed, 24 Aug 2022 17:12:14 +0530 Subject: [PATCH 4/5] PWX-24572 : addressing review comments --- oracle/oracle.go | 34 +++++++++++++++++----------------- oracle/oracle_test.go | 4 ++-- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/oracle/oracle.go b/oracle/oracle.go index 84b84724e..6353cf2ea 100644 --- a/oracle/oracle.go +++ b/oracle/oracle.go @@ -96,37 +96,37 @@ func NewClient() (cloudops.Ops, error) { func getInfoFromEnv(oracleOps *oracleOps) error { var err error - oracleOps.instance, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envInstanceID) + oracleOps.instance, err = cloudops.GetEnvValueStrict(envInstanceID) if err != nil { return err } - oracleOps.region, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envRegion) + oracleOps.region, err = cloudops.GetEnvValueStrict(envRegion) if err != nil { return err } - oracleOps.availabilityDomain, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envAvailabilityDomain) + oracleOps.availabilityDomain, err = cloudops.GetEnvValueStrict(envAvailabilityDomain) if err != nil { return err } - oracleOps.compartmentID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envCompartmentID) + oracleOps.compartmentID, err = cloudops.GetEnvValueStrict(envCompartmentID) if err != nil { return err } - oracleOps.tenancyID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envTenancyID) + oracleOps.tenancyID, err = cloudops.GetEnvValueStrict(envTenancyID) if err != nil { return err } - oracleOps.poolID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envPoolID) + oracleOps.poolID, err = cloudops.GetEnvValueStrict(envPoolID) if err != nil { return err } - oracleOps.clusterID, err = cloudops.GetEnvValueStrict(envPrefix + "_" + envClusterID) + oracleOps.clusterID, err = cloudops.GetEnvValueStrict(envClusterID) if err != nil { return err } @@ -461,6 +461,10 @@ func (o *oracleOps) Delete(volumeID string) error { func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, timeout time.Duration) error { + if timeout == 0*time.Second { + timeout = 5 * time.Minute + } + instanceGroupSize := int(count) //get nodepool by ID to be updated @@ -501,7 +505,7 @@ func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, ti return err } - err = o.waitNodePoolStatus(resp.OpcRequestId, resp.OpcWorkRequestId) + err = o.waitTillWorkStatusIsSucceeded(resp.OpcRequestId, resp.OpcWorkRequestId, timeout) if err != nil { return err } @@ -509,7 +513,7 @@ func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, ti return nil } -func (o *oracleOps) waitNodePoolStatus(opcRequestID, opcWorkRequestID *string) error { +func (o *oracleOps) waitTillWorkStatusIsSucceeded(opcRequestID, opcWorkRequestID *string, timeout time.Duration) error { workReq := containerengine.GetWorkRequestRequest{OpcRequestId: opcRequestID, WorkRequestId: opcWorkRequestID} @@ -523,10 +527,10 @@ func (o *oracleOps) waitNodePoolStatus(opcRequestID, opcWorkRequestID *string) e return workResp.Status, false, nil } - logrus.Debugf("Node status is in [%s] state", workResp.Status) - return nil, true, fmt.Errorf("Node status is still in [%s] state", workResp.Status) + logrus.Debugf("Work status is in [%s] state", workResp.Status) + return nil, true, fmt.Errorf("Work status is in [%s] state", workResp.Status) } - _, err := task.DoRetryWithTimeout(f, 5*time.Minute, 10*time.Second) + _, err := task.DoRetryWithTimeout(f, timeout, 10*time.Second) return err } @@ -541,7 +545,7 @@ func (o *oracleOps) GetInstanceGroupSize(instanceGroupID string) (int64, error) } if len(nodePools.Items) == 0 { - return 0, nil + return 0, errors.New("No node pool found with name " + instanceGroupID) } req := containerengine.GetNodePoolRequest{NodePoolId: nodePools.Items[0].Id} @@ -552,10 +556,6 @@ func (o *oracleOps) GetInstanceGroupSize(instanceGroupID string) (int64, error) return 0, err } - if len(resp.Nodes) == 0 { - return 0, errors.New("Got empty pool size") - } - for _, node := range resp.Nodes { if node.LifecycleState == containerengine.NodeLifecycleStateActive { count++ diff --git a/oracle/oracle_test.go b/oracle/oracle_test.go index 31d731815..3a8b1ff67 100644 --- a/oracle/oracle_test.go +++ b/oracle/oracle_test.go @@ -29,8 +29,8 @@ func TestAll(t *testing.T) { t.Skipf("skipping Oracle tests as environment is not set...\n") } - compartmentID, _ := cloudops.GetEnvValueStrict(fmt.Sprintf("%s_%s", envPrefix, envCompartmentID)) - availabilityDomain, _ := cloudops.GetEnvValueStrict(fmt.Sprintf("%s_%s", envPrefix, envAvailabilityDomain)) + compartmentID, _ := cloudops.GetEnvValueStrict(fmt.Sprintf("%s", envCompartmentID)) + availabilityDomain, _ := cloudops.GetEnvValueStrict(fmt.Sprintf("%s", envAvailabilityDomain)) oracleVol := core.Volume{ SizeInGBs: common.Int64(newDiskSizeInGB), CompartmentId: common.String(compartmentID), From 64e81089e0084503ac5c3dd8f473dcf069a286f1 Mon Sep 17 00:00:00 2001 From: Nikita Bhatia Date: Thu, 25 Aug 2022 10:20:58 +0530 Subject: [PATCH 5/5] go fmt file --- oracle/oracle.go | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/oracle/oracle.go b/oracle/oracle.go index 74df856cc..c25227ff1 100644 --- a/oracle/oracle.go +++ b/oracle/oracle.go @@ -8,10 +8,9 @@ import ( "io/ioutil" "net/http" "os" - "time" "strings" "sync" - + "time" "github.com/libopenstorage/cloudops" "github.com/oracle/oci-go-sdk/v65/common" @@ -49,24 +48,25 @@ const ( envTenancyID = "TENANCY_ID" envPoolID = "POOL_ID" envClusterID = "CLUSTER_ID" + defaultTimeout = 5 * time.Minute ) type oracleOps struct { cloudops.Compute cloudops.Storage - instance string - region string - availabilityDomain string - compartmentID string - tenancyID string - poolID string - clusterID string - volumeAttachmentMapping map[string]*string - storage core.BlockstorageClient - compute core.ComputeClient - containerEngine containerengine.ContainerEngineClient - mutex sync.Mutex - + instance string + region string + availabilityDomain string + compartmentID string + tenancyID string + poolID string + clusterID string + volumeAttachmentMapping map[string]*string + storage core.BlockstorageClient + compute core.ComputeClient + containerEngine containerengine.ContainerEngineClient + mutex sync.Mutex +} // NewClient creates a new cloud operations client for Oracle cloud func NewClient() (cloudops.Ops, error) { @@ -472,11 +472,10 @@ func (o *oracleOps) Delete(volumeID string) error { return nil } - func (o *oracleOps) SetInstanceGroupSize(instanceGroupID string, count int64, timeout time.Duration) error { if timeout == 0*time.Second { - timeout = 5 * time.Minute + timeout = defaultTimeout } instanceGroupSize := int(count) @@ -575,8 +574,8 @@ func (o *oracleOps) GetInstanceGroupSize(instanceGroupID string) (int64, error) count++ } } - return count, nil +} // Attach volumeID, accepts attachOptions as opaque data // Return attach path.