github.com/containers/podman/v4@v4.9.4/pkg/bindings/secrets/secrets.go (about)

     1  package secrets
     2  
     3  import (
     4  	"context"
     5  	"io"
     6  	"net/http"
     7  
     8  	"github.com/containers/podman/v4/pkg/bindings"
     9  	"github.com/containers/podman/v4/pkg/domain/entities"
    10  )
    11  
    12  // List returns information about existing secrets in the form of a slice.
    13  func List(ctx context.Context, options *ListOptions) ([]*entities.SecretInfoReport, error) {
    14  	var (
    15  		secrs []*entities.SecretInfoReport
    16  	)
    17  	conn, err := bindings.GetClient(ctx)
    18  	if err != nil {
    19  		return nil, err
    20  	}
    21  	params, err := options.ToParams()
    22  	if err != nil {
    23  		return nil, err
    24  	}
    25  	response, err := conn.DoRequest(ctx, nil, http.MethodGet, "/secrets/json", params, nil)
    26  	if err != nil {
    27  		return secrs, err
    28  	}
    29  	defer response.Body.Close()
    30  
    31  	return secrs, response.Process(&secrs)
    32  }
    33  
    34  // Inspect returns low-level information about a secret.
    35  func Inspect(ctx context.Context, nameOrID string, options *InspectOptions) (*entities.SecretInfoReport, error) {
    36  	if options == nil {
    37  		options = new(InspectOptions)
    38  	}
    39  	var (
    40  		inspect *entities.SecretInfoReport
    41  	)
    42  	conn, err := bindings.GetClient(ctx)
    43  	if err != nil {
    44  		return nil, err
    45  	}
    46  	params, err := options.ToParams()
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  	response, err := conn.DoRequest(ctx, nil, http.MethodGet, "/secrets/%s/json", params, nil, nameOrID)
    51  	if err != nil {
    52  		return inspect, err
    53  	}
    54  	defer response.Body.Close()
    55  	return inspect, response.Process(&inspect)
    56  }
    57  
    58  // Remove removes a secret from storage
    59  func Remove(ctx context.Context, nameOrID string) error {
    60  	conn, err := bindings.GetClient(ctx)
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	response, err := conn.DoRequest(ctx, nil, http.MethodDelete, "/secrets/%s", nil, nil, nameOrID)
    66  	if err != nil {
    67  		return err
    68  	}
    69  	defer response.Body.Close()
    70  
    71  	return response.Process(nil)
    72  }
    73  
    74  // Create creates a secret given some data
    75  func Create(ctx context.Context, reader io.Reader, options *CreateOptions) (*entities.SecretCreateReport, error) {
    76  	var (
    77  		create *entities.SecretCreateReport
    78  	)
    79  	conn, err := bindings.GetClient(ctx)
    80  	if err != nil {
    81  		return nil, err
    82  	}
    83  
    84  	params, err := options.ToParams()
    85  	if err != nil {
    86  		return nil, err
    87  	}
    88  
    89  	response, err := conn.DoRequest(ctx, reader, http.MethodPost, "/secrets/create", params, nil)
    90  	if err != nil {
    91  		return nil, err
    92  	}
    93  	defer response.Body.Close()
    94  
    95  	return create, response.Process(&create)
    96  }
    97  
    98  func Exists(ctx context.Context, nameOrID string) (bool, error) {
    99  	conn, err := bindings.GetClient(ctx)
   100  	if err != nil {
   101  		return false, err
   102  	}
   103  	response, err := conn.DoRequest(ctx, nil, http.MethodGet, "/secrets/%s/exists", nil, nil, nameOrID)
   104  	if err != nil {
   105  		return false, err
   106  	}
   107  	defer response.Body.Close()
   108  
   109  	return response.IsSuccess(), nil
   110  }