store: add image size to compose

When a use defines the image size for a compose this size is stored in
the compose struct so that the virtual image size can be returned by the
api instead of the file size of the image.
This commit is contained in:
Jacob Kozol 2020-01-28 14:48:58 +01:00 committed by Tom Gundersen
parent 8c19364b65
commit e30f40873d
3 changed files with 6 additions and 4 deletions

View file

@ -59,6 +59,7 @@ type Compose struct {
JobStarted time.Time `json:"job_started"` JobStarted time.Time `json:"job_started"`
JobFinished time.Time `json:"job_finished"` JobFinished time.Time `json:"job_finished"`
Image *Image `json:"image"` Image *Image `json:"image"`
Size uint64 `json:"size"`
} }
// A Job contains the information about a compose a worker needs to process it. // A Job contains the information about a compose a worker needs to process it.
@ -495,6 +496,7 @@ func (s *Store) PushCompose(composeID uuid.UUID, bp *blueprint.Blueprint, checks
OutputType: composeType, OutputType: composeType,
Targets: targets, Targets: targets,
JobCreated: time.Now(), JobCreated: time.Now(),
Size: size,
} }
return nil return nil
}) })

View file

@ -1481,7 +1481,7 @@ func (api *API) composeInfoHandler(writer http.ResponseWriter, request *http.Req
Deps Dependencies `json:"deps"` // empty for now Deps Dependencies `json:"deps"` // empty for now
ComposeType string `json:"compose_type"` ComposeType string `json:"compose_type"`
QueueStatus string `json:"queue_status"` QueueStatus string `json:"queue_status"`
ImageSize int64 `json:"image_size"` ImageSize uint64 `json:"image_size"`
Uploads []UploadResponse `json:"uploads,omitempty"` Uploads []UploadResponse `json:"uploads,omitempty"`
} }
@ -1493,7 +1493,7 @@ func (api *API) composeInfoHandler(writer http.ResponseWriter, request *http.Req
reply.ComposeType = compose.OutputType reply.ComposeType = compose.OutputType
reply.QueueStatus = compose.QueueStatus reply.QueueStatus = compose.QueueStatus
if compose.Image != nil { if compose.Image != nil {
reply.ImageSize = compose.Image.Size reply.ImageSize = compose.Size
} }
if isRequestVersionAtLeast(params, 1) { if isRequestVersionAtLeast(params, 1) {

View file

@ -12,7 +12,7 @@ type ComposeEntry struct {
Blueprint string `json:"blueprint"` Blueprint string `json:"blueprint"`
Version string `json:"version"` Version string `json:"version"`
ComposeType string `json:"compose_type"` ComposeType string `json:"compose_type"`
ImageSize int64 `json:"image_size"` ImageSize uint64 `json:"image_size"`
QueueStatus string `json:"queue_status"` QueueStatus string `json:"queue_status"`
JobCreated float64 `json:"job_created"` JobCreated float64 `json:"job_created"`
JobStarted float64 `json:"job_started,omitempty"` JobStarted float64 `json:"job_started,omitempty"`
@ -43,7 +43,7 @@ func composeToComposeEntry(id uuid.UUID, compose store.Compose, includeUploads b
case "FINISHED": case "FINISHED":
if compose.Image != nil { if compose.Image != nil {
composeEntry.ImageSize = compose.Image.Size composeEntry.ImageSize = compose.Size
} else { } else {
log.Printf("finished compose with id %s has nil image\n", id.String()) log.Printf("finished compose with id %s has nil image\n", id.String())
composeEntry.ImageSize = 0 composeEntry.ImageSize = 0