Fix network not found not being detected on new Docker versions
parent
f881b3340e
commit
25c1f32691
|
@ -23,6 +23,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/blang/semver/v4"
|
"github.com/blang/semver/v4"
|
||||||
|
@ -207,8 +208,7 @@ func dockerNetworkInspect(name string) (netInfo, error) {
|
||||||
rr, err := dockerInspectGetter(name)
|
rr, err := dockerInspectGetter(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logDockerNetworkInspect(Docker, name)
|
logDockerNetworkInspect(Docker, name)
|
||||||
if strings.Contains(rr.Output(), "No such network") {
|
if isNetworkNotFound(rr.Output()) {
|
||||||
|
|
||||||
return info, ErrNetworkNotFound
|
return info, ErrNetworkNotFound
|
||||||
}
|
}
|
||||||
return info, err
|
return info, err
|
||||||
|
@ -293,7 +293,7 @@ func RemoveNetwork(ociBin string, name string) error {
|
||||||
}
|
}
|
||||||
rr, err := runCmd(exec.Command(ociBin, "network", "rm", name))
|
rr, err := runCmd(exec.Command(ociBin, "network", "rm", name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(rr.Output(), "No such network") {
|
if isNetworkNotFound(rr.Output()) {
|
||||||
return ErrNetworkNotFound
|
return ErrNetworkNotFound
|
||||||
}
|
}
|
||||||
// Error response from daemon: error while removing network: network mynet123 id f9e1c50b89feb0b8f4b687f3501a81b618252c9907bc20666e386d0928322387 has active endpoints
|
// Error response from daemon: error while removing network: network mynet123 id f9e1c50b89feb0b8f4b687f3501a81b618252c9907bc20666e386d0928322387 has active endpoints
|
||||||
|
@ -347,3 +347,9 @@ func DeleteKICNetworksByLabel(ociBin string, label string) []error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isNetworkNotFound(output string) bool {
|
||||||
|
// "No such network" on Docker 20.X.X and before, "network %s not found" on Docker 23.X.X and later
|
||||||
|
re := regexp.MustCompile(`(No such network)|(network .+ not found)`)
|
||||||
|
return re.MatchString(output)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue