Skip to content

Commit

Permalink
[CLOUDGA-19819] Set correct memory size in edit flow (#220)
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-yb authored Mar 8, 2024
1 parent 65e8eb5 commit 79a48b2
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 34 deletions.
60 changes: 30 additions & 30 deletions cmd/cluster/update_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,27 +65,27 @@ var updateClusterCmd = &cobra.Command{

regionInfoMapList := []map[string]string{}
changedRegionInfo := cmd.Flags().Changed("region-info")
changedNodeInfo := cmd.Flags().Changed("node-config")

defaultNumCores := 0
defaultDiskSizeGb := 0
defaultDiskIops := 0
if changedNodeInfo {
nodeConfig, _ := cmd.Flags().GetStringToInt("node-config")
numCores, ok := nodeConfig["num-cores"]
if !asymmetricGeoEnabled && !ok {
logrus.Fatalln("Number of cores not specified in node config")
}
if asymmetricGeoEnabled && ok {
defaultNumCores = numCores
}
if diskSizeGb, ok := nodeConfig["disk-size-gb"]; ok {
defaultDiskSizeGb = diskSizeGb
}
if diskIops, ok := nodeConfig["disk-iops"]; ok {
defaultDiskIops = diskIops
}
}
changedNodeInfo := cmd.Flags().Changed("node-config")

defaultNumCores := 0
defaultDiskSizeGb := 0
defaultDiskIops := 0
if changedNodeInfo {
nodeConfig, _ := cmd.Flags().GetStringToInt("node-config")
numCores, ok := nodeConfig["num-cores"]
if !asymmetricGeoEnabled && !ok {
logrus.Fatalln("Number of cores not specified in node config")
}
if asymmetricGeoEnabled && ok {
defaultNumCores = numCores
}
if diskSizeGb, ok := nodeConfig["disk-size-gb"]; ok {
defaultDiskSizeGb = diskSizeGb
}
if diskIops, ok := nodeConfig["disk-iops"]; ok {
defaultDiskIops = diskIops
}
}

if changedRegionInfo {
regionInfoList, _ := cmd.Flags().GetStringArray("region-info")
Expand Down Expand Up @@ -133,20 +133,20 @@ var updateClusterCmd = &cobra.Command{
logrus.Fatalln("Number of nodes not specified in region info")
}
if _, ok := regionInfoMap["num-cores"]; asymmetricGeoEnabled && !ok && defaultNumCores > 0 {
regionInfoMap["num-cores"] = strconv.Itoa(defaultNumCores)
}
if _, ok := regionInfoMap["disk-size-gb"]; asymmetricGeoEnabled && !ok && defaultDiskSizeGb > 0 {
regionInfoMap["disk-size-gb"] = strconv.Itoa(defaultDiskSizeGb)
}
if _, ok := regionInfoMap["disk-iops"]; asymmetricGeoEnabled && !ok && defaultDiskIops > 0 {
regionInfoMap["disk-iops"] = strconv.Itoa(defaultDiskIops)
}
regionInfoMap["num-cores"] = strconv.Itoa(defaultNumCores)
}
if _, ok := regionInfoMap["disk-size-gb"]; asymmetricGeoEnabled && !ok && defaultDiskSizeGb > 0 {
regionInfoMap["disk-size-gb"] = strconv.Itoa(defaultDiskSizeGb)
}
if _, ok := regionInfoMap["disk-iops"]; asymmetricGeoEnabled && !ok && defaultDiskIops > 0 {
regionInfoMap["disk-iops"] = strconv.Itoa(defaultDiskIops)
}

regionInfoMapList = append(regionInfoMapList, regionInfoMap)
}
}

clusterSpec, err := authApi.CreateClusterSpec(cmd, regionInfoMapList)
clusterSpec, err := authApi.EditClusterSpec(cmd, regionInfoMapList, clusterID)
if err != nil {
logrus.Fatalf("Error while creating cluster spec: %v", err)
}
Expand Down
36 changes: 32 additions & 4 deletions internal/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ func (a *AuthApiClient) GetProjectID(projectID string) (string, error) {
return projectData[0].Info.Id, nil
}

func (a *AuthApiClient) CreateClusterSpec(cmd *cobra.Command, regionInfoList []map[string]string) (*ybmclient.ClusterSpec, error) {
func (a *AuthApiClient) buildClusterSpec(cmd *cobra.Command, regionInfoList []map[string]string, regionNodeConfigsMap map[string][]ybmclient.NodeConfigurationResponseItem) (*ybmclient.ClusterSpec, error) {

var diskSizeGb int32
var diskIops int32
Expand Down Expand Up @@ -317,8 +317,12 @@ func (a *AuthApiClient) CreateClusterSpec(cmd *cobra.Command, regionInfoList []m
for k, _ := range regionNodeInfoMap {
regions = append(regions, k)
}
// Grab available node configurations by region.
regionNodeConfigsMap := a.GetSupportedNodeConfigurationsV2(cloud, tier, regions, geoPartitioned)

if regionNodeConfigsMap == nil {
// Grab available node configurations by region.
regionNodeConfigsMap = a.GetSupportedNodeConfigurationsV2(cloud, tier, regions, geoPartitioned)
}

// Create slice of region keys of node configurations response.
nodeConfigurationsRegions := make([]string, 0, len(regionNodeConfigsMap))
for k, _ := range regionNodeConfigsMap {
Expand Down Expand Up @@ -448,6 +452,20 @@ func (a *AuthApiClient) CreateClusterSpec(cmd *cobra.Command, regionInfoList []m
return clusterSpec, nil
}

func (a *AuthApiClient) CreateClusterSpec(cmd *cobra.Command, regionInfoList []map[string]string) (*ybmclient.ClusterSpec, error) {
return a.buildClusterSpec(cmd, regionInfoList, nil)
}

func (a *AuthApiClient) EditClusterSpec(cmd *cobra.Command, regionInfoList []map[string]string, clusterID string) (*ybmclient.ClusterSpec, error) {
regions := make([]string, 0, len(regionInfoList))
for _, regionInfo := range regionInfoList {
region := regionInfo["region"]
regions = append(regions, region)
}
regionNodeConfigsMap := a.GetSupportedNodeConfigurationsForEdit(clusterID, regions)
return a.buildClusterSpec(cmd, regionInfoList, regionNodeConfigsMap)
}

func ToClusterNodeInfo(opt *ybmclient.OptionalClusterNodeInfo) ybmclient.ClusterNodeInfo {
clusterNodeInfo := *ybmclient.NewClusterNodeInfoWithDefaults()
clusterNodeInfo.SetNumCores(opt.GetNumCores())
Expand Down Expand Up @@ -933,6 +951,16 @@ func (a *AuthApiClient) GetSupportedNodeConfigurationsV2(cloud string, tier stri
return instanceResp.GetData()
}

func (a *AuthApiClient) GetSupportedNodeConfigurationsForEdit(clusterId string, regions []string) map[string][]ybmclient.NodeConfigurationResponseItem {
instanceResp, resp, err := a.ApiClient.ClusterApi.GetSupportedNodeConfigurationsForClusterEdit(a.ctx, a.AccountID, a.ProjectID, clusterId).Regions(regions).PerRegion(true).ShowDisabled(false).ClusterType("PRIMARY").Execute()
if err != nil {
b, _ := httputil.DumpResponse(resp, true)
logrus.Debug(b)
logrus.Fatalln(err)
}
return instanceResp.GetData()
}

func (a *AuthApiClient) GetFromInstanceType(resource string, cloud string, tier string, region string, numCores int32) (int32, error) {
instanceResp, resp, err := a.GetSupportedNodeConfigurations(cloud, tier, region).Execute()
if err != nil {
Expand Down Expand Up @@ -1462,7 +1490,7 @@ func (a *AuthApiClient) ListMetricsExporterConfigs() ybmclient.ApiListMetricsExp
}

func (a *AuthApiClient) ListDbAuditLogsExportConfigs(clusterId string) ybmclient.ApiListDbAuditExporterConfigRequest {
return a.ApiClient.ClusterApi.ListDbAuditExporterConfig(a.ctx, a.AccountID, a.ProjectID, clusterId)
return a.ApiClient.ClusterApi.ListDbAuditExporterConfig(a.ctx, a.AccountID, a.ProjectID, clusterId)
}

func (a *AuthApiClient) DeleteMetricsExporterConfig(configId string) ybmclient.ApiDeleteMetricsExporterConfigRequest {
Expand Down

0 comments on commit 79a48b2

Please sign in to comment.