podman
41 строка · 1.0 Кб
1package containers2
3import (4"context"5"net/http"6"net/url"7"strconv"8"strings"9
10"github.com/containers/podman/v5/pkg/bindings"11"github.com/containers/podman/v5/pkg/domain/entities/types"12jsoniter "github.com/json-iterator/go"13)
14
15func Update(ctx context.Context, options *types.ContainerUpdateOptions) (string, error) {16conn, err := bindings.GetClient(ctx)17if err != nil {18return "", err19}20
21params := url.Values{}22if options.Specgen.RestartPolicy != "" {23params.Set("restartPolicy", options.Specgen.RestartPolicy)24if options.Specgen.RestartRetries != nil {25params.Set("restartRetries", strconv.Itoa(int(*options.Specgen.RestartRetries)))26}27}28
29resources, err := jsoniter.MarshalToString(options.Specgen.ResourceLimits)30if err != nil {31return "", err32}33stringReader := strings.NewReader(resources)34response, err := conn.DoRequest(ctx, stringReader, http.MethodPost, "/containers/%s/update", params, nil, options.NameOrID)35if err != nil {36return "", err37}38defer response.Body.Close()39
40return options.NameOrID, response.Process(nil)41}
42