How to on-board new public cloud as back-end in OpenSDS multi-Cloud Project?

30-Apr, 2019
How to on-board new public cloud as back-end in OpenSDS multi-Cloud Project?

On boarding the new public Cloud as back-end in OpenSDS will help users to perform all object storage related operations such as “Create Bucket”, “Delete Bucket”, “Upload Object”, “Download Object”, “Delete Object” directly from OpenSDS application. Also, user will be able to migrate its bucket from any OpenSDS supported public cloud or local storage to newly on-boarded cloud and vice-versa.

This blog will help you on how to add S3 compatible Cloud as back-end in OpenSDS multi-cloud:

Add Cloud provider as object storage back-end in OpenSDS multi-cloud project:

Implement below interfaces in multi-cloud (Gelato) project for adding cloud as a back-end. More details about interfaces can be found here.


PUT(stream io.Reader, object *pb.Object, context context.Context) S3Error

GET(object *pb.Object, context context.Context) (io.ReadCloser, S3Error)

DELETE(object *pb.DeleteObjectInput, context context.Context) S3Error

GetObjectInfo(bucketName string, key string, context context.Context) (*pb.Object, S3Error)

InitMultipartUpload(object *pb.Object, context context.Context) (*pb.MultipartUpload, S3Error)

UploadPart(stream io.Reader, multipartUpload *pb.MultipartUpload, partNumber int64, upBytes int64, context context.Context) (*model.UploadPartResult, S3Error)

CompleteMultipartUpload(multipartUpload *pb.MultipartUpload, completeUpload *model.CompleteMultipartUpload, context context.Context) (*model.CompleteMultipartUploadResult, S3Error)

AbortMultipartUpload(multipartUpload *pb.MultipartUpload, context context.Context) S3Error

ListParts(listParts *pb.ListParts, context context.Context) (*model.ListPartsOutput, S3Error)


After successful implementation and integration of interfaces, perform the testing by registering cloud as back-end with or without Keystone. On boarded cloud provider name will appear in “Type” drop-down. Refer below screenshot.

Facilitate the Cloud which is added as a back-end for supporting migration in OpenSDS:

Implement Data Mover interfaces in multi-cloud (Gelato) project for newly added Cloud backend. You can refer implementation of “Amazon S3 Data Mover” interface. It is called in the migration routine.

Implement the below interfaces defined in MoveWorker.


UploadObj(objKey string, destLoca *LocationInfo, buf []byte) error

DownloadObj(objKey string, srcLoca *LocationInfo, buf []byte) (size int64, err error)

DeleteObj(objKey string, loca *LocationInfo)

MultiPartDownloadInit(srcLoca *LocationInfo) error

DownloadRange(objKey string, srcLoca *LocationInfo, buf []byte, start int64, end int64) (size int64, err error)

CompleteMultipartUpload(objKey string, destLoca *LocationInfo) error

AbortMultipartUpload(objKey string, destLoca *LocationInfo) error

UploadPart(objKey string, destLoca *LocationInfo, upBytes int64, buf []byte, partNumber int64, offset int64) error

MultiPartUploadInit(objKey string, destLoca *LocationInfo)


After successful implementation and integration of interfaces, perform the testing by migrating Bucket from AWS S3, Microsoft Azure, Huawei OBS to your on-boarded Cloud and vice-versa.

Recent Posts

Get In Touch With

Our Offices

location Plot No. 21, Premier Technology Group, Third Floor, I.T Park Road, Parsodi, Nagpur - 440022(MS)

phone0712-297 0257 / 0712-297 1228 / +91-766 690 5354

location Click2Cloud Inc. , Suite #05-143, 800 Bellevue Way NE Bellevue, WA, 98004, USA.


location No.401, Unit 8, Building 8, Area 5, HeYiDongLi, Fengtai District, Beijing, China, 100076

phone+86 173 4656 0417

location2806 Bloor Street West, Toronto, ON M5S 0B1

phone+1 425 748 9666

locationOffice No. 121-122Cowork06, Building Number 67 - Regus Doha Dring Building, Street 250 - DRing Road, Zone 45 - Old Airport,PO Box 32522, Doha, Qatar

phone+974 4423 1210

location7 Temasek Boulevard, #12-07, Suntec Tower One, Singapore 038987

locationNo 5, 17/f, strand 50 50 bonham strand, Sheung wan, Hong Kong