github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/bindings/generate/generate.go (about)

     1  package generate
     2  
     3  import (
     4  	"context"
     5  	"net/http"
     6  	"net/url"
     7  	"strconv"
     8  
     9  	"github.com/containers/podman/v2/pkg/bindings"
    10  	"github.com/containers/podman/v2/pkg/domain/entities"
    11  )
    12  
    13  func Systemd(ctx context.Context, nameOrID string, options entities.GenerateSystemdOptions) (*entities.GenerateSystemdReport, error) {
    14  	conn, err := bindings.GetClient(ctx)
    15  	if err != nil {
    16  		return nil, err
    17  	}
    18  	params := url.Values{}
    19  
    20  	params.Set("useName", strconv.FormatBool(options.Name))
    21  	params.Set("new", strconv.FormatBool(options.New))
    22  	if options.RestartPolicy != "" {
    23  		params.Set("restartPolicy", options.RestartPolicy)
    24  	}
    25  	if options.StopTimeout != nil {
    26  		params.Set("stopTimeout", strconv.FormatUint(uint64(*options.StopTimeout), 10))
    27  	}
    28  	params.Set("containerPrefix", options.ContainerPrefix)
    29  	params.Set("podPrefix", options.PodPrefix)
    30  	params.Set("separator", options.Separator)
    31  
    32  	response, err := conn.DoRequest(nil, http.MethodGet, "/generate/%s/systemd", params, nil, nameOrID)
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  	report := &entities.GenerateSystemdReport{}
    37  	return report, response.Process(&report.Units)
    38  }
    39  
    40  func Kube(ctx context.Context, nameOrID string, options entities.GenerateKubeOptions) (*entities.GenerateKubeReport, error) {
    41  	conn, err := bindings.GetClient(ctx)
    42  	if err != nil {
    43  		return nil, err
    44  	}
    45  	params := url.Values{}
    46  	params.Set("service", strconv.FormatBool(options.Service))
    47  
    48  	response, err := conn.DoRequest(nil, http.MethodGet, "/generate/%s/kube", params, nil, nameOrID)
    49  	if err != nil {
    50  		return nil, err
    51  	}
    52  
    53  	if response.StatusCode == http.StatusOK {
    54  		return &entities.GenerateKubeReport{Reader: response.Body}, nil
    55  	}
    56  
    57  	// Unpack the error.
    58  	return nil, response.Process(nil)
    59  }