For developers: Provide an easy to use, fast experience developing applications for OpenStack , by providing an automated CI/CD pipeline.
For release managers: Provide streamlined application lifetime management via Environments (dev,test,staging,prod), permissions(I.e. who can deploy to prod),what tests get run in which environment, usage/cost information per environment, etc
The program vision consists of the following 4 items-
1. CI: Source to image (continuous integration pipeline)
- GIT, build+unit test, generate image, run functional tests, persist image for deployment via Heat
- automated deployment, management of running apps(monitoring, autoscaling, self-healing), blue green deployments, application versioning and rollbacks
- permissions(I.e. who can deploy to prod),what tests get run in which environment, usage/cost information per environment, etc
4. Developer tooling
- IDE plugins, SDK's, CLI, UI console
- SOLUM-R1: Application deployment/management [R1.1 (Story 1 and 2 only), R1.2, R1.3]
- SOLUM-R4: User Authentication
- Blueprints: https://launchpad.net/solum/+milestone/milestone-1
- Reliability improvements: bug fixes
- Ability to configure unit tests to be run as part of CI pipeline
- Retry on failures: as an application developer, if the CI invocation faiIs due to any reason, I would be able to trigger rerun of the CI workflow without resubmitting the code.
- New CLI: as an app developer, I have access to user friendly CLI commands for managing my apps on Solum
- I can register a new app with Solum - I can have automated unit tests executed on my latest code in git - I can invoke unit tests + auto deployment of my latest code in git - I can view list of my apps registered with Solum - I can view detail status of individual apps registered with Solum - I can delete an app from Solum - I can register a new custom language pack to support deployment of my app needing a custom runtime
- Git Experience
- As an app developer, I want to view all the possible trigger URLs available for my app, so that I can can manually configure my code repository to trigger specific workflows on my code in response to events on my codebase. - As an app developer, I want the CLI to provide an option to set up such a trigger on my repository when I register a new app to Solum, requesting minimal credentials from me to access the repository. - As an app developer, I want the CLI to provide an option to set up such a trigger on my repository after my app has been registered, likely as part of the "solum app update" command.
- Custom Language Pack
- As an operator, I can codify setup of custom language stack, and make it available to application developers so that they can start using the custom stack for CI+CD (build, run tests, generate DU). - as an application developer, I can codify setup of my custom language stack, and have Solum use my custom stack for CI+CD.
- Predefined language packs
- Implement Python language pack + sample app - Implement Java Tomcat 7 language pack + sample app - Implement Ruby on rails language pack + sample app
- MySQL Trove
- Demonstrate MySQL Trove integration with an app deployed on Solum
- Access to user friendly logs: AppDev : as an application developer, I would be able to access build, test and deployment logs for my apps on Solum
- When any errors occur in unit testing, build, or deploy, I have access to meaningful log info so that I can effectively troubleshoot what went wrong - I want my logs to be accessible only to me - I want to be able to view summary log data (build pass/pail, test pass/fail, number of tests passed/failed etc) - I want to view my logs scoped to individual pull requests - I want to be able to drill down into detail logs - I would like to see user friendly logs i.e. logs meant to be consumed by an app developer persona - I want to access real time streaming logs from within the CLI console
- Sever version: show server version in the CLI
- Convert to new API resource objects + deprecate old ones (e.g. assemblies)
- Update CLI to use new API objects
- Convert bash scripts to python for more reliability and easier debugging (tech debt reduction)
- Non-destructive app updates (app keeps same IP, no more than couple second blip in availability is the goal)
- Scale up/down web tier instances (manual for now, will tie in to Heat-autoscaling via Heat template later with customer choice of reference architectures)
- Secure store of secrets (if operator choice is anything other than barbican, ensure user secrets are stored encrypted in the database
- Ability to configure Container/VM size and/or ratio (the ratio part is up for debate, but on a 1:1 we need a way for the user to configure what flavor class they need/want). I'd also like to see choice of infrastructure beyond just Nova (such as Ironic bare metal... serviced via swapping out the appropriate Heat template for the chosen deployment form factor)
- API/CLI support for user to view app deployment history
- Service Add-on framework
- Enable following services via the Add-on framework: MongoDB, NewRelic, MemCache
- Application performance monitoring (CPU, memory utilization, etc.)
- Custom SSL Certificates
- Reference architecture selection. Ability to allow user to pick from a few pre-set architectures (which Solum would instantiate via different Heat templates), and eventually allow customer full ability to modify/edit Heat template for ultimate customizability.