8 "github.com/Azure/azure-sdk-for-go/storage"
11 // An AzureBlobVolume stores and retrieves blocks in an Azure Blob
13 type AzureBlobVolume struct {
14 azClient storage.Client
15 bsClient storage.BlobStorageClient
20 func NewAzureBlobVolume(client storage.Client, containerName string, readonly bool) *AzureBlobVolume {
21 return &AzureBlobVolume{
23 bsClient: client.GetBlobService(),
24 containerName: containerName,
29 func (v *AzureBlobVolume) Get(loc string) ([]byte, error) {
30 rdr, err := v.bsClient.GetBlob(v.containerName, loc)
34 buf := bufs.Get(BlockSize)
35 n, err := io.ReadFull(rdr, buf)
37 case io.EOF, io.ErrUnexpectedEOF:
45 func (v *AzureBlobVolume) Compare(loc string, data []byte) error {
49 func (v *AzureBlobVolume) Put(loc string, block []byte) error {
53 func (v *AzureBlobVolume) Touch(loc string) error {
57 func (v *AzureBlobVolume) Mtime(loc string) (time.Time, error) {
58 return time.Time{}, NotFoundError
61 func (v *AzureBlobVolume) IndexTo(prefix string, writer io.Writer) error {
65 func (v *AzureBlobVolume) Delete(loc string) error {
69 func (v *AzureBlobVolume) Status() *VolumeStatus {
72 BytesFree: BlockSize * 1000,
77 func (v *AzureBlobVolume) String() string {
78 return fmt.Sprintf("%+v", v.azClient)
81 func (v *AzureBlobVolume) Writable() bool {