mirror of
https://github.com/containers/podman.git
synced 2025-12-12 09:50:25 +08:00
Moving from Go module v4 to v5 prepares us for public releases. Move done using gomove [1] as with the v3 and v4 moves. [1] https://github.com/KSubedi/gomove Signed-off-by: Matt Heon <mheon@redhat.com>
89 lines
3.8 KiB
Go
89 lines
3.8 KiB
Go
package tunnel
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
|
|
"github.com/containers/image/v5/types"
|
|
"github.com/containers/podman/v5/pkg/bindings/generate"
|
|
"github.com/containers/podman/v5/pkg/bindings/kube"
|
|
"github.com/containers/podman/v5/pkg/bindings/play"
|
|
"github.com/containers/podman/v5/pkg/domain/entities"
|
|
)
|
|
|
|
func (ic *ContainerEngine) GenerateSystemd(ctx context.Context, nameOrID string, opts entities.GenerateSystemdOptions) (*entities.GenerateSystemdReport, error) {
|
|
options := new(
|
|
generate.SystemdOptions).
|
|
WithUseName(opts.Name).
|
|
WithContainerPrefix(opts.ContainerPrefix).
|
|
WithNew(opts.New).WithNoHeader(opts.NoHeader).
|
|
WithTemplateUnitFile(opts.TemplateUnitFile).
|
|
WithPodPrefix(opts.PodPrefix).
|
|
WithSeparator(opts.Separator).
|
|
WithWants(opts.Wants).
|
|
WithAfter(opts.After).
|
|
WithRequires(opts.Requires).
|
|
WithAdditionalEnvVariables(opts.AdditionalEnvVariables)
|
|
|
|
if opts.StartTimeout != nil {
|
|
options.WithStartTimeout(*opts.StartTimeout)
|
|
}
|
|
if opts.StopTimeout != nil {
|
|
options.WithStopTimeout(*opts.StopTimeout)
|
|
}
|
|
if opts.RestartPolicy != nil {
|
|
options.WithRestartPolicy(*opts.RestartPolicy)
|
|
}
|
|
if opts.RestartSec != nil {
|
|
options.WithRestartSec(*opts.RestartSec)
|
|
}
|
|
|
|
return generate.Systemd(ic.ClientCtx, nameOrID, options)
|
|
}
|
|
|
|
// GenerateKube Kubernetes YAML (v1 specification) for nameOrIDs
|
|
//
|
|
// Note: Caller is responsible for closing returned Reader
|
|
func (ic *ContainerEngine) GenerateKube(ctx context.Context, nameOrIDs []string, opts entities.GenerateKubeOptions) (*entities.GenerateKubeReport, error) {
|
|
options := new(generate.KubeOptions).WithService(opts.Service).WithType(opts.Type).WithReplicas(opts.Replicas).WithNoTrunc(opts.UseLongAnnotations).WithPodmanOnly(opts.PodmanOnly)
|
|
return generate.Kube(ic.ClientCtx, nameOrIDs, options)
|
|
}
|
|
|
|
func (ic *ContainerEngine) GenerateSpec(ctx context.Context, opts *entities.GenerateSpecOptions) (*entities.GenerateSpecReport, error) {
|
|
return nil, fmt.Errorf("GenerateSpec is not supported on the remote API")
|
|
}
|
|
|
|
func (ic *ContainerEngine) PlayKube(ctx context.Context, body io.Reader, opts entities.PlayKubeOptions) (*entities.PlayKubeReport, error) {
|
|
options := new(kube.PlayOptions).WithAuthfile(opts.Authfile).WithUsername(opts.Username).WithPassword(opts.Password)
|
|
options.WithCertDir(opts.CertDir).WithQuiet(opts.Quiet).WithSignaturePolicy(opts.SignaturePolicy).WithConfigMaps(opts.ConfigMaps)
|
|
options.WithLogDriver(opts.LogDriver).WithNetwork(opts.Networks).WithSeccompProfileRoot(opts.SeccompProfileRoot)
|
|
options.WithStaticIPs(opts.StaticIPs).WithStaticMACs(opts.StaticMACs).WithWait(opts.Wait).WithServiceContainer(opts.ServiceContainer).WithReplace(opts.Replace)
|
|
if len(opts.LogOptions) > 0 {
|
|
options.WithLogOptions(opts.LogOptions)
|
|
}
|
|
if opts.Annotations != nil {
|
|
options.WithAnnotations(opts.Annotations)
|
|
}
|
|
options.WithNoHosts(opts.NoHosts).WithUserns(opts.Userns)
|
|
if s := opts.SkipTLSVerify; s != types.OptionalBoolUndefined {
|
|
options.WithSkipTLSVerify(s == types.OptionalBoolTrue)
|
|
}
|
|
if start := opts.Start; start != types.OptionalBoolUndefined {
|
|
options.WithStart(start == types.OptionalBoolTrue)
|
|
}
|
|
options.WithPublishPorts(opts.PublishPorts)
|
|
options.WithPublishAllPorts(opts.PublishAllPorts)
|
|
options.WithNoTrunc(opts.UseLongAnnotations)
|
|
return play.KubeWithBody(ic.ClientCtx, body, options)
|
|
}
|
|
|
|
func (ic *ContainerEngine) PlayKubeDown(ctx context.Context, body io.Reader, options entities.PlayKubeDownOptions) (*entities.PlayKubeReport, error) {
|
|
return play.DownWithBody(ic.ClientCtx, body, kube.DownOptions{Force: &options.Force})
|
|
}
|
|
|
|
func (ic *ContainerEngine) KubeApply(ctx context.Context, body io.Reader, opts entities.ApplyOptions) error {
|
|
options := new(kube.ApplyOptions).WithKubeconfig(opts.Kubeconfig).WithCACertFile(opts.CACertFile).WithNamespace(opts.Namespace)
|
|
return kube.ApplyWithBody(ic.ClientCtx, body, options)
|
|
}
|