podman
40 строк · 966.0 Байт
1package docker
2
3import (
4"encoding/json"
5"errors"
6"fmt"
7"net/http"
8)
9
10// TopResult represents the list of processes running in a container, as
11// returned by /containers/<id>/top.
12//
13// See https://goo.gl/FLwpPl for more details.
14type TopResult struct {
15Titles []string
16Processes [][]string
17}
18
19// TopContainer returns processes running inside a container
20//
21// See https://goo.gl/FLwpPl for more details.
22func (c *Client) TopContainer(id string, psArgs string) (TopResult, error) {
23var args string
24var result TopResult
25if psArgs != "" {
26args = fmt.Sprintf("?ps_args=%s", psArgs)
27}
28path := fmt.Sprintf("/containers/%s/top%s", id, args)
29resp, err := c.do(http.MethodGet, path, doOptions{})
30if err != nil {
31var e *Error
32if errors.As(err, &e) && e.Status == http.StatusNotFound {
33return result, &NoSuchContainer{ID: id}
34}
35return result, err
36}
37defer resp.Body.Close()
38err = json.NewDecoder(resp.Body).Decode(&result)
39return result, err
40}
41