summaryrefslogtreecommitdiff
path: root/pkg/network/files.go
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2019-09-09 15:37:35 -0500
committerbaude <bbaude@redhat.com>2019-09-12 14:03:52 -0500
commitb94ea07265045f447572c264ef62e7960f484b58 (patch)
tree10ed1b8a28515fb083d4c306055e1db9da3c1f81 /pkg/network/files.go
parentaf8fedcc78674d71d43ca3000438c42b7b6b6994 (diff)
downloadpodman-b94ea07265045f447572c264ef62e7960f484b58.tar.gz
podman-b94ea07265045f447572c264ef62e7960f484b58.tar.bz2
podman-b94ea07265045f447572c264ef62e7960f484b58.zip
enhance podman network rm
when removing a podman network, we need to make sure we delete the network interface if one was ever created (by running a container). also, when removing networks, we check if any containers are using the network. if they are, we error out unless the user provides a 'force' option which will remove the containers in question. Signed-off-by: baude <bbaude@redhat.com>
Diffstat (limited to 'pkg/network/files.go')
-rw-r--r--pkg/network/files.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/pkg/network/files.go b/pkg/network/files.go
index 80fde5e17..d55ec2dfd 100644
--- a/pkg/network/files.go
+++ b/pkg/network/files.go
@@ -86,6 +86,7 @@ func GetNetworksFromFilesystem() ([]*allocator.Net, error) {
return nil, err
}
cniNetworks = append(cniNetworks, &ipamConf)
+ break
}
}
}
@@ -105,3 +106,26 @@ func GetNetworkNamesFromFileSystem() ([]string, error) {
}
return networkNames, nil
}
+
+// GetInterfaceNameFromConfig returns the interface name for the bridge plugin
+func GetInterfaceNameFromConfig(path string) (string, error) {
+ var name string
+ conf, err := libcni.ConfListFromFile(path)
+ if err != nil {
+ return "", err
+ }
+ for _, cniplugin := range conf.Plugins {
+ if cniplugin.Network.Type == "bridge" {
+ plugin := make(map[string]interface{})
+ if err := json.Unmarshal(cniplugin.Bytes, &plugin); err != nil {
+ return "", err
+ }
+ name = plugin["bridge"].(string)
+ break
+ }
+ }
+ if len(name) == 0 {
+ return "", errors.New("unable to find interface name for network")
+ }
+ return name, nil
+}