From a45d22a1ddd2840cf8c3a38540aa8683cc0d5c7d Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Mon, 18 Jan 2021 18:52:06 +0100 Subject: podman network exists Add podman network exists command with remote support. Signed-off-by: Paul Holzinger --- pkg/domain/entities/engine_container.go | 1 + pkg/domain/infra/abi/network.go | 15 +++++++++++++++ pkg/domain/infra/tunnel/network.go | 11 +++++++++++ 3 files changed, 27 insertions(+) (limited to 'pkg/domain') diff --git a/pkg/domain/entities/engine_container.go b/pkg/domain/entities/engine_container.go index d2552770c..7b43ac961 100644 --- a/pkg/domain/entities/engine_container.go +++ b/pkg/domain/entities/engine_container.go @@ -60,6 +60,7 @@ type ContainerEngine interface { NetworkConnect(ctx context.Context, networkname string, options NetworkConnectOptions) error NetworkCreate(ctx context.Context, name string, options NetworkCreateOptions) (*NetworkCreateReport, error) NetworkDisconnect(ctx context.Context, networkname string, options NetworkDisconnectOptions) error + NetworkExists(ctx context.Context, networkname string) (*BoolReport, error) NetworkInspect(ctx context.Context, namesOrIds []string, options InspectOptions) ([]NetworkInspectReport, []error, error) NetworkList(ctx context.Context, options NetworkListOptions) ([]*NetworkListReport, error) NetworkReload(ctx context.Context, names []string, options NetworkReloadOptions) ([]*NetworkReloadReport, error) diff --git a/pkg/domain/infra/abi/network.go b/pkg/domain/infra/abi/network.go index e5ecf5c72..bc4328fcd 100644 --- a/pkg/domain/infra/abi/network.go +++ b/pkg/domain/infra/abi/network.go @@ -140,3 +140,18 @@ func (ic *ContainerEngine) NetworkDisconnect(ctx context.Context, networkname st func (ic *ContainerEngine) NetworkConnect(ctx context.Context, networkname string, options entities.NetworkConnectOptions) error { return ic.Libpod.ConnectContainerToNetwork(options.Container, networkname, options.Aliases) } + +// NetworkExists checks if the given network exists +func (ic *ContainerEngine) NetworkExists(ctx context.Context, networkname string) (*entities.BoolReport, error) { + config, err := ic.Libpod.GetConfig() + if err != nil { + return nil, err + } + exists, err := network.Exists(config, networkname) + if err != nil { + return nil, err + } + return &entities.BoolReport{ + Value: exists, + }, nil +} diff --git a/pkg/domain/infra/tunnel/network.go b/pkg/domain/infra/tunnel/network.go index d4e827580..bdb1beb03 100644 --- a/pkg/domain/infra/tunnel/network.go +++ b/pkg/domain/infra/tunnel/network.go @@ -78,3 +78,14 @@ func (ic *ContainerEngine) NetworkConnect(ctx context.Context, networkname strin options := new(network.ConnectOptions).WithAliases(opts.Aliases) return network.Connect(ic.ClientCtx, networkname, opts.Container, options) } + +// NetworkExists checks if the given network exists +func (ic *ContainerEngine) NetworkExists(ctx context.Context, networkname string) (*entities.BoolReport, error) { + exists, err := network.Exists(ic.ClientCtx, networkname, nil) + if err != nil { + return nil, err + } + return &entities.BoolReport{ + Value: exists, + }, nil +} -- cgit v1.2.3-54-g00ecf