- Replace the gray cursive text with the actual content.
- Remove non-applicable sections or insert N/A.
High Level Functional Overview and Design Specifications
Implement storage driver for ScaleIO storage array based on Southbound SDK.
Implement ScaleIODiscoveryDriver based on DliscoveryDriver API.
Implement ScaleIOStoragerDriver based on BlockStorageDriver API.
Use ScaleIO Rest API as access point to ScaleIO array.
- What is the problem, why is it important?
- Relevant use cases (from the user perspective).
- Specific requirements.
- Include JIRA IDs where applicable:
|JIRA ID||1-Line Description||Comments, notes, etc.|
|Implement ScaleIODiscoveryDriver based on DliscoveryDriver API|
Implement discover storage system, storage pools, storage ports, storage volumes.
|Implement ScaleIOStoragerDriver based on BlockStorageDriver API|
Implement storage volume get/create/expand/delete/export/unexport.
Implement API for snaps, clones, mirrors.
- Review SDK
- Review existing test cases
- design test plan and test cases (Note: the test plan will be general, including test plans for operations that are not supported in ScaleIO) (Welcome to review )
|JIRA ID||Task||Assign to||Delivery Dates|
|COP-17716||Test cases for Driver-Discover Functions||Varun Rajgopal||Done|
|COP-17717||Test cases for Driver-Block Volume Operations and Block snapshot Operations||Taylor Cuilty||Done|
|COP-17718||Test cases for Driver-Block Clone and Export Operations||Prathamesh Pramod||Done|
|COP-17719||Test cases For Driver - Block mirror Operations||Shujin Wu||Done|
- Operations supported in ScaleIO: ScaleIO Checking List .pdf
- Implementation Design (Welcome to review )
|JIRA ID||Task||Assign to||Status|
|COP-17791||Design implementation of discovery operations||Varun Rajgopal||Done|
|COP-17790||Design implementation of basic volume operations||Taylor Cuilty||Done|
|COP-17789||Design implementation of block export and clone operations||Prathamesh Pramod||Done|
|COP-17787||Design implementation of block snapshot operations||Shujin Wu||Done|
- Implementation Status
|JIRA ID||Task||Assign to||Status||Approved|
|COP-18460||Implementation of Discovery||Varun Rajgopal||Pull Request||Approved|
|Implementation of snapshot/consistency group snapshot operations||Shujin Wu|
|Implementation of volume provisioning||Taylor Cuilty||Pull Request||Approved|
|Implementation of Clone Operation||Prathamesh Patkar||Pull Request||Approved|
|Implementation of Export Operation|
Waiting for host discovery support to continue
- Integration Test
|JIRA ID||TASK||Assign to||Status|
|COP-20986||Integration Test: discover/volume provisioning/snapshot/clone||Shujin Wu||Done|
- Environment Set Up on OpenStack
- CoprHD deployment and ScaleIO driver deployment with ansible:
- Please refer to: https://github.com/SuzyWu2014/ansible-coprhd-deployment
Export operations implementation - Block by host discovery support.
Weekly Team Plan
Tuesday: Weekly planning meeting.
Specify and create JIRA tasks during the meeting.
If needed, review the work from the previous week.
Friday: Weekly review meeting
Review the work for the week. Since we are in a state of designing, we will review each other's design and generate doc for others to review.
Design Approach / High Level Implementation Details
Hash-out the design and high level implementation ideas
Are there any alternative design one should consider? Is this the optimal one?
What are the user visible changes? Will this change break user's script or automation code? Will it impact
CoprHD QE automation scripts?
What are the changes to
CoprHD components and component interaction? Are teams responsible for these other components on boards with this change?
What are the changes to persistent data? Will it require special consideration during upgrades?
Please use consistent and precise nomenclature / terminology.
Please include diagrams and illustrations if applicable.
Exclusions and Limitations
Which requirements and/or functionality are deliberately excluded from this project?
Mirror Operations and Export Operations are not supported in ScaleIO
Future Work and Related Projects
Is this change setting ground for a future project? In other words, are there projects that depend on tis change?
Does this change depend on other projects?
10/23/2015 Finish test cases design and ready for review
10/30/2015 Finalize test cases design
11/13/2015 Finish implementation design and ready for review
11/20/2015 Finalize the implementation design
12/04/2015 Code complete
What are the milestones (code complete, code ready for review, code ready to commit)?
How much time will be needed to test this change and address all the issues after the initial commit?
Is this a multi-phase project?
Driver code should be unit tested method by method.
Should comply with performance requirements for storage drivers.
We will generate the documents for test plan and implementation design.
Public APIs and public functionality (end-user impact)
Is this change backward compatible? Could incompatibilities be avoided? If not, what changes will have customer and CoprHD QE apply to their automation software developed against the old APIs?
Other components and component interaction
If the change spans multiple components and/or changes interaction between components, can it create any new problems?
Does this change affect dependencies between services?
Does it change startup or shutdown order?
Does it require any new management interfaces?
Are schema changes need in dbsvc or coordinatorsvc?
If so, what is the upgrade procedure?Is the schema migration (conversion) going to be reliable and scalable?
Does this change affect disk usage?
Are there any other special considerations regarding upgrades? Think twice - this is rarely obvious
Will we need any new tools to debug or repair system if the upgrade code specific to this change fails?
Can this change adversely affect performance? If so, how are you going to test it? Is there a way to test this early, before the entire implementation is ready?
Scalability and resource consumption
Will it scale? How long will essential operations take at the scale of O(10,000,000)? How are you going to test it?
Will specific performance at scale testing be required?
Does this change have impact on memory and CPU usage? How does memory and CPU usage scale with the number of objects?
Are there any implications for
Will new security scans be required?
Deployment and serviceability
Developer impact, dependencies and conditional inclusion
What is the impact on build time?
Is there any impact on integration with IDEs (Eclipse and IntelliJ)?
Are there any new third party dependencies? If so, please list these dependencies here:
|Package Name||Package Version||License||URL||Description of the package and what it is used for|
Shall this feature by included with a special build-time flag?
Shall this feature be enabled only under certain run-time condition?
Reviewed and Approved By
|Name||Date||Vote||Comments, remarks, etc.|