summaryrefslogtreecommitdiff
path: root/cmd/podmanV2/common/util.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-03-27 16:25:30 +0100
committerGitHub <noreply@github.com>2020-03-27 16:25:30 +0100
commit4233250c430a8f769048548b6ad6affd0d9e65e0 (patch)
tree0cf0c3dc86ccf85be3d5098f278021798c3f6b6c /cmd/podmanV2/common/util.go
parent3ddb5b10d53df54346a6d795047124fc4e995699 (diff)
parente56d5295614b745115abf0198f7b67ae157aae1e (diff)
downloadpodman-4233250c430a8f769048548b6ad6affd0d9e65e0.tar.gz
podman-4233250c430a8f769048548b6ad6affd0d9e65e0.tar.bz2
podman-4233250c430a8f769048548b6ad6affd0d9e65e0.zip
Merge pull request #5611 from baude/v2podcreate
podmanv2 pod create using podspecgen
Diffstat (limited to 'cmd/podmanV2/common/util.go')
-rw-r--r--cmd/podmanV2/common/util.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/cmd/podmanV2/common/util.go b/cmd/podmanV2/common/util.go
new file mode 100644
index 000000000..47bbe12fa
--- /dev/null
+++ b/cmd/podmanV2/common/util.go
@@ -0,0 +1,43 @@
+package common
+
+import (
+ "strconv"
+
+ "github.com/cri-o/ocicni/pkg/ocicni"
+ "github.com/docker/go-connections/nat"
+ "github.com/pkg/errors"
+)
+
+// createPortBindings iterates ports mappings and exposed ports into a format CNI understands
+func createPortBindings(ports []string) ([]ocicni.PortMapping, error) {
+ // TODO wants someone to rewrite this code in the future
+ var portBindings []ocicni.PortMapping
+ // The conversion from []string to natBindings is temporary while mheon reworks the port
+ // deduplication code. Eventually that step will not be required.
+ _, natBindings, err := nat.ParsePortSpecs(ports)
+ if err != nil {
+ return nil, err
+ }
+ for containerPb, hostPb := range natBindings {
+ var pm ocicni.PortMapping
+ pm.ContainerPort = int32(containerPb.Int())
+ for _, i := range hostPb {
+ var hostPort int
+ var err error
+ pm.HostIP = i.HostIP
+ if i.HostPort == "" {
+ hostPort = containerPb.Int()
+ } else {
+ hostPort, err = strconv.Atoi(i.HostPort)
+ if err != nil {
+ return nil, errors.Wrapf(err, "unable to convert host port to integer")
+ }
+ }
+
+ pm.HostPort = int32(hostPort)
+ pm.Protocol = containerPb.Proto()
+ portBindings = append(portBindings, pm)
+ }
+ }
+ return portBindings, nil
+}