summaryrefslogtreecommitdiff
path: root/pkg/api/handlers
diff options
context:
space:
mode:
authorBrent Baude <bbaude@redhat.com>2020-06-16 15:09:20 -0500
committerBrent Baude <bbaude@redhat.com>2020-06-17 09:01:43 -0500
commit65c3a56602f50856c6d4b8df212f046d53ba52c1 (patch)
tree926069a574c1f2e61d391e60c8ee1cf106e1af73 /pkg/api/handlers
parent38391ed25fdb1cc53b70a75ee4fbe7ea0fa782c3 (diff)
downloadpodman-65c3a56602f50856c6d4b8df212f046d53ba52c1.tar.gz
podman-65c3a56602f50856c6d4b8df212f046d53ba52c1.tar.bz2
podman-65c3a56602f50856c6d4b8df212f046d53ba52c1.zip
fix misc remote build issues
address problem when multiple -t were sent. and rework remote build's tarball if a context dir is given other than ".". Fixes: #6578 Fixes: #6577 Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'pkg/api/handlers')
-rw-r--r--pkg/api/handlers/compat/images_build.go73
1 files changed, 36 insertions, 37 deletions
diff --git a/pkg/api/handlers/compat/images_build.go b/pkg/api/handlers/compat/images_build.go
index 913994f46..f967acf32 100644
--- a/pkg/api/handlers/compat/images_build.go
+++ b/pkg/api/handlers/compat/images_build.go
@@ -48,34 +48,34 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
defer os.RemoveAll(anchorDir)
query := struct {
- Dockerfile string `schema:"dockerfile"`
- Tag string `schema:"t"`
- ExtraHosts string `schema:"extrahosts"`
- Remote string `schema:"remote"`
- Quiet bool `schema:"q"`
- NoCache bool `schema:"nocache"`
- CacheFrom string `schema:"cachefrom"`
- Pull bool `schema:"pull"`
- Rm bool `schema:"rm"`
- ForceRm bool `schema:"forcerm"`
- Memory int64 `schema:"memory"`
- MemSwap int64 `schema:"memswap"`
- CpuShares uint64 `schema:"cpushares"` //nolint
- CpuSetCpus string `schema:"cpusetcpus"` //nolint
- CpuPeriod uint64 `schema:"cpuperiod"` //nolint
- CpuQuota int64 `schema:"cpuquota"` //nolint
- BuildArgs string `schema:"buildargs"`
- ShmSize int `schema:"shmsize"`
- Squash bool `schema:"squash"`
- Labels string `schema:"labels"`
- NetworkMode string `schema:"networkmode"`
- Platform string `schema:"platform"`
- Target string `schema:"target"`
- Outputs string `schema:"outputs"`
- Registry string `schema:"registry"`
+ Dockerfile string `schema:"dockerfile"`
+ Tag []string `schema:"t"`
+ ExtraHosts string `schema:"extrahosts"`
+ Remote string `schema:"remote"`
+ Quiet bool `schema:"q"`
+ NoCache bool `schema:"nocache"`
+ CacheFrom string `schema:"cachefrom"`
+ Pull bool `schema:"pull"`
+ Rm bool `schema:"rm"`
+ ForceRm bool `schema:"forcerm"`
+ Memory int64 `schema:"memory"`
+ MemSwap int64 `schema:"memswap"`
+ CpuShares uint64 `schema:"cpushares"` //nolint
+ CpuSetCpus string `schema:"cpusetcpus"` //nolint
+ CpuPeriod uint64 `schema:"cpuperiod"` //nolint
+ CpuQuota int64 `schema:"cpuquota"` //nolint
+ BuildArgs string `schema:"buildargs"`
+ ShmSize int `schema:"shmsize"`
+ Squash bool `schema:"squash"`
+ Labels string `schema:"labels"`
+ NetworkMode string `schema:"networkmode"`
+ Platform string `schema:"platform"`
+ Target string `schema:"target"`
+ Outputs string `schema:"outputs"`
+ Registry string `schema:"registry"`
}{
Dockerfile: "Dockerfile",
- Tag: "",
+ Tag: []string{},
ExtraHosts: "",
Remote: "",
Quiet: false,
@@ -107,20 +107,19 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
}
var (
- // Tag is the name with optional tag...
- name = query.Tag
- tag = "latest"
+ output string
+ additionalNames []string
)
- if strings.Contains(query.Tag, ":") {
- tokens := strings.SplitN(query.Tag, ":", 2)
- name = tokens[0]
- tag = tokens[1]
+ if len(query.Tag) > 0 {
+ output = query.Tag[0]
+ }
+ if len(query.Tag) > 1 {
+ additionalNames = query.Tag[1:]
}
if _, found := r.URL.Query()["target"]; found {
- name = query.Target
+ output = query.Target
}
-
var buildArgs = map[string]string{}
if _, found := r.URL.Query()["buildargs"]; found {
if err := json.Unmarshal([]byte(query.BuildArgs), &buildArgs); err != nil {
@@ -168,8 +167,8 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
TransientMounts: nil,
Compression: archive.Gzip,
Args: buildArgs,
- Output: name,
- AdditionalTags: []string{tag},
+ Output: output,
+ AdditionalTags: additionalNames,
Log: func(format string, args ...interface{}) {
buildEvents = append(buildEvents, fmt.Sprintf(format, args...))
},