podman

Форк
0
72 строки · 1.7 Кб
1
// Copyright 2016 go-dockerclient authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4

5
package docker
6

7
import (
8
	"context"
9
	"encoding/json"
10
	"errors"
11
	"net/http"
12

13
	"github.com/docker/docker/api/types/swarm"
14
)
15

16
// NoSuchTask is the error returned when a given task does not exist.
17
type NoSuchTask struct {
18
	ID  string
19
	Err error
20
}
21

22
func (err *NoSuchTask) Error() string {
23
	if err.Err != nil {
24
		return err.Err.Error()
25
	}
26
	return "No such task: " + err.ID
27
}
28

29
// ListTasksOptions specify parameters to the ListTasks function.
30
//
31
// See http://goo.gl/rByLzw for more details.
32
type ListTasksOptions struct {
33
	Filters map[string][]string
34
	Context context.Context
35
}
36

37
// ListTasks returns a slice of tasks matching the given criteria.
38
//
39
// See http://goo.gl/rByLzw for more details.
40
func (c *Client) ListTasks(opts ListTasksOptions) ([]swarm.Task, error) {
41
	path := "/tasks?" + queryString(opts)
42
	resp, err := c.do(http.MethodGet, path, doOptions{context: opts.Context})
43
	if err != nil {
44
		return nil, err
45
	}
46
	defer resp.Body.Close()
47
	var tasks []swarm.Task
48
	if err := json.NewDecoder(resp.Body).Decode(&tasks); err != nil {
49
		return nil, err
50
	}
51
	return tasks, nil
52
}
53

54
// InspectTask returns information about a task by its ID.
55
//
56
// See http://goo.gl/kyziuq for more details.
57
func (c *Client) InspectTask(id string) (*swarm.Task, error) {
58
	resp, err := c.do(http.MethodGet, "/tasks/"+id, doOptions{})
59
	if err != nil {
60
		var e *Error
61
		if errors.As(err, &e) && e.Status == http.StatusNotFound {
62
			return nil, &NoSuchTask{ID: id}
63
		}
64
		return nil, err
65
	}
66
	defer resp.Body.Close()
67
	var task swarm.Task
68
	if err := json.NewDecoder(resp.Body).Decode(&task); err != nil {
69
		return nil, err
70
	}
71
	return &task, nil
72
}
73

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.