diff --git a/controllers/account/controllers/account_controller.go b/controllers/account/controllers/account_controller.go index 255111616..03f881d8b 100644 --- a/controllers/account/controllers/account_controller.go +++ b/controllers/account/controllers/account_controller.go @@ -19,6 +19,7 @@ package controllers import ( "context" "fmt" + "math" "os" "strconv" "strings" @@ -473,7 +474,7 @@ func giveGift(amount int64, configMap *corev1.ConfigMap) (int64, error) { stepsStr := strings.Split(configMap.Data["steps"], ",") ratiosStr := strings.Split(configMap.Data["ratios"], ",") - var ratio int64 + var ratio float64 for i, stepStr := range stepsStr { step, err := strconv.ParseInt(stepStr, 10, 64) @@ -481,7 +482,7 @@ func giveGift(amount int64, configMap *corev1.ConfigMap) (int64, error) { return amount, fmt.Errorf("steps format error :%s", err) } if amount >= step*BaseUnit { - ratio, err = strconv.ParseInt(ratiosStr[i], 10, 64) + ratio, err = strconv.ParseFloat(ratiosStr[i], 32) if err != nil { return amount, fmt.Errorf("ratios format error :%s", err) } @@ -489,5 +490,5 @@ func giveGift(amount int64, configMap *corev1.ConfigMap) (int64, error) { break } } - return amount*ratio/100 + amount, nil + return int64(math.Ceil(float64(amount)*ratio/100)) + amount, nil } diff --git a/controllers/account/controllers/account_controller_test.go b/controllers/account/controllers/account_controller_test.go index f4b5e2e5c..8803a1d22 100644 --- a/controllers/account/controllers/account_controller_test.go +++ b/controllers/account/controllers/account_controller_test.go @@ -51,7 +51,7 @@ func Test_giveGift(t *testing.T) { configMap := &corev1.ConfigMap{} configMap.Data = make(map[string]string) configMap.Data["steps"] = "299,599,1999,4999,19999" - configMap.Data["ratios"] = "10,15,20,25,30" + configMap.Data["ratios"] = "10.0,15.0,20.0,25.0,30.0" for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/controllers/pkg/resources/resources.go b/controllers/pkg/resources/resources.go index 96f3dbd87..3d052ee37 100644 --- a/controllers/pkg/resources/resources.go +++ b/controllers/pkg/resources/resources.go @@ -229,24 +229,27 @@ const ( var DefaultPropertyTypeList = []PropertyType{ { - Name: "cpu", - Enum: 0, - PriceType: AVG, - UnitPrice: 67, + Name: "cpu", + Enum: 0, + PriceType: AVG, + // raw price: 67 + UnitPrice: 20, UnitString: "1m", }, { - Name: "memory", - Enum: 1, - PriceType: AVG, - UnitPrice: 33, + Name: "memory", + Enum: 1, + PriceType: AVG, + // raw price: 33 + UnitPrice: 10, UnitString: "1Mi", }, { - Name: "storage", - Enum: 2, - PriceType: AVG, - UnitPrice: 2, + Name: "storage", + Enum: 2, + PriceType: AVG, + // raw price: 21 + UnitPrice: 1, UnitString: "1Mi", }, { diff --git a/scripts/cloud/install.sh b/scripts/cloud/install.sh index 8796569d6..c0f30aca0 100644 --- a/scripts/cloud/install.sh +++ b/scripts/cloud/install.sh @@ -271,14 +271,16 @@ collect_input() { done fi if [[ $single != "y" ]]; then - while :; do - read -p "$(get_prompt "input_node_ips")" node_ips - if validate_ips "$node_ips"; then - break - else - get_prompt "invalid_ips" - fi - done + if [[ -z "$node_ips" ]]; then + while :; do + read -p "$(get_prompt "input_node_ips")" node_ips + if validate_ips "$node_ips"; then + break + else + get_prompt "invalid_ips" + fi + done + fi read -p "$(get_prompt "ssh_private_key")" ssh_private_key if [[ -z "$ssh_private_key" ]]; then