Jump to: navigation, search

Difference between revisions of "Solum/ApiModel"

Line 1: Line 1:
Broadly, we will have two sub-systems:
+
The point of this design is to try and model the use cases to the api better. Solum's primary
- Builder subsystem
+
value is basically and easy to use ci/cd for OpenStack.
- Deployment subsystem
 
  
The builder system will be driven by the deployment subsystem.
+
So enabling someone to use their source tree (git repo) as a tool for building images, running tests and deploying
 +
into a variety of environments.
  
The entry point of Solum would be the deployment subsystem with a 'workflow' as the input.
+
The entry point of Solum would be the deployment subsystem with a 'lifecycle' definition as the input.
This workflow would contain build, test, and deploy actions for different environments.
+
This would contain build, test, and deploy actions for different environments.
 
The actions can be based on different kind of policies (time-based, user-driven, and so on).
 
The actions can be based on different kind of policies (time-based, user-driven, and so on).
These policies and actions would essentially be sub-workflows within the main workflow.
 
  
 
[[File:Solum-model.png|non-framed]]
 
[[File:Solum-model.png|non-framed]]
  
Example of the deployment workflow:
+
Example of the application lifecycle definition:
  
 
   lifecycle:
 
   lifecycle:
Line 45: Line 44:
  
 
Builder subsystem/service:
 
Builder subsystem/service:
- Investigate Jenkins
+
* Investigate Jenkins
- Investigate Mistral
+
* Investigate Mistral
  
 +
[[File:Solum-internal.png|non-framed]]
  
 
Additional Issues:
 
Additional Issues:
- Long running workflows would need Solum to use trusts (and renew tokens periodically).
+
* Long running workflows would need Solum to use trusts (and renew tokens periodically).

Revision as of 19:25, 31 March 2014

The point of this design is to try and model the use cases to the api better. Solum's primary value is basically and easy to use ci/cd for OpenStack.

So enabling someone to use their source tree (git repo) as a tool for building images, running tests and deploying into a variety of environments.

The entry point of Solum would be the deployment subsystem with a 'lifecycle' definition as the input. This would contain build, test, and deploy actions for different environments. The actions can be based on different kind of policies (time-based, user-driven, and so on).

non-framed

Example of the application lifecycle definition:

 lifecycle:
  environment: Develop
    policy: True
    actions:
      run_tests:
        git_url: github.com/helloworkld.git
        cmd: tox
      build:
       git_url: github.com/helloworkld.git
       cmd: build_app
  environment: Staging
    policy: depends-on-success-of-Develop
    actions:
      deploy:
        # we need to be able to pass the image from the dev env
        # so we can use it here.
  environment: Production
    policy: Manual
    actions:
      deploy:
         heat create prod -u <somewhere> -P "image=<bla>"

DSL for describing deployment workflow can be Jenkins to begin with. That way, we can use Jenkins also to perform the builds (in the builder subsystem/service). For DSL, we can also look at Mistral, Taskflow, Murano. It will be great if more than one folks participate in the DSL discussions being proposed by Mistral guys (ref. Email on Openstack-dev list).

Builder subsystem/service:

  • Investigate Jenkins
  • Investigate Mistral

non-framed

Additional Issues:

  • Long running workflows would need Solum to use trusts (and renew tokens periodically).