fix: parse boolean values

This commit is contained in:
Liran Polak 2018-10-12 23:08:09 +03:00
parent 07376e5105
commit cfa14b687d
1 changed files with 25 additions and 16 deletions

View File

@ -18,6 +18,7 @@ package spotinstmodel
import ( import (
"fmt" "fmt"
"strconv"
"strings" "strings"
"github.com/golang/glog" "github.com/golang/glog"
@ -104,19 +105,19 @@ func (b *ElastigroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
break break
case InstanceGroupLabelUtilizeReservedInstances: case InstanceGroupLabelUtilizeReservedInstances:
if v == "true" { b, err := parseBool(v)
group.UtilizeReservedInstances = fi.Bool(true) if err != nil {
} else if v == "false" { return err
group.UtilizeReservedInstances = fi.Bool(false)
} }
group.UtilizeReservedInstances = b
break break
case InstanceGroupLabelFallbackToOnDemand: case InstanceGroupLabelFallbackToOnDemand:
if v == "true" { b, err := parseBool(v)
group.FallbackToOnDemand = fi.Bool(true) if err != nil {
} else if v == "false" { return err
group.FallbackToOnDemand = fi.Bool(false)
} }
group.FallbackToOnDemand = b
break break
} }
} }
@ -295,19 +296,19 @@ func (b *ElastigroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
for k, v := range ig.ObjectMeta.Labels { for k, v := range ig.ObjectMeta.Labels {
switch k { switch k {
case InstanceGroupLabelAutoScalerDisabled: case InstanceGroupLabelAutoScalerDisabled:
if v == "true" { b, err := parseBool(v)
autoScalerDisabled = true if err != nil {
} else if v == "false" { return err
autoScalerDisabled = false
} }
autoScalerDisabled = fi.BoolValue(b)
break break
case InstanceGroupLabelAutoScalerNodeLabels: case InstanceGroupLabelAutoScalerNodeLabels:
if v == "true" { b, err := parseBool(v)
autoScalerNodeLabels = true if err != nil {
} else if v == "false" { return err
autoScalerNodeLabels = false
} }
autoScalerNodeLabels = fi.BoolValue(b)
break break
} }
} }
@ -336,3 +337,11 @@ func (b *ElastigroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
return nil return nil
} }
func parseBool(str string) (*bool, error) {
b, err := strconv.ParseBool(str)
if err != nil {
return nil, fmt.Errorf("spotinst: unexpected boolean value: %q", str)
}
return fi.Bool(b), nil
}