improve error handling

This commit is contained in:
Matthias Radestock committed 2016-01-15 08:53:04 +00:00
1 parent 31b303a419
commit d770532b08
1 file changed
+9 -15
+9 -15
View File
@@ -17,13 +17,6 @@ func createPluginNetwork(args []string) error {
if err != nil {
return err
}
_, err = d.NetworkInfo(networkName)
if err == nil {
return nil
}
if _, ok := err.(*docker.NoSuchNetwork); !ok {
return nil // TODO is this right?
}
_, err = d.CreateNetwork(
docker.CreateNetworkOptions{
Name: networkName,
@@ -31,8 +24,14 @@ func createPluginNetwork(args []string) error {
Driver: driverName,
IPAM: docker.IPAMOptions{Driver: driverName},
})
if err != nil {
return fmt.Errorf("unable to create network: %s", err)
if err != docker.ErrNetworkAlreadyExists && err != nil {
// Despite appearances to the contrary, CreateNetwork does
// sometimes(always?) *not* return ErrNetworkAlreadyExists
// when the network already exists. Hence we need to check for
// this explicitly.
if _, err2 := d.NetworkInfo(networkName); err2 != nil {
return fmt.Errorf("unable to create network: %s", err)
}
}
return nil
}
@@ -46,13 +45,8 @@ func removePluginNetwork(args []string) error {
if err != nil {
return err
}
_, err = d.NetworkInfo(networkName)
if err != nil {
// network probably doesn't exist; TODO check this better
return nil
}
err = d.RemoveNetwork(networkName)
if err != nil {
if _, ok := err.(*docker.NoSuchNetwork); !ok && err != nil {
return fmt.Errorf("unable to remove network: %s", err)
}
return nil