X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=cmd%2Fbpa-restapi-agent%2Fapi%2Fimagehandler.go;h=5fbf8306895510de8dd004f7509487b89ef7604c;hb=de3d22a9939db1f5d9042743100b65a5f15fa671;hp=fa7f6975b0188dde9f1b1541beb9b352012b6fc9;hpb=316f4dbb4033cf3278880bd0661fbe8533621a40;p=icn.git diff --git a/cmd/bpa-restapi-agent/api/imagehandler.go b/cmd/bpa-restapi-agent/api/imagehandler.go index fa7f697..5fbf830 100644 --- a/cmd/bpa-restapi-agent/api/imagehandler.go +++ b/cmd/bpa-restapi-agent/api/imagehandler.go @@ -2,7 +2,6 @@ package api import ( "bytes" - //"encoding/base64" "encoding/json" "fmt" "io" @@ -13,6 +12,7 @@ import ( "strconv" image "bpa-restapi-agent/internal/app" + minioc "bpa-restapi-agent/internal/storage" "github.com/gorilla/mux" ) @@ -24,6 +24,8 @@ type imageHandler struct { // We will set this variable with a mock interface for testing client image.ImageManager dirPath string + minioI minioc.MinIOInfo + storeName string // as minio client bucketname } // CreateHandler handles creation of the image entry in the database @@ -95,7 +97,6 @@ func (h imageHandler) createHandler(w http.ResponseWriter, r *http.Request) { } } - // getHandler handles GET operations on a particular name // Returns an Image func (h imageHandler) getHandler(w http.ResponseWriter, r *http.Request) { @@ -128,6 +129,8 @@ func (h imageHandler) deleteHandler(w http.ResponseWriter, r *http.Request) { return } + h.minioI.DeleteImage(h.storeName, imageName) + w.WriteHeader(http.StatusNoContent) } @@ -205,6 +208,7 @@ func (h imageHandler) patchHandler(w http.ResponseWriter, r *http.Request) { e := "Upload already completed" w.WriteHeader(http.StatusUnprocessableEntity) w.Write([]byte(e)) + log.Println("Upload already completed") return } off, err := strconv.Atoi(r.Header.Get("Upload-Offset")) @@ -215,9 +219,10 @@ func (h imageHandler) patchHandler(w http.ResponseWriter, r *http.Request) { } log.Printf("Upload offset %d\n", off) if *file.ImageOffset != off { - e := fmt.Sprintf("Expected Offset %d got offset %d", *file.ImageOffset, off) + e := fmt.Sprintf("Expected Offset %d, actual offset %d", *file.ImageOffset, off) w.WriteHeader(http.StatusConflict) w.Write([]byte(e)) + log.Printf("Expected Offset:%d doesn't match got offset:%d\n", *file.ImageOffset, off) return } @@ -250,7 +255,7 @@ func (h imageHandler) patchHandler(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) return } - f, err := os.OpenFile(fp, os.O_APPEND|os.O_WRONLY, 0644) + f, err := os.OpenFile(fp, os.O_WRONLY, 0644) if err != nil { log.Printf("unable to open file %s\n", err) w.WriteHeader(http.StatusInternalServerError) @@ -264,6 +269,16 @@ func (h imageHandler) patchHandler(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) return } + + log.Printf("Start to Patch image, bucket: %s, image: %s, dirpath: %s, offset: %d, n: %d\n", + h.storeName, imageName, fp, *file.ImageOffset, n) + uploadbytes, err := h.minioI.PatchImage(h.storeName, imageName, fp, int64(*file.ImageOffset), int64(n)) + if err != nil || uploadbytes == 0 { + log.Printf("MinIO upload with offset %d failed: %s", *file.ImageOffset, err) + w.WriteHeader(http.StatusInternalServerError) + return + } + log.Println("number of bytes written ", n) no := *file.ImageOffset + n file.ImageOffset = &no