debian-forge-composer/cmd/osbuild-upload-azure/main.go
Ondřej Budai 4f66ab5d7c upload/azure: rename Image to PageBlob
The UploadImage method doesn't actually create an image. It creates a Page
Blob. Blob is something like S3 object but in the Azure terminology. Page
Blob means that's optimized for random access and it's the only blob type
that can be used to create images.

This commit cleans up the terminology so it's less confusing.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-03-06 15:40:48 +00:00

58 lines
1.5 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"path"
"github.com/osbuild/osbuild-composer/internal/upload/azure"
)
func checkStringNotEmpty(variable string, errorMessage string) {
if variable == "" {
fmt.Fprintln(os.Stderr, errorMessage)
flag.Usage()
os.Exit(1)
}
}
func main() {
var storageAccount string
var storageAccessKey string
var fileName string
var containerName string
var threads int
flag.StringVar(&storageAccount, "storage-account", "", "Azure storage account (mandatory)")
flag.StringVar(&storageAccessKey, "storage-access-key", "", "Azure storage access key (mandatory)")
flag.StringVar(&fileName, "image", "", "image to upload (mandatory)")
flag.StringVar(&containerName, "container", "", "name of storage container (see Azure docs for explanation, mandatory)")
flag.IntVar(&threads, "threads", 16, "number of threads for parallel upload")
flag.Parse()
checkStringNotEmpty(storageAccount, "You need to specify storage account")
checkStringNotEmpty(storageAccessKey, "You need to specify storage access key")
checkStringNotEmpty(fileName, "You need to specify image file")
checkStringNotEmpty(containerName, "You need to specify container name")
fmt.Println("Image to upload is:", fileName)
c, err := azure.NewStorageClient(storageAccount, storageAccessKey)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
err = c.UploadPageBlob(
azure.BlobMetadata{
BlobName: path.Base(fileName),
ContainerName: containerName,
},
fileName,
threads,
)
if err != nil {
fmt.Println("Error: ", err)
}
}