diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-04-21 05:07:30 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-21 05:07:30 -0400 |
commit | 90636fe8c2d1eb5ae75afa73405c8b12a0417fca (patch) | |
tree | c6e320c49d6d223e4009a3ee5a54793777579c82 /cmd/podman/system/service_abi.go | |
parent | 89276a5f92717c4c6a299ca2be182a3797d9c90d (diff) | |
parent | 09dc701097ac874c3885fa58ed4f143c29ae83f0 (diff) | |
download | podman-90636fe8c2d1eb5ae75afa73405c8b12a0417fca.tar.gz podman-90636fe8c2d1eb5ae75afa73405c8b12a0417fca.tar.bz2 podman-90636fe8c2d1eb5ae75afa73405c8b12a0417fca.zip |
Merge pull request #5863 from vrothberg/v2-fix-rmi
podman rmi: refactor logic
Diffstat (limited to 'cmd/podman/system/service_abi.go')
-rw-r--r-- | cmd/podman/system/service_abi.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cmd/podman/system/service_abi.go b/cmd/podman/system/service_abi.go new file mode 100644 index 000000000..3da6ccfc7 --- /dev/null +++ b/cmd/podman/system/service_abi.go @@ -0,0 +1,57 @@ +// +build ABISupport + +package system + +import ( + "context" + "net" + "strings" + + api "github.com/containers/libpod/pkg/api/server" + "github.com/containers/libpod/pkg/domain/entities" + "github.com/containers/libpod/pkg/domain/infra" + "github.com/pkg/errors" + "github.com/sirupsen/logrus" + "github.com/spf13/pflag" +) + +func restService(opts entities.ServiceOptions, flags *pflag.FlagSet, cfg *entities.PodmanConfig) error { + var ( + listener *net.Listener + err error + ) + + if opts.URI != "" { + fields := strings.Split(opts.URI, ":") + if len(fields) == 1 { + return errors.Errorf("%s is an invalid socket destination", opts.URI) + } + address := strings.Join(fields[1:], ":") + l, err := net.Listen(fields[0], address) + if err != nil { + return errors.Wrapf(err, "unable to create socket %s", opts.URI) + } + listener = &l + } + + rt, err := infra.GetRuntime(context.Background(), flags, cfg) + if err != nil { + return err + } + + server, err := api.NewServerWithSettings(rt, opts.Timeout, listener) + if err != nil { + return err + } + defer func() { + if err := server.Shutdown(); err != nil { + logrus.Warnf("Error when stopping API service: %s", err) + } + }() + + err = server.Serve() + if listener != nil { + _ = (*listener).Close() + } + return err +} |