Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Building on the OpenSource object store providers, CloudStack can support Object Storage as a first-class entity. A general purpose object storage framework should be added, with support for various Object Storage providers as plugins. CloudStack will manage the lifecycle of the object storage pools and buckets. Objects will not be managed by CloudStack. The underlying object-storage provider is responsible for flexible storage management and data growth, multi-site replication, security, and backup.

Purpose

The purpose if this document is to provide functional specification for Object Storage feature in CloudStack.

References

Document History

VersionAuthor/ReviewerDate
1.0Kishan Kavala

 




...

  • Object storage as a first-class end user feature in CloudStack

  • Pluggable Object storage provider framework. MinIO will added as a supported provider in the initial implementation 

  • Ability to create buckets and manage their lifecycleAble to create/manage buckets

Use cases

  • CloudStack admin should be able to add supported Object Storage providers (min.io based infra, ceph object storage etc.).
  • CloudStack users should be able to create buckets and manage their lifecycle.
  • Users/projects get billed by aggregate data storage on per bucket basis

Architecture and Design description

ObjectStoreDriver interface will be defined. All supported object store providers will need to implement this interface. 

API and Schema Changes

New APIs

Object Storage Pool APIs

  • addObjectStoragePool

    • name
    • description
    • URL
    • Provider
    • Details - Map
  • updateObjectStoragePool

    • id
    • name
    • description
  • removeObjectStoragePool

    • id
  • listObjectStoragePools

    • id


Bucket APIs

  • createBucket

    • name
    • description
    • object_storage_id
    • encryption
    • versioning
    • object_lock
    • policy
  • deleteBucket

    • id
  • listBuckets

    • id
    • provider
    • object_storage_id
  • updateBucket
    • id
    • name
    • description
    • encryption
    • versioning
    • object_lock
    • policy


Schema Changes

New Tables:

  • object_store
    • id
    • uuid
    • name
    • description
    • provider
    • url
    • total_size
    • used_size
    • created
    • removed
  • object_store_details
    • id
    • store_id
    • name
    • value
  • bucket
    • id
    • uuid
    • name
    • description
    • store_id
    • size
    • url
    • created
    • removed

Service Layer Changes

Describe business/service layer changes, changes in frameworks, plugins ...<ToDo>

UI Changes

  • UI for managing object storage pools
  • UI for bucket operationoperations
  • S3 compatible UI client for managing objects

Usage Impact

  • Buckets usage will be added as a new Usage resource type

    • Size of the bucket will be included as key metric for billing purposes

Appendix

Appendix A:

Appendix B: