github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/domain/infra/tunnel/secrets.go (about) 1 package tunnel 2 3 import ( 4 "context" 5 "io" 6 7 "github.com/hanks177/podman/v4/pkg/bindings/secrets" 8 "github.com/hanks177/podman/v4/pkg/domain/entities" 9 "github.com/hanks177/podman/v4/pkg/errorhandling" 10 "github.com/pkg/errors" 11 ) 12 13 func (ic *ContainerEngine) SecretCreate(ctx context.Context, name string, reader io.Reader, options entities.SecretCreateOptions) (*entities.SecretCreateReport, error) { 14 opts := new(secrets.CreateOptions). 15 WithDriver(options.Driver). 16 WithDriverOpts(options.DriverOpts). 17 WithName(name) 18 created, err := secrets.Create(ic.ClientCtx, reader, opts) 19 if err != nil { 20 return nil, err 21 } 22 return created, nil 23 } 24 25 func (ic *ContainerEngine) SecretInspect(ctx context.Context, nameOrIDs []string) ([]*entities.SecretInfoReport, []error, error) { 26 allInspect := make([]*entities.SecretInfoReport, 0, len(nameOrIDs)) 27 errs := make([]error, 0, len(nameOrIDs)) 28 for _, name := range nameOrIDs { 29 inspected, err := secrets.Inspect(ic.ClientCtx, name, nil) 30 if err != nil { 31 errModel, ok := err.(*errorhandling.ErrorModel) 32 if !ok { 33 return nil, nil, err 34 } 35 if errModel.ResponseCode == 404 { 36 errs = append(errs, errors.Errorf("no such secret %q", name)) 37 continue 38 } 39 return nil, nil, err 40 } 41 allInspect = append(allInspect, inspected) 42 } 43 return allInspect, errs, nil 44 } 45 46 func (ic *ContainerEngine) SecretList(ctx context.Context, opts entities.SecretListRequest) ([]*entities.SecretInfoReport, error) { 47 options := new(secrets.ListOptions).WithFilters(opts.Filters) 48 secrs, _ := secrets.List(ic.ClientCtx, options) 49 return secrs, nil 50 } 51 52 func (ic *ContainerEngine) SecretRm(ctx context.Context, nameOrIDs []string, options entities.SecretRmOptions) ([]*entities.SecretRmReport, error) { 53 allRm := make([]*entities.SecretRmReport, 0, len(nameOrIDs)) 54 if options.All { 55 allSecrets, err := secrets.List(ic.ClientCtx, nil) 56 if err != nil { 57 return nil, err 58 } 59 for _, secret := range allSecrets { 60 allRm = append(allRm, &entities.SecretRmReport{ 61 Err: secrets.Remove(ic.ClientCtx, secret.ID), 62 ID: secret.ID, 63 }) 64 } 65 return allRm, nil 66 } 67 for _, name := range nameOrIDs { 68 secret, err := secrets.Inspect(ic.ClientCtx, name, nil) 69 if err != nil { 70 errModel, ok := err.(*errorhandling.ErrorModel) 71 if !ok { 72 return nil, err 73 } 74 if errModel.ResponseCode == 404 { 75 allRm = append(allRm, &entities.SecretRmReport{ 76 Err: errors.Errorf("no secret with name or id %q: no such secret ", name), 77 ID: "", 78 }) 79 continue 80 } 81 } 82 allRm = append(allRm, &entities.SecretRmReport{ 83 Err: secrets.Remove(ic.ClientCtx, name), 84 ID: secret.ID, 85 }) 86 } 87 return allRm, nil 88 }