engine: resources: Improve net error messages
This is a common case of parse failures for not using CIDR. Make it cleaner for the user.
This commit is contained in:
@@ -141,9 +141,12 @@ func (obj *NetRes) Validate() error {
|
|||||||
|
|
||||||
// validate network address input
|
// validate network address input
|
||||||
if obj.Addrs != nil {
|
if obj.Addrs != nil {
|
||||||
for _, addr := range obj.Addrs {
|
for i, addr := range obj.Addrs {
|
||||||
if _, _, err := net.ParseCIDR(addr); err != nil {
|
if _, _, err := net.ParseCIDR(addr); err != nil {
|
||||||
return errwrap.Wrapf(err, "error parsing address: %s", addr)
|
if len(obj.Addrs) == 1 {
|
||||||
|
return errwrap.Wrapf(err, "error parsing addr")
|
||||||
|
}
|
||||||
|
return errwrap.Wrapf(err, "error parsing addrs[%d]", i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -678,11 +681,14 @@ func (obj *iface) kernelCheck(addrs []string) (bool, error) {
|
|||||||
return false, errwrap.Wrapf(err, "error getting routes")
|
return false, errwrap.Wrapf(err, "error getting routes")
|
||||||
}
|
}
|
||||||
// check each route against each addr
|
// check each route against each addr
|
||||||
for _, addr := range addrs {
|
for i, addr := range addrs {
|
||||||
routeOK = false
|
routeOK = false
|
||||||
ip, ipNet, err := net.ParseCIDR(addr)
|
ip, ipNet, err := net.ParseCIDR(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, errwrap.Wrapf(err, "error parsing addr: %s", addr)
|
if len(addrs) == 1 {
|
||||||
|
return false, errwrap.Wrapf(err, "error parsing addr")
|
||||||
|
}
|
||||||
|
return false, errwrap.Wrapf(err, "error parsing addrs[%d]", i)
|
||||||
}
|
}
|
||||||
for _, r := range routes {
|
for _, r := range routes {
|
||||||
// if src, dst and protocol are correct, the kernel route exists
|
// if src, dst and protocol are correct, the kernel route exists
|
||||||
@@ -702,10 +708,13 @@ func (obj *iface) kernelCheck(addrs []string) (bool, error) {
|
|||||||
// kernelApply adds or replaces each address' kernel route as necessary.
|
// kernelApply adds or replaces each address' kernel route as necessary.
|
||||||
func (obj *iface) kernelApply(addrs []string) error {
|
func (obj *iface) kernelApply(addrs []string) error {
|
||||||
// for each addr, add or replace the corresponding kernel route
|
// for each addr, add or replace the corresponding kernel route
|
||||||
for _, addr := range addrs {
|
for i, addr := range addrs {
|
||||||
ip, ipNet, err := net.ParseCIDR(addr)
|
ip, ipNet, err := net.ParseCIDR(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errwrap.Wrapf(err, "error parsing addr: %s", addr)
|
if len(addrs) == 1 {
|
||||||
|
return errwrap.Wrapf(err, "error parsing addr")
|
||||||
|
}
|
||||||
|
return errwrap.Wrapf(err, "error parsing addrs[%d]", i)
|
||||||
}
|
}
|
||||||
// kernel route needed for the network to be reachable from a given ip
|
// kernel route needed for the network to be reachable from a given ip
|
||||||
if err := netlink.RouteReplace(&netlink.Route{
|
if err := netlink.RouteReplace(&netlink.Route{
|
||||||
|
|||||||
Reference in New Issue
Block a user