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>
58 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|