diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-03-25 10:50:01 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-25 10:50:01 -0700 |
commit | db356748738762c31a036c179d23488d7978dabf (patch) | |
tree | a01d257cba3349b47ff743b11eaa7f496bac991b /utils/ports.go | |
parent | 24581d8760691af1657c4f890d42ebd76f5e85c4 (diff) | |
parent | 4ab8a6f67eb9de0de40d478cb0cbec05b1b725c0 (diff) | |
download | podman-db356748738762c31a036c179d23488d7978dabf.tar.gz podman-db356748738762c31a036c179d23488d7978dabf.tar.bz2 podman-db356748738762c31a036c179d23488d7978dabf.zip |
Merge pull request #9781 from baude/addqemu
introduce podman machine
Diffstat (limited to 'utils/ports.go')
-rw-r--r-- | utils/ports.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/utils/ports.go b/utils/ports.go new file mode 100644 index 000000000..0a4f67dcc --- /dev/null +++ b/utils/ports.go @@ -0,0 +1,26 @@ +package utils + +import ( + "net" + "strconv" + + "github.com/pkg/errors" +) + +// Find a random, open port on the host +func GetRandomPort() (int, error) { + l, err := net.Listen("tcp", ":0") + if err != nil { + return 0, errors.Wrapf(err, "unable to get free TCP port") + } + defer l.Close() + _, randomPort, err := net.SplitHostPort(l.Addr().String()) + if err != nil { + return 0, errors.Wrapf(err, "unable to determine free port") + } + rp, err := strconv.Atoi(randomPort) + if err != nil { + return 0, errors.Wrapf(err, "unable to convert random port to int") + } + return rp, nil +} |