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  }