github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/bindings/generate/generate.go (about) 1 package generate 2 3 import ( 4 "context" 5 "errors" 6 "net/http" 7 8 "github.com/hanks177/podman/v4/pkg/bindings" 9 "github.com/hanks177/podman/v4/pkg/domain/entities" 10 ) 11 12 func Systemd(ctx context.Context, nameOrID string, options *SystemdOptions) (*entities.GenerateSystemdReport, error) { 13 if options == nil { 14 options = new(SystemdOptions) 15 } 16 conn, err := bindings.GetClient(ctx) 17 if err != nil { 18 return nil, err 19 } 20 params, err := options.ToParams() 21 if err != nil { 22 return nil, err 23 } 24 25 response, err := conn.DoRequest(ctx, nil, http.MethodGet, "/generate/%s/systemd", params, nil, nameOrID) 26 if err != nil { 27 return nil, err 28 } 29 defer response.Body.Close() 30 31 report := &entities.GenerateSystemdReport{} 32 return report, response.Process(&report.Units) 33 } 34 35 // Kube generate Kubernetes YAML (v1 specification) 36 // 37 // Note: Caller is responsible for closing returned reader 38 func Kube(ctx context.Context, nameOrIDs []string, options *KubeOptions) (*entities.GenerateKubeReport, error) { 39 if options == nil { 40 options = new(KubeOptions) 41 } 42 conn, err := bindings.GetClient(ctx) 43 if err != nil { 44 return nil, err 45 } 46 if len(nameOrIDs) < 1 { 47 return nil, errors.New("must provide the name or ID of one container or pod") 48 } 49 50 params, err := options.ToParams() 51 if err != nil { 52 return nil, err 53 } 54 for _, name := range nameOrIDs { 55 params.Add("names", name) 56 } 57 response, err := conn.DoRequest(ctx, nil, http.MethodGet, "/generate/kube", params, nil) 58 if err != nil { 59 return nil, err 60 } 61 62 if response.StatusCode == http.StatusOK { 63 return &entities.GenerateKubeReport{Reader: response.Body}, nil 64 } 65 66 // Unpack the error. 67 return nil, response.Process(nil) 68 }