github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/bindings/play/play.go (about) 1 package play 2 3 import ( 4 "context" 5 "net/http" 6 "net/url" 7 "os" 8 "strconv" 9 10 "github.com/containers/image/v5/types" 11 "github.com/containers/podman/v2/pkg/auth" 12 "github.com/containers/podman/v2/pkg/bindings" 13 "github.com/containers/podman/v2/pkg/domain/entities" 14 ) 15 16 func Kube(ctx context.Context, path string, options entities.PlayKubeOptions) (*entities.PlayKubeReport, error) { 17 var report entities.PlayKubeReport 18 conn, err := bindings.GetClient(ctx) 19 if err != nil { 20 return nil, err 21 } 22 23 f, err := os.Open(path) 24 if err != nil { 25 return nil, err 26 } 27 defer f.Close() 28 29 params := url.Values{} 30 params.Set("network", options.Network) 31 params.Set("logDriver", options.LogDriver) 32 if options.SkipTLSVerify != types.OptionalBoolUndefined { 33 params.Set("tlsVerify", strconv.FormatBool(options.SkipTLSVerify != types.OptionalBoolTrue)) 34 } 35 if options.Start != types.OptionalBoolUndefined { 36 params.Set("start", strconv.FormatBool(options.Start == types.OptionalBoolTrue)) 37 } 38 39 // TODO: have a global system context we can pass around (1st argument) 40 header, err := auth.Header(nil, auth.XRegistryAuthHeader, options.Authfile, options.Username, options.Password) 41 if err != nil { 42 return nil, err 43 } 44 45 response, err := conn.DoRequest(f, http.MethodPost, "/play/kube", params, header) 46 if err != nil { 47 return nil, err 48 } 49 if err := response.Process(&report); err != nil { 50 return nil, err 51 } 52 53 return &report, nil 54 }