mirror of
https://github.com/podman-container-tools/podman.git
synced 2026-08-14 04:39:33 +00:00
This was implemented by containers/netavark #1369; this commit completes the process by wiring it into Podman. We now respect the CLI order for configured networks - if a user passes `--net net1,net2` we guarantee that net1 will be configured before net2. For containers created before this patch, we don't retain enough information to configure networks in CLI order, so we use alphabetical order instead to still guarantee consistency. No breaking API changes have been made, but we do add a new field to supplement the existing map to (optionally) provide ordering information. The Podman CLI will always pass this. Existing applications that do not will, again, receive] deterministic ordering based on an alphabetical sort of network names. This requires the latest version of Netavark to work properly. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
44 lines
1.4 KiB
Go
44 lines
1.4 KiB
Go
package docker
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
// UpdateContainerOptions specify parameters to the UpdateContainer function.
|
|
//
|
|
// See https://goo.gl/Y6fXUy for more details.
|
|
type UpdateContainerOptions struct {
|
|
BlkioWeight int `json:"BlkioWeight"`
|
|
CPUShares int `json:"CpuShares"`
|
|
CPUPeriod int `json:"CpuPeriod"`
|
|
CPURealtimePeriod int64 `json:"CpuRealtimePeriod"`
|
|
CPURealtimeRuntime int64 `json:"CpuRealtimeRuntime"`
|
|
CPUQuota int `json:"CpuQuota"`
|
|
CpusetCpus string `json:"CpusetCpus"`
|
|
CpusetMems string `json:"CpusetMems"`
|
|
Memory int `json:"Memory"`
|
|
MemorySwap int `json:"MemorySwap"`
|
|
MemoryReservation int `json:"MemoryReservation"`
|
|
// Deprecated: KernelMemory is deprecated as of API 1.42 and removed in API 1.52.
|
|
KernelMemory int `json:"KernelMemory"`
|
|
RestartPolicy RestartPolicy `json:"RestartPolicy"`
|
|
Context context.Context
|
|
}
|
|
|
|
// UpdateContainer updates the container at ID with the options
|
|
//
|
|
// See https://goo.gl/Y6fXUy for more details.
|
|
func (c *Client) UpdateContainer(id string, opts UpdateContainerOptions) error {
|
|
resp, err := c.do(http.MethodPost, fmt.Sprintf("/containers/%s/update", id), doOptions{
|
|
data: opts,
|
|
forceJSON: true,
|
|
context: opts.Context,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
return nil
|
|
}
|