don't use net.IPMask
net.IPMask doesn't have any advantages, as it would marshalled to mask: - 1 - 2 - 3 - 4 Signed-off-by: Christian Goll <cgoll@suse.com>
This commit is contained in:
committed by
Jonathon Anderson
parent
9fdb9ca792
commit
c08cd82e68
@@ -63,7 +63,7 @@ type IpmiConf struct {
|
||||
Password string `yaml:"password,omitempty" lopt:"ipmipass" comment:"Set the IPMI password"`
|
||||
Ipaddr net.IP `yaml:"ipaddr,omitempty" lopt:"ipmiaddr" comment:"Set the IPMI IP address" type:"IP"`
|
||||
Gateway net.IP `yaml:"gateway,omitempty" lopt:"ipmigateway" comment:"Set the IPMI gateway" type:"IP"`
|
||||
Netmask net.IPMask `yaml:"netmask,omitempty" lopt:"ipminetmask" comment:"Set the IPMI netmask" type:"IP"`
|
||||
Netmask net.IP `yaml:"netmask,omitempty" lopt:"ipminetmask" comment:"Set the IPMI netmask" type:"IP"`
|
||||
Port string `yaml:"port,omitempty" lopt:"ipmiport" comment:"Set the IPMI port"`
|
||||
Interface string `yaml:"interface,omitempty" lopt:"ipmiinterface" comment:"Set the node's IPMI interface (defaults: 'lan')"`
|
||||
EscapeChar string `yaml:"escapechar,omitempty" lopt:"ipmiescapechar" comment:"Set the IPMI escape character (defaults: '~')"`
|
||||
@@ -85,7 +85,7 @@ type NetDevs struct {
|
||||
Ipaddr net.IP `yaml:"ipaddr,omitempty" comment:"IPv4 address in given network" sopt:"I" lopt:"ipaddr" type:"IP"`
|
||||
Ipaddr6 net.IP `yaml:"ip6addr,omitempty" lopt:"ipaddr6" comment:"IPv6 address" type:"IP"`
|
||||
Prefix net.IP `yaml:"prefix,omitempty"`
|
||||
Netmask net.IPMask `yaml:"netmask,omitempty" lopt:"netmask" sopt:"M" comment:"Set the networks netmask" type:"IP"`
|
||||
Netmask net.IP `yaml:"netmask,omitempty" lopt:"netmask" sopt:"M" comment:"Set the networks netmask" type:"IP"`
|
||||
Gateway net.IP `yaml:"gateway,omitempty" lopt:"gateway" sopt:"G" comment:"Set the node's network device gateway" type:"IP"`
|
||||
MTU string `yaml:"mtu,omitempty" lopt:"mtu" comment:"Set the mtu" type:"uint"`
|
||||
primary bool `yaml:"primary,omitempty"`
|
||||
|
||||
@@ -157,20 +157,6 @@ func createFlags(baseCmd *cobra.Command,
|
||||
net.IP{}, // empty default!
|
||||
myType.Tag.Get("comment"))
|
||||
}
|
||||
} else if myType.Type == reflect.TypeOf(net.IPMask{}) {
|
||||
ptr := myVal.Addr().Interface().(*net.IPMask)
|
||||
if myType.Tag.Get("sopt") != "" {
|
||||
baseCmd.PersistentFlags().IPMaskVarP(ptr,
|
||||
myType.Tag.Get("lopt"),
|
||||
myType.Tag.Get("sopt"),
|
||||
net.IPMask{}, // empty default!
|
||||
myType.Tag.Get("comment"))
|
||||
} else {
|
||||
baseCmd.PersistentFlags().IPMaskVar(ptr,
|
||||
myType.Tag.Get("lopt"),
|
||||
net.IPMask{}, // empty default!
|
||||
myType.Tag.Get("comment"))
|
||||
}
|
||||
} else if myType.Type == reflect.TypeOf(wwbool) {
|
||||
ptr := myVal.Addr().Interface().(*wwtype.WWbool)
|
||||
if myType.Tag.Get("sopt") != "" {
|
||||
|
||||
@@ -96,7 +96,15 @@ func (fieldMap fieldMap) recursiveFields(obj interface{}, prefix string, source
|
||||
case reflect.Map:
|
||||
mapIter := valObj.Elem().Field(i).MapRange()
|
||||
for mapIter.Next() {
|
||||
fieldMap.recursiveFields(mapIter.Value().Interface(), prefix+typeObj.Elem().Field(i).Name+"["+mapIter.Key().String()+"].", source)
|
||||
if mapIter.Value().Kind() == reflect.String {
|
||||
fieldMap[prefix+typeObj.Elem().Field(i).Name+"["+mapIter.Key().String()+"]"] = &NodeFields{
|
||||
Field: prefix + typeObj.Elem().Field(i).Name + "[" + mapIter.Key().String() + "]",
|
||||
Source: source,
|
||||
Value: mapIter.Value().String(),
|
||||
}
|
||||
} else {
|
||||
fieldMap.recursiveFields(mapIter.Value().Interface(), prefix+typeObj.Elem().Field(i).Name+"["+mapIter.Key().String()+"].", source)
|
||||
}
|
||||
}
|
||||
if valObj.Elem().Field(i).Len() == 0 {
|
||||
fieldMap[prefix+typeObj.Elem().Field(i).Name] = &NodeFields{
|
||||
@@ -120,9 +128,22 @@ func (fieldMap fieldMap) recursiveFields(obj interface{}, prefix string, source
|
||||
switch typeObj.Elem().Field(i).Type {
|
||||
case reflect.TypeOf([]string{}):
|
||||
vals := (valObj.Elem().Field(i).Interface()).([]string)
|
||||
src_str := source
|
||||
if oldVal, ok := fieldMap[prefix+typeObj.Elem().Field(i).Name]; ok {
|
||||
if oldVal.Value != "" {
|
||||
if len(vals) > 0 {
|
||||
src_str = oldVal.Source + "+"
|
||||
} else {
|
||||
src_str = oldVal.Source
|
||||
}
|
||||
vals = append(vals, oldVal.Value)
|
||||
} else {
|
||||
src_str = oldVal.Source
|
||||
}
|
||||
}
|
||||
fieldMap[prefix+typeObj.Elem().Field(i).Name] = &NodeFields{
|
||||
Field: prefix + typeObj.Elem().Field(i).Name,
|
||||
Source: source,
|
||||
Source: src_str,
|
||||
Value: strings.Join(vals, ","),
|
||||
}
|
||||
case reflect.TypeOf(net.IP{}):
|
||||
@@ -130,11 +151,6 @@ func (fieldMap fieldMap) recursiveFields(obj interface{}, prefix string, source
|
||||
if val != nil {
|
||||
fieldMap[prefix+typeObj.Elem().Field(i).Name].Set(source, val.String())
|
||||
}
|
||||
case reflect.TypeOf(net.IPMask{}):
|
||||
val := (valObj.Elem().Field(i).Interface()).(net.IPMask)
|
||||
if val != nil {
|
||||
fieldMap[prefix+typeObj.Elem().Field(i).Name].Set(source, val.String())
|
||||
}
|
||||
case reflect.TypeOf(true):
|
||||
val := (valObj.Elem().Field(i).Interface()).(bool)
|
||||
if val {
|
||||
@@ -144,9 +160,7 @@ func (fieldMap fieldMap) recursiveFields(obj interface{}, prefix string, source
|
||||
fieldMap[prefix+typeObj.Elem().Field(i).Name].Set(source, valObj.Elem().Field(i).String())
|
||||
}
|
||||
|
||||
} /*else if typeObj.Elem().Field(i).Type.Kind() == reflect.Ptr {
|
||||
fieldMap.recursiveFields(valObj.Elem().Field(i).Interface(), emptyFields, prefix+typeObj.Elem().Field(i).Name+".", source)
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,6 @@ func recursiveFlatten(obj interface{}) (hasContent bool) {
|
||||
for mapIter.Next() {
|
||||
if mapIter.Value().Kind() == reflect.String {
|
||||
if mapIter.Value().String() != "" {
|
||||
// fmt.Println("map")
|
||||
hasContent = true
|
||||
}
|
||||
} else {
|
||||
@@ -203,12 +202,6 @@ func recursiveFlatten(obj interface{}) (hasContent bool) {
|
||||
if len(val) != 0 && !val.IsUnspecified() {
|
||||
hasContent = true
|
||||
}
|
||||
case reflect.TypeOf(net.IPMask{}):
|
||||
val := valObj.Elem().Field(i).Interface().(net.IPMask)
|
||||
if len(val) != 0 {
|
||||
// fmt.Println("Mask")
|
||||
hasContent = true
|
||||
}
|
||||
default:
|
||||
}
|
||||
}
|
||||
@@ -346,3 +339,18 @@ func cleanList(list []string) (ret []string) {
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
/*
|
||||
Return the ipv4 address and mask in CIDR format. Aimed for the use in
|
||||
templates.
|
||||
*/
|
||||
func (netdev *NetDevs) IpCIDR() string {
|
||||
if netdev.Ipaddr.IsUnspecified() || netdev.Netmask.IsUnspecified() {
|
||||
return ""
|
||||
}
|
||||
ipCIDR := net.IPNet{
|
||||
IP: netdev.Ipaddr,
|
||||
Mask: net.IPMask(netdev.Netmask),
|
||||
}
|
||||
return ipCIDR.String()
|
||||
}
|
||||
|
||||
@@ -71,7 +71,8 @@ func ObjectIsEmpty(obj interface{}) bool {
|
||||
return false
|
||||
}
|
||||
} else if varType.Field(i).Type == reflect.TypeOf(map[string]string{}) {
|
||||
if len(varVal.Field(i).Interface().(map[string]string)) != 0 {
|
||||
if varVal.Field(i).Len() != 0 {
|
||||
// if len(varVal.Field(i).Interface().(map[string]string)) != 0 {
|
||||
return false
|
||||
}
|
||||
} else if varType.Field(i).Type.Kind() == reflect.Ptr {
|
||||
@@ -83,13 +84,7 @@ func ObjectIsEmpty(obj interface{}) bool {
|
||||
if len(val) != 0 && !val.IsUnspecified() {
|
||||
return false
|
||||
}
|
||||
} else if varType.Field(i).Type == reflect.TypeOf(net.IPMask{}) {
|
||||
o, b := varVal.Field(i).Interface().(net.IPMask).Size()
|
||||
if o == 0 && b == 0 {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user