summaryrefslogtreecommitdiff
path: root/pkg/domain/entities/images.go
blob: c84ed53510dd0d8dd0600d302db9335050248d6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package entities

import (
	"net/url"

	"github.com/containers/image/v5/manifest"
	docker "github.com/docker/docker/api/types"
	"github.com/docker/docker/api/types/container"
	"github.com/opencontainers/go-digest"
	v1 "github.com/opencontainers/image-spec/specs-go/v1"
)

type Image struct {
	IdOrNamed
	ID              string                 `json:"Id"`
	RepoTags        []string               `json:",omitempty"`
	RepoDigests     []string               `json:",omitempty"`
	Parent          string                 `json:",omitempty"`
	Comment         string                 `json:",omitempty"`
	Created         string                 `json:",omitempty"`
	Container       string                 `json:",omitempty"`
	ContainerConfig *container.Config      `json:",omitempty"`
	DockerVersion   string                 `json:",omitempty"`
	Author          string                 `json:",omitempty"`
	Config          *container.Config      `json:",omitempty"`
	Architecture    string                 `json:",omitempty"`
	Variant         string                 `json:",omitempty"`
	Os              string                 `json:",omitempty"`
	OsVersion       string                 `json:",omitempty"`
	Size            int64                  `json:",omitempty"`
	VirtualSize     int64                  `json:",omitempty"`
	GraphDriver     docker.GraphDriverData `json:",omitempty"`
	RootFS          docker.RootFS          `json:",omitempty"`
	Metadata        docker.ImageMetadata   `json:",omitempty"`

	// Podman extensions
	Digest        digest.Digest                 `json:",omitempty"`
	PodmanVersion string                        `json:",omitempty"`
	ManifestType  string                        `json:",omitempty"`
	User          string                        `json:",omitempty"`
	History       []v1.History                  `json:",omitempty"`
	NamesHistory  []string                      `json:",omitempty"`
	HealthCheck   *manifest.Schema2HealthConfig `json:",omitempty"`
}

func (i *Image) Id() string {
	return i.ID
}

type ImageSummary struct {
	Identifier
	ID          string   `json:"Id"`
	ParentId    string   `json:",omitempty"`
	RepoTags    []string `json:",omitempty"`
	Created     int      `json:",omitempty"`
	Size        int      `json:",omitempty"`
	SharedSize  int      `json:",omitempty"`
	VirtualSize int      `json:",omitempty"`
	Labels      string   `json:",omitempty"`
	Containers  int      `json:",omitempty"`
	ReadOnly    bool     `json:",omitempty"`
	Dangling    bool     `json:",omitempty"`

	// Podman extensions
	Digest       digest.Digest `json:",omitempty"`
	ConfigDigest digest.Digest `json:",omitempty"`
}

func (i *ImageSummary) Id() string {
	return i.ID
}

func (i *ImageSummary) IsReadOnly() bool {
	return i.ReadOnly
}

func (i *ImageSummary) IsDangling() bool {
	return i.Dangling
}

type ImageOptions struct {
	All       bool
	Digests   bool
	Filter    []string
	Format    string
	Noheading bool
	NoTrunc   bool
	Quiet     bool
	Sort      string
	History   bool
}

type ImageDeleteOptions struct {
	Force bool
}

// ImageDeleteResponse is the response for removing an image from storage and containers
// what was untagged vs actually removed
type ImageDeleteReport struct {
	Untagged []string `json:"untagged"`
	Deleted  string   `json:"deleted"`
}

type ImageHistoryOptions struct{}

type ImageHistoryLayer struct {
	ID        string   `json:"Id"`
	Created   int64    `json:"Created,omitempty"`
	CreatedBy string   `json:",omitempty"`
	Tags      []string `json:",omitempty"`
	Size      int64    `json:",omitempty"`
	Comment   string   `json:",omitempty"`
}

type ImageHistoryReport struct {
	Layers []ImageHistoryLayer
}

type ImageInspectOptions struct {
	TypeObject string `json:",omitempty"`
	Format     string `json:",omitempty"`
	Size       bool   `json:",omitempty"`
	Latest     bool   `json:",omitempty"`
}

type ImageListOptions struct {
	All       bool       `json:"all" schema:"all"`
	Digests   bool       `json:"digests" schema:"digests"`
	Filter    []string   `json:",omitempty"`
	Filters   url.Values `json:"filters" schema:"filters"`
	Format    string     `json:",omitempty"`
	History   bool       `json:",omitempty"`
	Noheading bool       `json:",omitempty"`
	NoTrunc   bool       `json:",omitempty"`
	Quiet     bool       `json:",omitempty"`
	Sort      string     `json:",omitempty"`
}

type ImageListReport struct {
	Images []ImageSummary
}

type ImagePruneOptions struct {
	All    bool
	Filter ImageFilter
}

type ImagePruneReport struct {
	Report Report
	Size   int64
}