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 (
"fmt"
"strconv"
"strings"
"github.com/golang/glog"
@ -104,19 +105,19 @@ func (b *ElastigroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
break
case InstanceGroupLabelUtilizeReservedInstances:
if v == "true" {
group.UtilizeReservedInstances = fi.Bool(true)
} else if v == "false" {
group.UtilizeReservedInstances = fi.Bool(false)
b, err := parseBool(v)
if err != nil {
return err
}
group.UtilizeReservedInstances = b
break
case InstanceGroupLabelFallbackToOnDemand:
if v == "true" {
group.FallbackToOnDemand = fi.Bool(true)
} else if v == "false" {
group.FallbackToOnDemand = fi.Bool(false)
b, err := parseBool(v)
if err != nil {
return err
}
group.FallbackToOnDemand = b
break
}
}
@ -295,19 +296,19 @@ func (b *ElastigroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
for k, v := range ig.ObjectMeta.Labels {
switch k {
case InstanceGroupLabelAutoScalerDisabled:
if v == "true" {
autoScalerDisabled = true
} else if v == "false" {
autoScalerDisabled = false
b, err := parseBool(v)
if err != nil {
return err
}
autoScalerDisabled = fi.BoolValue(b)
break
case InstanceGroupLabelAutoScalerNodeLabels:
if v == "true" {
autoScalerNodeLabels = true
} else if v == "false" {
autoScalerNodeLabels = false
b, err := parseBool(v)
if err != nil {
return err
}
autoScalerNodeLabels = fi.BoolValue(b)
break
}
}
@ -336,3 +337,11 @@ func (b *ElastigroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
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
}