You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
Version 1
Next »
Branch
What branch is this work being done in TBD
Introduction
Purpose
This describes a new feature that takes care of automated VM_Instance expiration handling which has JIRA ID CLOUDSTACK-9984
References
Glossary
Feature Specifications
We need an option to dismantle instances used by accounts or users that are no longer working for the department and thus got orphaned objects which only root-admins can delete. Without this feature resources are wasted and customers might be charged for unused machines.
- give instances an expiration date on creation (calculated by the lifespan global setting)
- list all open items or unresolved issues the developer is unable to decide about without further discussion
- quality risks (test guidelines)
- functional
- non functional: performance, scalability, stability, overload scenarios, etc
- corner cases and boundary conditions
- negative usage scenarios
- specify supportability characteristics:
- what new logging (or at least the important one) is introduced
- how to debug and troubleshoot
- what are the audit events
- list JMX interfaces
- graceful failure and recovery scenarios
- possible fallback or work around route if feature does not work as expected, if those workarounds do exist ofcourse.
- if feature depends other run-time environment related requirements, provide sanity check list for support people to run
- deployment requirements (fresh install vs. upgrade) if any
- system requirements: memory, CPU, desk space, etc
- interoperability and compatibility requirements:
- OS
- xenserver, hypervisors
- storage, networks, other
- list localization and internationalization specifications
- explain the impact and possible upgrade/migration solution introduced by the feature
- explain performance & scalability implications when feature is used from small scale to large scale
- explain security specifications
- list your evaluation of possible security attacks against the feature and the answers in your design* *
- explain marketing specifications
- explain levels or types of users communities of this feature (e.g. admin, user, etc)
Use cases
put the relevant use case/stories to explain how the feature is going to be used/work
Architecture and Design description
- configuration characteristics (new global settings):
- expiration.manager.enabled
- expiration.manager.lifeSpan
- expiration.manager.NotificationInterval
- expiration.manager.NotificationFrequency
- expiration.manager.GracePeriod
- expiration.manager.mail template?
- expiration.manager.interval
- expiration.manager.starttime
- schema characteristics (vm_instance):
- expires (DateTime)
- notificationCounter (int)
- discussion of alternatives amongst design ideas, their resources/time tradeoffs and limitations. Explain why a certain design idea is chosen over others
- highlight architectural patterns being used (queues, async/sync, state machines, etc)
- talk about main algorithms used
- explain what components are being changed and what the dependent components are
- regarding database: talk about tables being added/modified
- performance implications: what are the improvements or risks introduced to capacity, response time, resources usage and other relevant KPIs
- preferably show class diagrams, sequence diagrams and state diagrams
- if possible, publish signatures of all methods classes and interfaces implement, and the explain the object information of different classes
Web Services APIs
list changes to existing web services APIs and new APIs introduced with signatures and throughout documentation
UI flow
- either demonstrate it visually here or link to relevant mockups
IP Clearance
- what dependencies will you be adding to the project?
- are you expecting to include any code developed outside the Apache CloudStack project?
Usage Impact
Appendix
Appendix A:
Appendix B: