diff options
Diffstat (limited to 'pkg/bindings/kube')
-rw-r--r-- | pkg/bindings/kube/kube.go | 96 | ||||
-rw-r--r-- | pkg/bindings/kube/types.go | 48 | ||||
-rw-r--r-- | pkg/bindings/kube/types_play_options.go | 289 |
3 files changed, 433 insertions, 0 deletions
diff --git a/pkg/bindings/kube/kube.go b/pkg/bindings/kube/kube.go new file mode 100644 index 000000000..b9cc0efa7 --- /dev/null +++ b/pkg/bindings/kube/kube.go @@ -0,0 +1,96 @@ +package kube + +import ( + "context" + "io" + "net/http" + "os" + "strconv" + + "github.com/containers/image/v5/types" + "github.com/containers/podman/v4/pkg/auth" + "github.com/containers/podman/v4/pkg/bindings" + "github.com/containers/podman/v4/pkg/domain/entities" + "github.com/sirupsen/logrus" +) + +func Play(ctx context.Context, path string, options *PlayOptions) (*entities.KubePlayReport, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + defer f.Close() + + return PlayWithBody(ctx, f, options) +} + +func PlayWithBody(ctx context.Context, body io.Reader, options *PlayOptions) (*entities.KubePlayReport, error) { + var report entities.KubePlayReport + if options == nil { + options = new(PlayOptions) + } + + conn, err := bindings.GetClient(ctx) + if err != nil { + return nil, err + } + + params, err := options.ToParams() + if err != nil { + return nil, err + } + if options.SkipTLSVerify != nil { + params.Set("tlsVerify", strconv.FormatBool(options.GetSkipTLSVerify())) + } + if options.Start != nil { + params.Set("start", strconv.FormatBool(options.GetStart())) + } + + header, err := auth.MakeXRegistryAuthHeader(&types.SystemContext{AuthFilePath: options.GetAuthfile()}, options.GetUsername(), options.GetPassword()) + if err != nil { + return nil, err + } + + response, err := conn.DoRequest(ctx, body, http.MethodPost, "/kube/play", params, header) + if err != nil { + return nil, err + } + defer response.Body.Close() + + if err := response.Process(&report); err != nil { + return nil, err + } + + return &report, nil +} + +func Down(ctx context.Context, path string) (*entities.KubePlayReport, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + defer func() { + if err := f.Close(); err != nil { + logrus.Warn(err) + } + }() + + return DownWithBody(ctx, f) +} + +func DownWithBody(ctx context.Context, body io.Reader) (*entities.KubePlayReport, error) { + var report entities.KubePlayReport + conn, err := bindings.GetClient(ctx) + if err != nil { + return nil, err + } + + response, err := conn.DoRequest(ctx, body, http.MethodDelete, "/kube/play", nil, nil) + if err != nil { + return nil, err + } + if err := response.Process(&report); err != nil { + return nil, err + } + return &report, nil +} diff --git a/pkg/bindings/kube/types.go b/pkg/bindings/kube/types.go new file mode 100644 index 000000000..783d1912a --- /dev/null +++ b/pkg/bindings/kube/types.go @@ -0,0 +1,48 @@ +package kube + +import ( + "net" +) + +//go:generate go run ../generator/generator.go PlayOptions +// PlayOptions are optional options for replaying kube YAML files +type PlayOptions struct { + // Annotations - Annotations to add to Pods + Annotations map[string]string + // Authfile - path to an authentication file. + Authfile *string + // CertDir - to a directory containing TLS certifications and keys. + CertDir *string + // Username for authenticating against the registry. + Username *string + // Password for authenticating against the registry. + Password *string + // Network - name of the networks to connect to. + Network *[]string + // NoHosts - do not generate /etc/hosts file in pod's containers + NoHosts *bool + // Quiet - suppress output when pulling images. + Quiet *bool + // SignaturePolicy - path to a signature-policy file. + SignaturePolicy *string + // SkipTLSVerify - skip https and certificate validation when + // contacting container registries. + SkipTLSVerify *bool + // SeccompProfileRoot - path to a directory containing seccomp + // profiles. + SeccompProfileRoot *string + // StaticIPs - Static IP address used by the pod(s). + StaticIPs *[]net.IP + // StaticMACs - Static MAC address used by the pod(s). + StaticMACs *[]net.HardwareAddr + // ConfigMaps - slice of pathnames to kubernetes configmap YAMLs. + ConfigMaps *[]string + // LogDriver for the container. For example: journald + LogDriver *string + // LogOptions for the container. For example: journald + LogOptions *[]string + // Start - don't start the pod if false + Start *bool + // Userns - define the user namespace to use. + Userns *string +} diff --git a/pkg/bindings/kube/types_play_options.go b/pkg/bindings/kube/types_play_options.go new file mode 100644 index 000000000..cdc2e9dd8 --- /dev/null +++ b/pkg/bindings/kube/types_play_options.go @@ -0,0 +1,289 @@ +// Code generated by go generate; DO NOT EDIT. +package kube + +import ( + "net" + "net/url" + + "github.com/containers/podman/v4/pkg/bindings/internal/util" +) + +// Changed returns true if named field has been set +func (o *PlayOptions) Changed(fieldName string) bool { + return util.Changed(o, fieldName) +} + +// ToParams formats struct fields to be passed to API service +func (o *PlayOptions) ToParams() (url.Values, error) { + return util.ToParams(o) +} + +// WithAnnotations set field Annotations to given value +func (o *PlayOptions) WithAnnotations(value map[string]string) *PlayOptions { + o.Annotations = value + return o +} + +// GetAnnotations returns value of field Annotations +func (o *PlayOptions) GetAnnotations() map[string]string { + if o.Annotations == nil { + var z map[string]string + return z + } + return o.Annotations +} + +// WithAuthfile set field Authfile to given value +func (o *PlayOptions) WithAuthfile(value string) *PlayOptions { + o.Authfile = &value + return o +} + +// GetAuthfile returns value of field Authfile +func (o *PlayOptions) GetAuthfile() string { + if o.Authfile == nil { + var z string + return z + } + return *o.Authfile +} + +// WithCertDir set field CertDir to given value +func (o *PlayOptions) WithCertDir(value string) *PlayOptions { + o.CertDir = &value + return o +} + +// GetCertDir returns value of field CertDir +func (o *PlayOptions) GetCertDir() string { + if o.CertDir == nil { + var z string + return z + } + return *o.CertDir +} + +// WithUsername set field Username to given value +func (o *PlayOptions) WithUsername(value string) *PlayOptions { + o.Username = &value + return o +} + +// GetUsername returns value of field Username +func (o *PlayOptions) GetUsername() string { + if o.Username == nil { + var z string + return z + } + return *o.Username +} + +// WithPassword set field Password to given value +func (o *PlayOptions) WithPassword(value string) *PlayOptions { + o.Password = &value + return o +} + +// GetPassword returns value of field Password +func (o *PlayOptions) GetPassword() string { + if o.Password == nil { + var z string + return z + } + return *o.Password +} + +// WithNetwork set field Network to given value +func (o *PlayOptions) WithNetwork(value []string) *PlayOptions { + o.Network = &value + return o +} + +// GetNetwork returns value of field Network +func (o *PlayOptions) GetNetwork() []string { + if o.Network == nil { + var z []string + return z + } + return *o.Network +} + +// WithNoHosts set field NoHosts to given value +func (o *PlayOptions) WithNoHosts(value bool) *PlayOptions { + o.NoHosts = &value + return o +} + +// GetNoHosts returns value of field NoHosts +func (o *PlayOptions) GetNoHosts() bool { + if o.NoHosts == nil { + var z bool + return z + } + return *o.NoHosts +} + +// WithQuiet set field Quiet to given value +func (o *PlayOptions) WithQuiet(value bool) *PlayOptions { + o.Quiet = &value + return o +} + +// GetQuiet returns value of field Quiet +func (o *PlayOptions) GetQuiet() bool { + if o.Quiet == nil { + var z bool + return z + } + return *o.Quiet +} + +// WithSignaturePolicy set field SignaturePolicy to given value +func (o *PlayOptions) WithSignaturePolicy(value string) *PlayOptions { + o.SignaturePolicy = &value + return o +} + +// GetSignaturePolicy returns value of field SignaturePolicy +func (o *PlayOptions) GetSignaturePolicy() string { + if o.SignaturePolicy == nil { + var z string + return z + } + return *o.SignaturePolicy +} + +// WithSkipTLSVerify set field SkipTLSVerify to given value +func (o *PlayOptions) WithSkipTLSVerify(value bool) *PlayOptions { + o.SkipTLSVerify = &value + return o +} + +// GetSkipTLSVerify returns value of field SkipTLSVerify +func (o *PlayOptions) GetSkipTLSVerify() bool { + if o.SkipTLSVerify == nil { + var z bool + return z + } + return *o.SkipTLSVerify +} + +// WithSeccompProfileRoot set field SeccompProfileRoot to given value +func (o *PlayOptions) WithSeccompProfileRoot(value string) *PlayOptions { + o.SeccompProfileRoot = &value + return o +} + +// GetSeccompProfileRoot returns value of field SeccompProfileRoot +func (o *PlayOptions) GetSeccompProfileRoot() string { + if o.SeccompProfileRoot == nil { + var z string + return z + } + return *o.SeccompProfileRoot +} + +// WithStaticIPs set field StaticIPs to given value +func (o *PlayOptions) WithStaticIPs(value []net.IP) *PlayOptions { + o.StaticIPs = &value + return o +} + +// GetStaticIPs returns value of field StaticIPs +func (o *PlayOptions) GetStaticIPs() []net.IP { + if o.StaticIPs == nil { + var z []net.IP + return z + } + return *o.StaticIPs +} + +// WithStaticMACs set field StaticMACs to given value +func (o *PlayOptions) WithStaticMACs(value []net.HardwareAddr) *PlayOptions { + o.StaticMACs = &value + return o +} + +// GetStaticMACs returns value of field StaticMACs +func (o *PlayOptions) GetStaticMACs() []net.HardwareAddr { + if o.StaticMACs == nil { + var z []net.HardwareAddr + return z + } + return *o.StaticMACs +} + +// WithConfigMaps set field ConfigMaps to given value +func (o *PlayOptions) WithConfigMaps(value []string) *PlayOptions { + o.ConfigMaps = &value + return o +} + +// GetConfigMaps returns value of field ConfigMaps +func (o *PlayOptions) GetConfigMaps() []string { + if o.ConfigMaps == nil { + var z []string + return z + } + return *o.ConfigMaps +} + +// WithLogDriver set field LogDriver to given value +func (o *PlayOptions) WithLogDriver(value string) *PlayOptions { + o.LogDriver = &value + return o +} + +// GetLogDriver returns value of field LogDriver +func (o *PlayOptions) GetLogDriver() string { + if o.LogDriver == nil { + var z string + return z + } + return *o.LogDriver +} + +// WithLogOptions set field LogOptions to given value +func (o *PlayOptions) WithLogOptions(value []string) *PlayOptions { + o.LogOptions = &value + return o +} + +// GetLogOptions returns value of field LogOptions +func (o *PlayOptions) GetLogOptions() []string { + if o.LogOptions == nil { + var z []string + return z + } + return *o.LogOptions +} + +// WithStart set field Start to given value +func (o *PlayOptions) WithStart(value bool) *PlayOptions { + o.Start = &value + return o +} + +// GetStart returns value of field Start +func (o *PlayOptions) GetStart() bool { + if o.Start == nil { + var z bool + return z + } + return *o.Start +} + +// WithUserns set field Userns to given value +func (o *PlayOptions) WithUserns(value string) *PlayOptions { + o.Userns = &value + return o +} + +// GetUserns returns value of field Userns +func (o *PlayOptions) GetUserns() string { + if o.Userns == nil { + var z string + return z + } + return *o.Userns +} |