Trying to enable testing specs for 9.0, we've encountered different unavoidable problems with existing checks. For example, it was impossible to have code blocks with line length more than 80 characters. This commit uses docutils and make those changes using AST, so we can avoid some checks for code-blocks or long links. Closes-Bug: #1569929 Change-Id: Ia501754922b3272acd1a865513d5dffa17981331
4.1 KiB
Provide api to download serialized graph
API for downloading serialized graph, that is used for task-based deployment, can be usefull in next scenarios:
- Manual pre-deployment verification
- Consumption of fuel composition layer in 3rd party applications
This specification is concerned with latter usage scenario.
Problem description
In solar we want to regenerate fuel resource composition, and take into account - role allocation, conditions based on fuel settings, and other misc logic that are used to build deployment composition. And all of those actions are executed during graph compilation procedure.
Instead of fetching deployment graph we could fetch other configuration options exposed by fuel API, like role allocation and settings. And write conditional allocator ourselves, but it will lead to duplication of logic in nailgun, and introduce potential desynchronization between newly introduced component and nailgun.
Proposed changes
Web UI
None
Nailgun
New handler that will expose already existing logic.
Data model
None
REST API
HTTP | URL |
---|---|
GET |
/api/v1/clusters/<:cluster_id>/serialized_tasks/?nodes=<:nodes>& tasks=<:tasks> |
On request it will use task_based_deployment.TaskSerializer.serialize method with all provided by user parameters.
Additional validations provided by handler:
- If node is not present in cluster request will be invalidated with 400 Bad Request
- Cluster or node is not found in database - 404 Not Found
- If task based deployment is not allowed - 400 Bad Request
Orchestration
None
RPC Protocol
None
Fuel Client
Exposing handler data with fuel client is out of scope for this specification.
Plugins
None
Fuel Library
None
Alternatives
Build more complicated policy engine based on raw fuel configuration. Taking into account date of the release this is not even feaasible alternative.
Upgrade impact
No impact
Security impact
No impact
Notifications impact
No impact
End user impact
No impact
Performance impact
No impact
Deployment impact
No impact
Developer impact
No impact
Infrastructure impact
No impact
Documentation impact
Documentation will added in code
Implementation
Assignee(s)
- Primary assignee:
-
dshulyak
- Mandatory design review:
-
bgaifulin evgeniyl ikalnitsky
Work Items
- Handler that will implement part of exsisting produre
- Proper validation
- Tests coverage
Dependencies
For LCM improvements some changes will be done in TasksSerializer API, after they will be introduced - REST API will adjusted to those changes.
Testing, QA
Change is not complex, unit testsing and manual verification that it works on ISO should be enough
Acceptance criteria
Serialized deployment graph, that is sent to astute for deployment procedure, can be downloaded using fuel REST API. API should provide interface to take into account all variables exposed by TasksSerializer, including: - choose cluster - select subset of nodes in cluster - select list of tasks that will be included in tasks serialization
References
None