From 03ffd775551d57ed75c33691e157471fe8dfc616 Mon Sep 17 00:00:00 2001 From: netbenix Date: Fri, 31 Dec 2021 17:18:12 +0100 Subject: [PATCH] refactor(Azure): Has now separate config struct --- StorageTypes/AzureFileStorage.go | 58 +++++++++++++++----------------- Tools/Config.go | 4 +++ 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/StorageTypes/AzureFileStorage.go b/StorageTypes/AzureFileStorage.go index 142be30..510384a 100644 --- a/StorageTypes/AzureFileStorage.go +++ b/StorageTypes/AzureFileStorage.go @@ -12,19 +12,18 @@ import ( "path/filepath" "scabiosa/Logging" "scabiosa/SQL" + "scabiosa/Tools" "strings" "time" ) -type AzureFileStorage struct{ - FileshareName string `json:"fileshareName"` - TargetDirectory string `json:"targetDirectory"` - StorageAccountName string `json:"storageAccountName"` - StorageAccountKey string `json:"storageAccountKey"` +type AzureFileStorage struct { + FileshareName string + StorageAccountName string + StorageAccountKey string } - -func (azure AzureFileStorage) upload(fileName string, backupName string, destinationPath string){ +func (azure AzureFileStorage) upload(fileName string, backupName string, destinationPath string) { logger := Logging.DetailedLogger("AzureFileStorage", "upload") file, err := os.Open(fileName) @@ -39,15 +38,11 @@ func (azure AzureFileStorage) upload(fileName string, backupName string, destina } credential, err := azfile.NewSharedKeyCredential(azure.StorageAccountName, azure.StorageAccountKey) - if err != nil{ + if err != nil { logger.Fatal(err) } - if destinationPath != ""{ - azure.TargetDirectory = destinationPath - } - - u, _ := url.Parse(fmt.Sprintf("https://%s.file.core.windows.net/%s/%s/%s", azure.StorageAccountName, azure.FileshareName ,azure.TargetDirectory, filepath.Base(fileName))) + u, _ := url.Parse(fmt.Sprintf("https://%s.file.core.windows.net/%s/%s/%s", azure.StorageAccountName, azure.FileshareName, destinationPath, filepath.Base(fileName))) fileURL := azfile.NewFileURL(*u, azfile.NewPipeline(credential, azfile.PipelineOptions{})) @@ -56,21 +51,20 @@ func (azure AzureFileStorage) upload(fileName string, backupName string, destina fmt.Printf("[%s] Starting upload to Azure File Share...\n", backupName, ".bak") SQL.NewLogEntry(SQL.GetSQLInstance(), uuid.New(), SQL.LogInfo, backupName, SQL.SQLStage_Upload, SQL.REMOTE_AZURE_FILE, "Starting upload.", time.Now()) - progressBar := pb.StartNew(int(fileSize.Size())) progressBar.Set(pb.Bytes, true) err = azfile.UploadFileToAzureFile(ctx, file, fileURL, azfile.UploadToAzureFileOptions{ - Parallelism: 3, - FileHTTPHeaders: azfile.FileHTTPHeaders{ - CacheControl: "no-transform", - }, - Progress: func(bytesTransferred int64){ - progressBar.SetCurrent(bytesTransferred) - //fmt.Printf("[%s] Uploaded %d of %d bytes.\n", strings.Trim(backupName, ".bak") ,bytesTransferred, fileSize.Size()) - }}) + Parallelism: 3, + FileHTTPHeaders: azfile.FileHTTPHeaders{ + CacheControl: "no-transform", + }, + Progress: func(bytesTransferred int64) { + progressBar.SetCurrent(bytesTransferred) + //fmt.Printf("[%s] Uploaded %d of %d bytes.\n", strings.Trim(backupName, ".bak") ,bytesTransferred, fileSize.Size()) + }}) - if err != nil{ + if err != nil { logger.Fatal(err) } progressBar.Finish() @@ -82,23 +76,27 @@ func readConfig() []byte { logger := Logging.DetailedLogger("AzureFileStorage", "readConfig") file, err := os.ReadFile("config/azure.json") - if err != nil{ + if err != nil { logger.Fatal(err) } return file } - func GetAzureStorage() AzureFileStorage { logger := Logging.DetailedLogger("AzureFileStorage", "GetAzureStorage") - var azureStorage AzureFileStorage + var azureConfig Tools.AzureConfig + var azureFileShare AzureFileStorage - jsonErr := json.Unmarshal(readConfig(), &azureStorage) - if jsonErr != nil{ + jsonErr := json.Unmarshal(readConfig(), &azureConfig) + if jsonErr != nil { logger.Fatal(jsonErr) } - return azureStorage -} \ No newline at end of file + azureFileShare.StorageAccountName = azureConfig.StorageAccountName + azureFileShare.StorageAccountKey = azureConfig.StorageAccountKey + azureFileShare.FileshareName = azureConfig.FileshareName + + return azureFileShare +} diff --git a/Tools/Config.go b/Tools/Config.go index 4e0721c..5b70658 100644 --- a/Tools/Config.go +++ b/Tools/Config.go @@ -16,6 +16,10 @@ type Config struct { DbUser string `json:"db-user"` DbPassword string `json:"db-password"` } `json:"sqlConfig"` +type AzureConfig struct { + FileshareName string `json:"fileshareName"` + StorageAccountName string `json:"storageAccountName"` + StorageAccountKey string `json:"storageAccountKey"` FolderToBackup []struct { BackupName string `json:"backupName"` FolderPath string `json:"folderPath"`