refactor(Azure): Has now separate config struct

This commit is contained in:
netbenix 2021-12-31 17:18:12 +01:00
parent aeefe112e0
commit 03ffd77555
2 changed files with 32 additions and 30 deletions

View file

@ -12,19 +12,18 @@ import (
"path/filepath" "path/filepath"
"scabiosa/Logging" "scabiosa/Logging"
"scabiosa/SQL" "scabiosa/SQL"
"scabiosa/Tools"
"strings" "strings"
"time" "time"
) )
type AzureFileStorage struct{ type AzureFileStorage struct {
FileshareName string `json:"fileshareName"` FileshareName string
TargetDirectory string `json:"targetDirectory"` StorageAccountName string
StorageAccountName string `json:"storageAccountName"` StorageAccountKey string
StorageAccountKey string `json:"storageAccountKey"`
} }
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") logger := Logging.DetailedLogger("AzureFileStorage", "upload")
file, err := os.Open(fileName) 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) credential, err := azfile.NewSharedKeyCredential(azure.StorageAccountName, azure.StorageAccountKey)
if err != nil{ if err != nil {
logger.Fatal(err) logger.Fatal(err)
} }
if destinationPath != ""{ u, _ := url.Parse(fmt.Sprintf("https://%s.file.core.windows.net/%s/%s/%s", azure.StorageAccountName, azure.FileshareName, destinationPath, filepath.Base(fileName)))
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)))
fileURL := azfile.NewFileURL(*u, azfile.NewPipeline(credential, azfile.PipelineOptions{})) fileURL := azfile.NewFileURL(*u, azfile.NewPipeline(credential, azfile.PipelineOptions{}))
@ -56,7 +51,6 @@ func (azure AzureFileStorage) upload(fileName string, backupName string, destina
fmt.Printf("[%s] Starting upload to Azure File Share...\n", backupName, ".bak") 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()) 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 := pb.StartNew(int(fileSize.Size()))
progressBar.Set(pb.Bytes, true) progressBar.Set(pb.Bytes, true)
err = azfile.UploadFileToAzureFile(ctx, file, fileURL, err = azfile.UploadFileToAzureFile(ctx, file, fileURL,
@ -65,12 +59,12 @@ func (azure AzureFileStorage) upload(fileName string, backupName string, destina
FileHTTPHeaders: azfile.FileHTTPHeaders{ FileHTTPHeaders: azfile.FileHTTPHeaders{
CacheControl: "no-transform", CacheControl: "no-transform",
}, },
Progress: func(bytesTransferred int64){ Progress: func(bytesTransferred int64) {
progressBar.SetCurrent(bytesTransferred) progressBar.SetCurrent(bytesTransferred)
//fmt.Printf("[%s] Uploaded %d of %d bytes.\n", strings.Trim(backupName, ".bak") ,bytesTransferred, fileSize.Size()) //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) logger.Fatal(err)
} }
progressBar.Finish() progressBar.Finish()
@ -82,23 +76,27 @@ func readConfig() []byte {
logger := Logging.DetailedLogger("AzureFileStorage", "readConfig") logger := Logging.DetailedLogger("AzureFileStorage", "readConfig")
file, err := os.ReadFile("config/azure.json") file, err := os.ReadFile("config/azure.json")
if err != nil{ if err != nil {
logger.Fatal(err) logger.Fatal(err)
} }
return file return file
} }
func GetAzureStorage() AzureFileStorage { func GetAzureStorage() AzureFileStorage {
logger := Logging.DetailedLogger("AzureFileStorage", "GetAzureStorage") logger := Logging.DetailedLogger("AzureFileStorage", "GetAzureStorage")
var azureStorage AzureFileStorage var azureConfig Tools.AzureConfig
var azureFileShare AzureFileStorage
jsonErr := json.Unmarshal(readConfig(), &azureStorage) jsonErr := json.Unmarshal(readConfig(), &azureConfig)
if jsonErr != nil{ if jsonErr != nil {
logger.Fatal(jsonErr) logger.Fatal(jsonErr)
} }
return azureStorage azureFileShare.StorageAccountName = azureConfig.StorageAccountName
azureFileShare.StorageAccountKey = azureConfig.StorageAccountKey
azureFileShare.FileshareName = azureConfig.FileshareName
return azureFileShare
} }

View file

@ -16,6 +16,10 @@ type Config struct {
DbUser string `json:"db-user"` DbUser string `json:"db-user"`
DbPassword string `json:"db-password"` DbPassword string `json:"db-password"`
} `json:"sqlConfig"` } `json:"sqlConfig"`
type AzureConfig struct {
FileshareName string `json:"fileshareName"`
StorageAccountName string `json:"storageAccountName"`
StorageAccountKey string `json:"storageAccountKey"`
FolderToBackup []struct { FolderToBackup []struct {
BackupName string `json:"backupName"` BackupName string `json:"backupName"`
FolderPath string `json:"folderPath"` FolderPath string `json:"folderPath"`