aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <paul.holzinger@web.de>2021-03-15 10:45:24 +0100
committerPaul Holzinger <paul.holzinger@web.de>2021-03-15 14:01:52 +0100
commit762148deb6be6925d17bd12f219f7385e1402439 (patch)
tree9efd0b493ce2e590cb79960507b1a4d9ec967189
parentfc02d16e728dfdd5a5f2e3bc622bbceb7f8c0d24 (diff)
downloadpodman-762148deb6be6925d17bd12f219f7385e1402439.tar.gz
podman-762148deb6be6925d17bd12f219f7385e1402439.tar.bz2
podman-762148deb6be6925d17bd12f219f7385e1402439.zip
Split libpod/network package
The `libpod/network` package should only be used on the backend and not the client. The client used this package only for two functions so move them into a new `pkg/network` package. This is needed so we can put linux only code into `libpod/network`, see #9710. [NO TESTS NEEDED] Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
-rw-r--r--cmd/podman/networks/list.go2
-rw-r--r--libpod/network/files.go13
-rw-r--r--libpod/network/netconflist.go7
-rw-r--r--libpod/network/network.go9
-rw-r--r--libpod/runtime_ctr.go3
-rw-r--r--libpod/runtime_ctr_network.go12
-rw-r--r--libpod/runtime_ctr_network_unsupported.go12
-rw-r--r--pkg/api/handlers/compat/networks.go3
-rw-r--r--pkg/domain/filters/containers.go2
-rw-r--r--pkg/domain/filters/pods.go2
-rw-r--r--pkg/network/network.go27
11 files changed, 63 insertions, 29 deletions
diff --git a/cmd/podman/networks/list.go b/cmd/podman/networks/list.go
index 2181f850b..fcbcb6722 100644
--- a/cmd/podman/networks/list.go
+++ b/cmd/podman/networks/list.go
@@ -12,8 +12,8 @@ import (
"github.com/containers/podman/v3/cmd/podman/common"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
- "github.com/containers/podman/v3/libpod/network"
"github.com/containers/podman/v3/pkg/domain/entities"
+ "github.com/containers/podman/v3/pkg/network"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
diff --git a/libpod/network/files.go b/libpod/network/files.go
index fe483e25c..d876113f9 100644
--- a/libpod/network/files.go
+++ b/libpod/network/files.go
@@ -11,6 +11,7 @@ import (
"github.com/containernetworking/plugins/plugins/ipam/host-local/backend/allocator"
"github.com/containers/common/pkg/config"
"github.com/containers/podman/v3/libpod/define"
+ "github.com/containers/podman/v3/pkg/network"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
@@ -67,7 +68,7 @@ func GetCNIConfigPathByNameOrID(config *config.Config, name string) (string, err
if conf.Name == name {
return confFile, nil
}
- if strings.HasPrefix(GetNetworkID(conf.Name), name) {
+ if strings.HasPrefix(network.GetNetworkID(conf.Name), name) {
idMatch++
file = confFile
}
@@ -92,16 +93,6 @@ func ReadRawCNIConfByNameOrID(config *config.Config, name string) ([]byte, error
return b, err
}
-// GetCNIPlugins returns a list of plugins that a given network
-// has in the form of a string
-func GetCNIPlugins(list *libcni.NetworkConfigList) string {
- plugins := make([]string, 0, len(list.Plugins))
- for _, plug := range list.Plugins {
- plugins = append(plugins, plug.Network.Type)
- }
- return strings.Join(plugins, ",")
-}
-
// GetNetworkLabels returns a list of labels as a string
func GetNetworkLabels(list *libcni.NetworkConfigList) NcLabels {
cniJSON := make(map[string]interface{})
diff --git a/libpod/network/netconflist.go b/libpod/network/netconflist.go
index 1a1583587..a45a4109a 100644
--- a/libpod/network/netconflist.go
+++ b/libpod/network/netconflist.go
@@ -7,6 +7,7 @@ import (
"strings"
"github.com/containernetworking/cni/libcni"
+ "github.com/containers/podman/v3/pkg/network"
"github.com/containers/podman/v3/pkg/util"
"github.com/pkg/errors"
)
@@ -211,7 +212,7 @@ func IfPassesFilter(netconf *libcni.NetworkConfigList, filters map[string][]stri
case "plugin":
// match one plugin
- plugins := GetCNIPlugins(netconf)
+ plugins := network.GetCNIPlugins(netconf)
for _, val := range filterValues {
if strings.Contains(plugins, val) {
result = true
@@ -243,7 +244,7 @@ func IfPassesFilter(netconf *libcni.NetworkConfigList, filters map[string][]stri
case "driver":
// matches only for the DefaultNetworkDriver
for _, filterValue := range filterValues {
- plugins := GetCNIPlugins(netconf)
+ plugins := network.GetCNIPlugins(netconf)
if filterValue == DefaultNetworkDriver &&
strings.Contains(plugins, DefaultNetworkDriver) {
result = true
@@ -253,7 +254,7 @@ func IfPassesFilter(netconf *libcni.NetworkConfigList, filters map[string][]stri
case "id":
// matches part of one id
for _, filterValue := range filterValues {
- if strings.Contains(GetNetworkID(netconf.Name), filterValue) {
+ if strings.Contains(network.GetNetworkID(netconf.Name), filterValue) {
result = true
break
}
diff --git a/libpod/network/network.go b/libpod/network/network.go
index f19a764ef..ed4e6388a 100644
--- a/libpod/network/network.go
+++ b/libpod/network/network.go
@@ -1,8 +1,6 @@
package network
import (
- "crypto/sha256"
- "encoding/hex"
"encoding/json"
"net"
"os"
@@ -245,13 +243,6 @@ func Exists(config *config.Config, name string) (bool, error) {
return true, nil
}
-// GetNetworkID return the network ID for a given name.
-// It is just the sha256 hash but this should be good enough.
-func GetNetworkID(name string) string {
- hash := sha256.Sum256([]byte(name))
- return hex.EncodeToString(hash[:])
-}
-
// PruneNetworks removes networks that are not being used and that is not the default
// network. To keep proper fencing for imports, you must provide the used networks
// to this function as a map. the key is meaningful in the map, the book is a no-op
diff --git a/libpod/runtime_ctr.go b/libpod/runtime_ctr.go
index 19690d79b..057313c82 100644
--- a/libpod/runtime_ctr.go
+++ b/libpod/runtime_ctr.go
@@ -12,7 +12,6 @@ import (
"github.com/containers/common/pkg/config"
"github.com/containers/podman/v3/libpod/define"
"github.com/containers/podman/v3/libpod/events"
- "github.com/containers/podman/v3/libpod/network"
"github.com/containers/podman/v3/libpod/shutdown"
"github.com/containers/podman/v3/pkg/cgroups"
"github.com/containers/podman/v3/pkg/domain/entities/reports"
@@ -204,7 +203,7 @@ func (r *Runtime) setupContainer(ctx context.Context, ctr *Container) (_ *Contai
if len(ctr.config.Networks) > 0 {
netNames := make([]string, 0, len(ctr.config.Networks))
for _, nameOrID := range ctr.config.Networks {
- netName, err := network.NormalizeName(r.config, nameOrID)
+ netName, err := normalizeNetworkName(r.config, nameOrID)
if err != nil {
return nil, err
}
diff --git a/libpod/runtime_ctr_network.go b/libpod/runtime_ctr_network.go
new file mode 100644
index 000000000..51ed982e2
--- /dev/null
+++ b/libpod/runtime_ctr_network.go
@@ -0,0 +1,12 @@
+// +build linux
+
+package libpod
+
+import (
+ "github.com/containers/common/pkg/config"
+ "github.com/containers/podman/v3/libpod/network"
+)
+
+func normalizeNetworkName(config *config.Config, nameOrID string) (string, error) {
+ return network.NormalizeName(config, nameOrID)
+}
diff --git a/libpod/runtime_ctr_network_unsupported.go b/libpod/runtime_ctr_network_unsupported.go
new file mode 100644
index 000000000..fb7e802ac
--- /dev/null
+++ b/libpod/runtime_ctr_network_unsupported.go
@@ -0,0 +1,12 @@
+// +build !linux
+
+package libpod
+
+import (
+ "github.com/containers/common/pkg/config"
+ "github.com/containers/podman/v3/libpod/define"
+)
+
+func normalizeNetworkName(config *config.Config, nameOrID string) (string, error) {
+ return "", define.ErrNotImplemented
+}
diff --git a/pkg/api/handlers/compat/networks.go b/pkg/api/handlers/compat/networks.go
index 28e90ac28..dfb1d7fda 100644
--- a/pkg/api/handlers/compat/networks.go
+++ b/pkg/api/handlers/compat/networks.go
@@ -16,6 +16,7 @@ import (
"github.com/containers/podman/v3/pkg/api/handlers/utils"
"github.com/containers/podman/v3/pkg/domain/entities"
"github.com/containers/podman/v3/pkg/domain/infra/abi"
+ networkid "github.com/containers/podman/v3/pkg/network"
"github.com/docker/docker/api/types"
dockerNetwork "github.com/docker/docker/api/types/network"
"github.com/gorilla/schema"
@@ -135,7 +136,7 @@ func getNetworkResourceByNameOrID(nameOrID string, runtime *libpod.Runtime, filt
report := types.NetworkResource{
Name: conf.Name,
- ID: network.GetNetworkID(conf.Name),
+ ID: networkid.GetNetworkID(conf.Name),
Created: time.Unix(int64(stat.Ctim.Sec), int64(stat.Ctim.Nsec)), // nolint: unconvert
Scope: "local",
Driver: network.DefaultNetworkDriver,
diff --git a/pkg/domain/filters/containers.go b/pkg/domain/filters/containers.go
index 6f4b4e8a0..98b8f7e88 100644
--- a/pkg/domain/filters/containers.go
+++ b/pkg/domain/filters/containers.go
@@ -7,7 +7,7 @@ import (
"github.com/containers/podman/v3/libpod"
"github.com/containers/podman/v3/libpod/define"
- "github.com/containers/podman/v3/libpod/network"
+ "github.com/containers/podman/v3/pkg/network"
"github.com/containers/podman/v3/pkg/timetype"
"github.com/containers/podman/v3/pkg/util"
"github.com/pkg/errors"
diff --git a/pkg/domain/filters/pods.go b/pkg/domain/filters/pods.go
index 53d10213a..0490a4848 100644
--- a/pkg/domain/filters/pods.go
+++ b/pkg/domain/filters/pods.go
@@ -6,7 +6,7 @@ import (
"github.com/containers/podman/v3/libpod"
"github.com/containers/podman/v3/libpod/define"
- "github.com/containers/podman/v3/libpod/network"
+ "github.com/containers/podman/v3/pkg/network"
"github.com/containers/podman/v3/pkg/util"
"github.com/pkg/errors"
)
diff --git a/pkg/network/network.go b/pkg/network/network.go
new file mode 100644
index 000000000..44132ca28
--- /dev/null
+++ b/pkg/network/network.go
@@ -0,0 +1,27 @@
+package network
+
+import (
+ "crypto/sha256"
+ "encoding/hex"
+ "strings"
+
+ "github.com/containernetworking/cni/libcni"
+)
+
+// GetCNIPlugins returns a list of plugins that a given network
+// has in the form of a string
+func GetCNIPlugins(list *libcni.NetworkConfigList) string {
+ plugins := make([]string, 0, len(list.Plugins))
+ for _, plug := range list.Plugins {
+ plugins = append(plugins, plug.Network.Type)
+ }
+ return strings.Join(plugins, ",")
+}
+
+// GetNetworkID return the network ID for a given name.
+// It is just the sha256 hash but this should be good enough.
+// The caller has to make sure it is only called with the network name.
+func GetNetworkID(name string) string {
+ hash := sha256.Sum256([]byte(name))
+ return hex.EncodeToString(hash[:])
+}