Updated DE architecture doc + 'period' param
In this changeset, I updated the architecture documentation about the Decision Engine by adding a new sequence diagram outlining the CDM synchronization workflow. I also explained the default 'period' parameter used in the CDMC plugin. Change-Id: I09790281ba9117e302ab8e66a887667929c6c261 Partially-Implements: blueprint cluster-model-objects-wrapper
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
@startuml
|
||||
skinparam maxMessageSize 100
|
||||
|
||||
actor "Administrator"
|
||||
|
||||
== Initialization ==
|
||||
|
||||
"Administrator" -> "Decision Engine" : Start all services
|
||||
"Decision Engine" -> "Background Task Scheduler" : Start
|
||||
|
||||
activate "Background Task Scheduler"
|
||||
"Background Task Scheduler" -> "Cluster Model Collector Loader"\
|
||||
: List available cluster data models
|
||||
"Cluster Model Collector Loader" --> "Background Task Scheduler"\
|
||||
: list of BaseClusterModelCollector instances
|
||||
|
||||
loop for every available cluster data model collector
|
||||
"Background Task Scheduler" -> "Background Task Scheduler"\
|
||||
: add periodic synchronization job
|
||||
create "Jobs Pool"
|
||||
"Background Task Scheduler" -> "Jobs Pool" : Create sync job
|
||||
end
|
||||
deactivate "Background Task Scheduler"
|
||||
|
||||
hnote over "Background Task Scheduler" : Idle
|
||||
|
||||
== Job workflow ==
|
||||
|
||||
"Background Task Scheduler" -> "Jobs Pool" : Trigger synchronization job
|
||||
"Jobs Pool" -> "Nova Cluster Data Model Collector" : synchronize
|
||||
|
||||
activate "Nova Cluster Data Model Collector"
|
||||
"Nova Cluster Data Model Collector" -> "Nova API"\
|
||||
: Fetch needed data to build the cluster data model
|
||||
"Nova API" --> "Nova Cluster Data Model Collector" : Needed data
|
||||
"Nova Cluster Data Model Collector" -> "Nova Cluster Data Model Collector"\
|
||||
: Build an in-memory cluster data model
|
||||
]o<-- "Nova Cluster Data Model Collector" : Done
|
||||
deactivate "Nova Cluster Data Model Collector"
|
||||
|
||||
@enduml
|
||||
@@ -10,45 +10,41 @@ activate "Decision Engine"
|
||||
"AMQP Bus" <[#blue]- "Decision Engine" : notify new audit state = ONGOING
|
||||
"Decision Engine" -> "Database" : get audit parameters (goal, strategy, ...)
|
||||
"Decision Engine" <-- "Database" : audit parameters (goal, strategy, ...)
|
||||
"Decision Engine" --> "Decision Engine": select appropriate \
|
||||
optimization strategy (via the Strategy Selector)
|
||||
"Decision Engine" --> "Decision Engine"\
|
||||
: select appropriate optimization strategy (via the Strategy Selector)
|
||||
create Strategy
|
||||
"Decision Engine" -> "Strategy" : execute()
|
||||
"Decision Engine" -> "Strategy" : execute strategy
|
||||
activate "Strategy"
|
||||
create "Cluster Data Model Collector"
|
||||
"Strategy" -> "Cluster Data Model Collector" : get cluster data model
|
||||
|
||||
activate "Cluster Data Model Collector"
|
||||
loop while enough data to build cluster data model
|
||||
"Cluster Data Model Collector" -> "Nova API" : get resource state (\
|
||||
host, instance, ...)
|
||||
"Cluster Data Model Collector" <-- "Nova API" : resource state
|
||||
"Strategy" -> "Cluster Data Model Collector" : get cluster data model
|
||||
"Cluster Data Model Collector" --> "Strategy"\
|
||||
: copy of the in-memory cluster data model
|
||||
loop while enough history data for the strategy
|
||||
"Strategy" -> "Ceilometer API" : get necessary metrics
|
||||
"Strategy" <-- "Ceilometer API" : aggregated metrics
|
||||
end
|
||||
"Cluster Data Model Collector" -> "Strategy" : cluster data model
|
||||
deactivate "Cluster Data Model Collector"
|
||||
|
||||
loop while enough history data for the strategy
|
||||
"Strategy" -> "Ceilometer API": get necessary metrics
|
||||
"Strategy" <-- "Ceilometer API": aggregated metrics
|
||||
end
|
||||
"Strategy" -> "Strategy" : compute/set needed actions for the solution \
|
||||
so it achieves its goal
|
||||
"Strategy" -> "Strategy" : compute/set efficacy indicators for the solution
|
||||
"Strategy" -> "Strategy" : compute/set the solution global efficacy
|
||||
"Decision Engine" <-- "Strategy" : solution (contains a list of unordered \
|
||||
actions alongside its efficacy indicators as well as its global efficacy)
|
||||
"Strategy" -> "Strategy"\
|
||||
: compute/set needed actions for the solution so it achieves its goal
|
||||
"Strategy" -> "Strategy" : compute/set efficacy indicators for the solution
|
||||
"Strategy" -> "Strategy" : compute/set the solution global efficacy
|
||||
"Decision Engine" <-- "Strategy"\
|
||||
: solution (unordered actions, efficacy indicators and global efficacy)
|
||||
deactivate "Strategy"
|
||||
|
||||
"Decision Engine" --> "Planner": load actions scheduler (i.e. Planner plugin)
|
||||
create "Planner"
|
||||
"Decision Engine" -> "Planner": schedule()
|
||||
"Planner" -> "Planner": schedule actions according to \
|
||||
scheduling rules/policies
|
||||
"Decision Engine" <-- "Planner": new action plan
|
||||
"Decision Engine" -> "Planner" : load actions scheduler
|
||||
"Planner" --> "Decision Engine" : planner plugin
|
||||
"Decision Engine" -> "Planner" : schedule actions
|
||||
activate "Planner"
|
||||
"Planner" -> "Planner"\
|
||||
: schedule actions according to scheduling rules/policies
|
||||
"Decision Engine" <-- "Planner" : new action plan
|
||||
deactivate "Planner"
|
||||
"Decision Engine" -> "Database" : save new action plan in database
|
||||
"Decision Engine" -> "Database" : update audit.state = SUCCEEDED
|
||||
"AMQP Bus" <[#blue]- "Decision Engine" : notify new audit state = SUCCEEDED
|
||||
|
||||
deactivate "Decision Engine"
|
||||
|
||||
hnote over "Decision Engine" : Idle
|
||||
|
||||
@enduml
|
||||
|
||||
Reference in New Issue
Block a user