From 7838debadf24abb5a40b950096644e176940c2e9 Mon Sep 17 00:00:00 2001 From: Ankit Chawla Date: Tue, 12 Jul 2022 11:56:25 +0530 Subject: [PATCH] Added fix to retrieve correct s3 urls (#2465) * Added fix to retrieve correct s3 urls * Fixes to S3 url * Squashing commits * Fixing if conditions for storagetype in geturl --- pkg/fission-cli/cmd/archive/geturl.go | 15 +++++++-------- pkg/storagesvc/storagesvc.go | 14 +++++++++----- pkg/storagesvc/stowClient.go | 13 ------------- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/pkg/fission-cli/cmd/archive/geturl.go b/pkg/fission-cli/cmd/archive/geturl.go index 906a1566..c993ab13 100644 --- a/pkg/fission-cli/cmd/archive/geturl.go +++ b/pkg/fission-cli/cmd/archive/geturl.go @@ -61,15 +61,12 @@ func (opts *GetURLSubCommand) do(input cli.Input) error { defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - return fmt.Errorf("Error getting URL. Exited with Status: %v", resp.Status) + return fmt.Errorf("Error getting URL. Exited with Status: %s", resp.Status) } - archiveURL, err := url.Parse(resp.Header.Get("X-FISSION-ARCHIVEURL")) - if err != nil { - return err - } + storageType := resp.Header.Get("X-FISSION-STORAGETYPE") - if archiveURL.Scheme == "file" { + if storageType == "local" { storageSvc, err := opts.Client().V1().Misc().GetSvcURL("application=fission-storage") if err != nil { return err @@ -77,8 +74,10 @@ func (opts *GetURLSubCommand) do(input cli.Input) error { storagesvcURL := "http://" + storageSvc client := storagesvcClient.MakeClient(storagesvcURL) fmt.Printf("URL: %s", client.GetUrl(archiveID)) - } else { - fmt.Printf("URL: %s", archiveURL.String()) + } else if storageType == "s3" { + storageBucket := resp.Header.Get("X-FISSION-BUCKET") + s3url := fmt.Sprintf("https://%s.s3.amazonaws.com/%s", storageBucket, archiveID) + fmt.Printf("URL: %s", s3url) } return nil diff --git a/pkg/storagesvc/storagesvc.go b/pkg/storagesvc/storagesvc.go index 18fc9160..301ea5c2 100644 --- a/pkg/storagesvc/storagesvc.go +++ b/pkg/storagesvc/storagesvc.go @@ -231,19 +231,23 @@ func (ss *StorageService) downloadHandler(w http.ResponseWriter, r *http.Request func (ss *StorageService) infoHandler(w http.ResponseWriter, r *http.Request) { - fileId, err := ss.getIdFromRequest(r) + fileID, err := ss.getIdFromRequest(r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } - itemURL, err := ss.storageClient.getURL(fileId) + _, err = ss.storageClient.container.Item(fileID) if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) + http.Error(w, err.Error(), http.StatusNotFound) + return } - w.Header().Add("X-FISSION-ARCHIVEURL", itemURL.String()) - + storageType := ss.storageClient.config.storage.getStorageType() + if storageType == StorageTypeS3 { + w.Header().Add("X-FISSION-BUCKET", ss.storageClient.config.storage.getContainerName()) + } + w.Header().Add("X-FISSION-STORAGETYPE", string(storageType)) } func (ss *StorageService) healthHandler(w http.ResponseWriter, r *http.Request) { diff --git a/pkg/storagesvc/stowClient.go b/pkg/storagesvc/stowClient.go index ad5c2ce9..aa395573 100644 --- a/pkg/storagesvc/stowClient.go +++ b/pkg/storagesvc/stowClient.go @@ -20,7 +20,6 @@ import ( "fmt" "io" "mime/multipart" - "net/url" "os" "strings" "time" @@ -183,18 +182,6 @@ func (client *StowClient) removeFileByID(itemID string) error { return client.container.RemoveItem(itemID) } -func (client *StowClient) getURL(itemID string) (*url.URL, error) { - item, err := client.container.Item(itemID) - if err != nil { - if err == stow.ErrNotFound { - return nil, ErrNotFound - } else { - return nil, ErrRetrievingItem - } - } - return item.URL(), nil -} - func (client *StowClient) getFileSize(itemID string) (int64, error) { item, err := client.container.Item(itemID) if err != nil {