Challenge Overview
Challenge Objectives
- Add the hpe3par hostset pages and integrate with the create, update, view, remove and list all apis.
- Add the hpe3par volumeset pages and integrate with create, update, view, remove and list all apis.
- Add the hpe3par remote copy action or pages and integrate with corresponding apis.
Project Background
Service Theater is a single/unified web portal that provides simplified management, monitoring, high-end analytics and reporting for the data center environments. It allows enterprises using clouds to consume NextGen offerings characterized by fit for purpose deliverables and demand-driven pay-as-you-go model, by leveraging its northbound APIs. Service Theater brings efficiencies at multiple levels by allowing enterprises to embrace heterogeneity and its advantages
Service Theater allows the super admin to add the NextGen offerings for the datacenter from the various cloud storage vendors for the enterprise consumers.
Currently this service theater has two cloud storage from two vendors (ie. Pure storage and Nexenta)
Technology Stack
- Tomcat 6
- Java 8
- MySQL 5.7
- Cloud Stack UI Framework
Code access
https://gitlab.com/standlove/sdx-hpe3par - please request access in the forum, and please use dev branch.Requirements
The app already supports cloud storage services like purestorage and Nexenta, and now we want to onboard the HPE3PAR cloud storage.And here is how the app works in general:
- The app has a DiscoveryServlet, which starts a periodical job to load all the data from the cloud storage service through their exposed APIs and store into a local MySQL database.
- The front end pages will load the data from the local database directly most times, but when the user tries to modify the data (e.g. add or delete a volume), it will first call the cloud storage service API to process the request and then update the local database. This is handled by the ApiServlet.
And here are some general requirements:
- Base files should not be extended, instead, new files will be created
- LDAP for user authentication is not in the scope
- Use Jersey for REST and hpe3par API documentation also had REST-based APIs only
- Follow the structure of Nexenta for hpe3par
- Jfree charts will be used for charts
- Memory and CPU utilisation should also be considered, and it's in the document.
- Pools, Volume, etc will be called as an entity and for each new entity to integrate we will be creating a new table and for the common entity, we may use the existing schemas or alter schemas to add new columns
- Operation schemas will have all operation, API path for HPE3PAR, the schemas already exist for purestorage and nexenta
- Hpe3par will have a cluster on which 2 nodes will get register, during add storage, we will have to keep that in mind ,so always 2 nodes will be created instead of 1, Cluster means if 1 node goes down, all data will be synced to node 2 automatically, like we have master-slave concept. Please check the API documentation to check the guidelines provided for this and analyse the same.
- DB table prefixed with cb_ should not be used
And here are the general requirement for the UI:
1. Look and feel should be exactly same as it is of service theater.
2. Need to follow only the framework specific conventions to build the UI - ie. Cloudstack Web UI framework
3. All the components are found in the the service theater, like popup, wizards/forms, labels, button ..etc. kindly make use of it instead of creating something new
4. No additional CSS will be used, as only use the same as shown in service theater
You can find some documents and videos in the following directories:
- hostset: https://drive.google.com/drive/u/0/folders/1QrAAB9o6WLohDZsR2n8-VZGd_HsS6w4L
- volumeset: https://drive.google.com/drive/u/0/folders/1kUDsc7_bGAZ-4Apje-lLAiZ0TjKUjhh8
- volume snapshot: https://drive.google.com/drive/u/0/folders/1HSt0zC6dzobXet0OTMkX73pZVchBxYbt
The hostset and volumeset actions should be added to hpe3par backend page:
And on the volume details screen, it should support the following actions:
- Create Volume Snapshot
- Resync VV Physical Copy - it's purely an action, no page involved
- Stop VV Physical Copy - it's purely an action, no page involved
- Promote Virtual Copy - it's purely an action, no page involved
- Stop Promoting Virtual Copy - it's purely an action, no page involved
(You can allow user to select some volumes and then execute the following actions)
- Update virtual copies
-
Creating group snapshots of a virtual volumes list
And on the volume set details screen, it should support the following actions:
- Create VV Set Snapshot - it's similar as the create volume snapshot
- Resync VV Set Physical Copy - it's purely an action, no page involved
- Stop VV Set Physical Copy - it's purely an action, no page involved
- Promot VV Set Virtual Copy - it's purely an action, no page involved
- Stop Promote VV Set Virtual Copy - it's purely an action, no page involved
���(You can allow user to select some volume sets and then execute the following actions)
- Update VV-sets
Note that the simulator API is available, so please remove the mockup API, and use the simulator API directly.
The details of simulator API will be shared in the forum. And you need to make the UI works with the simulator API correctly, and fix any issues in the existing code.
Final Submission Guidelines
- Patch file
- Update README if necessary and a VerficiationGuide md file containing the verification steps