summaryrefslogtreecommitdiff
path: root/pkg/bindings/kube
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/bindings/kube')
-rw-r--r--pkg/bindings/kube/kube.go96
-rw-r--r--pkg/bindings/kube/types.go48
-rw-r--r--pkg/bindings/kube/types_play_options.go289
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
+}