summaryrefslogtreecommitdiff
path: root/pkg/domain/entities/manifest.go
blob: 126b76c628ebe5d1bfbf94906df2d5ca316e40a7 (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
package entities

import "github.com/containers/image/v5/types"

// ManifestCreateOptions provides model for creating manifest
type ManifestCreateOptions struct {
	All bool `schema:"all"`
}

// ManifestAddOptions provides model for adding digests to manifest list
//
// swagger:model
type ManifestAddOptions struct {
	ManifestAnnotateOptions
	// True when operating on a list to include all images
	All bool `json:"all" schema:"all"`
	// authfile to use when pushing manifest list
	Authfile string `json:"-" schema:"-"`
	// Home directory for certificates when pushing a manifest list
	CertDir string `json:"-" schema:"-"`
	// Password to authenticate to registry when pushing manifest list
	Password string `json:"-" schema:"-"`
	// Should TLS registry certificate be verified?
	SkipTLSVerify types.OptionalBool `json:"-" schema:"-"`
	// Username to authenticate to registry when pushing manifest list
	Username string `json:"-" schema:"-"`
	// Images is an optional list of images to add to manifest list
	Images []string `json:"images" schema:"images"`
}

// ManifestAnnotateOptions provides model for annotating manifest list
type ManifestAnnotateOptions struct {
	// Annotation to add to manifest list
	Annotation []string `json:"annotation" schema:"annotation"`
	// Arch overrides the architecture for the image
	Arch string `json:"arch" schema:"arch"`
	// Feature list for the image
	Features []string `json:"features" schema:"features"`
	// OS overrides the operating system for the image
	OS string `json:"os" schema:"os"`
	// OS features for the image
	OSFeatures []string `json:"os_features" schema:"os_features"`
	// OSVersion overrides the operating system for the image
	OSVersion string `json:"os_version" schema:"os_version"`
	// Variant for the image
	Variant string `json:"variant" schema:"variant"`
}

// ManifestModifyOptions provides the model for mutating a manifest
//
// swagger 2.0 does not support oneOf for schema validation.
//
// Operation "update" uses all fields.
// Operation "remove" uses fields: Operation and Images
// Operation "annotate" uses fields: Operation and Annotations
//
// swagger:model
type ManifestModifyOptions struct {
	Operation string `json:"operation" schema:"operation"` // Valid values: update, remove, annotate
	ManifestAddOptions
	ManifestRemoveOptions
}

// ManifestPushReport provides the model for the pushed manifest
//
// swagger:model
type ManifestPushReport struct {
	// ID of the pushed manifest
	ID string `json:"Id"`
	// Stream used to provide push progress
	Stream string `json:"stream,omitempty"`
	// Error contains text of errors from pushing
	Error string `json:"error,omitempty"`
}

// ManifestRemoveOptions provides the model for removing digests from a manifest
//
// swagger:model
type ManifestRemoveOptions struct {
}

// ManifestRemoveReport provides the model for the removed manifest
//
// swagger:model
type ManifestRemoveReport struct {
	// Deleted manifest list.
	Deleted []string `json:",omitempty"`
	// Untagged images. Can be longer than Deleted.
	Untagged []string `json:",omitempty"`
	// Errors associated with operation
	Errors []string `json:",omitempty"`
	// ExitCode describes the exit codes as described in the `podman rmi`
	// man page.
	ExitCode int
}

// ManifestModifyReport provides the model for removed digests and changed manifest
//
// swagger:model
type ManifestModifyReport struct {
	// Manifest List ID
	ID string `json:"Id"`
	// Images to removed from manifest list, otherwise not provided.
	Images []string `json:"images,omitempty" schema:"images"`
	// Errors associated with operation
	Errors []error `json:"errors,omitempty"`
}