You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Bug Reference

https://issues.apache.org/jira/browse/CLOUDSTACK-4552

Branch

This code will be developed in my local branch which will be forked out of master branch.https://github.com/AmitKumarDas/cloudstack

Introduction

Purpose

This is the functional spec for CloudStack storage plugin w.r.t CloudByte’s Elastistor.

References

Document History

Glossary

Feature Specifications

  • Summary:
    • CloudByte storage (i.e. Elastistor) plug-in will be designed to support a one to one mapping between a NFS volume and a data disk (i.e. volume associated to a VM instance).
    • Setting the volume QoS can be done via Add Disk Offering and Add Volume dialogs. This has already been implemented as part of ACS 4.2 release.
    • This storage plug-in is intended to support at least XenServer initially. Other hypervisor support will be implemented eventually.
  • Logging/Debug:
    • Nothing new. The logs will be generated in the existing log files of cloudstack management server.
  • Possible Fallback/Workaround routes:
    • This plugin is intended to automate the volume creation steps at elastistor & use the created volume to be provisioned by the cloudstack admin. The workaround will be to do these manually. In other words admin need to login to elastistor’s UI (i.e. ElastiCenter) and follow necessary steps to create a volume of desired IOPs, create a SR (w.r.t XenCenter) with appropriate tags, create a disk offering (w.r.t cloudstack management UI), and finally create a data disk associated with these tags.
  • Configuration characteristics:
    • A new provider bean will be added to the client/tomcatconf/applicationContext.xml.in file. The provider bean will point to the new CloudByte provider plugin class.
  • Deployment requirements (fresh install vs. upgrade):
    • applicationContext.xml.in file should have modifications w.r.t. CloudByte
    • new storage plugin jar(s) related to CloudByte should be in management server’s classpath
  • system requirements: memory, CPU, disk space, etc.:
    • Nothing new
  • interoperability and compatibility requirements:
    • Supports XenServer
  • list localization and internationalization specifications:
    • Nothing new
  • explain the impact and possible upgrade/migration solution introduced by the feature:
    • There should not be any impact w.r.t database upgradation as there are no schema changes till now.
    • It is assumed that upgrade/migrate script etc.utilize the pom.xml of cloudstack project. Hence it should not cause any impact.
    • Note - The cloudstack/plugins project will have a new module that has the cloudbyte’s storage plugin code base. All the build & dependency management are controlled via the pom.xml files.
  • explain performance & scalability implications when feature is used from small scale to large scale:
    • Same as with current Disk Offerings/New Volumes
  • explain marketing specifications:
    • This feature is being marketed actively by CloudByte.
    • This should help improve and standardize on CloudStack’s pluggable storage plugins.
  • explain levels or types of users communities of this feature (e.g. admin, user, etc):
    • Impacts admins and users (only impacts users if admins allow this).

Use cases

Implement a CloudStack storage plugin for CloudByte's Elastistor. It will follow the design principles abstracted by CloudStack API for implementing a pluggable storage plugin. This new enhancement will reuse the QoS params (max IOPs) exposed in the modified Disk-Offering UI page.

The basic behavior of this plugin will be to :

  • Allow CloudStack(CS) Admin to invoke CS API to add Primary Storage based on Elastistor's plugin.
  • Allow CS Admin to create a desired Disk Offering. The access control followed for creation of Disk Offering will be maintained in this feature too.
  • Allow an end user to use above created Disk Offering.
  • Allow an end user to attach above created volume to a VM.
  • Allow an end user to detach volume from a VM.
  • Allow an end user to delete volume from a VM.

Architecture and Design description

There should not be any change w.r.t architecture for this new storage plugin.

This new storage plugin should be able to implement the well established pluggable plugin abstraction exposed by CloudStack API. This also means there should not be any changes to database schema.
However, as the plugin gets implemented & features duly reviewed it might call for new abstractions or design changes_._

Web Services APIs

  • New/Modified APIs
    • None
  • Flow

UI flow

  • Go to the Disk Offerings and elect to Add Disk Offering.
    • User customizable - If this should be exposed to the end users.
    • Max IOPS - QoS value which gets applied on a primary volume.
  • Go to the Storage tab and elect to Add New Volume.
    • Max IOPS - if the admin wants to expose these to the end user.

IP Clearance

  • what dependencies will you be adding to the project?
    • This project will mostly reuse the existing dependencies of cloudstack project.
  • are you expecting to include any code developed outside the Apache CloudStack project?
    • No

Appendix

Appendix A:

Elastistor - CloudByte’s software defined QOS storage solution.

Appendix B: 

  • No labels