Add diagrams to the architecture doc page
Added some data model diagrams, sequence diagrams and state machine diagrams. The state machine diagrams and sequence diagrams are built with PlantUML whereas data model diagrams are built with Dia. Also added some textual description with the sequence diagrams. Change-Id: Iffbb47b0f2d12ce63eeaa1531a1bd1a790d69e79 Closes-Bug: #1531802
This commit is contained in:
Binary file not shown.
BIN
doc/source/image_src/dia/architecture.dia
Normal file
BIN
doc/source/image_src/dia/architecture.dia
Normal file
Binary file not shown.
BIN
doc/source/image_src/dia/functional_data_model.dia
Normal file
BIN
doc/source/image_src/dia/functional_data_model.dia
Normal file
Binary file not shown.
16
doc/source/image_src/plantuml/action_plan_state_machine.txt
Normal file
16
doc/source/image_src/plantuml/action_plan_state_machine.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
@startuml
|
||||
|
||||
[*] --> RECOMMENDED: The Watcher Planner\ncreates the Action Plan
|
||||
RECOMMENDED --> TRIGGERED: Administrator launches\nthe Action Plan
|
||||
TRIGGERED --> ONGOING: The Watcher Applier receives the request\nto launch the Action Plan
|
||||
ONGOING --> FAILED: Something failed while executing\nthe Action Plan in the Watcher Applier
|
||||
ONGOING --> SUCCEEDED: The Watcher Applier executed\nthe Action Plan successfully
|
||||
FAILED --> DELETED : Administrator removes\nAction Plan
|
||||
SUCCEEDED --> DELETED : Administrator removes\nAction Plan
|
||||
ONGOING --> CANCELLED : Administrator cancels\nAction Plan
|
||||
RECOMMENDED --> CANCELLED : Administrator cancels\nAction Plan
|
||||
TRIGGERED --> CANCELLED : Administrator cancels\nAction Plan
|
||||
CANCELLED --> DELETED
|
||||
DELETED --> [*]
|
||||
|
||||
@enduml
|
||||
14
doc/source/image_src/plantuml/audit_state_machine.txt
Normal file
14
doc/source/image_src/plantuml/audit_state_machine.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
@startuml
|
||||
|
||||
[*] --> PENDING: Audit requested by Administrator
|
||||
PENDING --> ONGOING: Audit request is received\nby the Watcher Decision Engine
|
||||
ONGOING --> FAILED: Audit fails\n(no solution found, technical error, ...)
|
||||
ONGOING --> SUCCEEDED: The Watcher Decision Engine\ncould find at least one Solution
|
||||
FAILED --> DELETED : Administrator wants to\narchive/delete the Audit
|
||||
SUCCEEDED --> DELETED : Administrator wants to\narchive/delete the Audit
|
||||
PENDING --> CANCELLED : Administrator cancels\nthe Audit
|
||||
ONGOING --> CANCELLED : Administrator cancels\nthe Audit
|
||||
CANCELLED --> DELETED : Administrator wants to\narchive/delete the Audit
|
||||
DELETED --> [*]
|
||||
|
||||
@enduml
|
||||
@@ -0,0 +1,24 @@
|
||||
@startuml
|
||||
|
||||
|
||||
actor Administrator
|
||||
|
||||
Administrator -> "Watcher CLI" : watcher audit-create -a <audit_template_uuid>
|
||||
|
||||
"Watcher CLI" -> "Watcher API" : POST audit(parameters)
|
||||
"Watcher API" -> "Watcher Database" : create new audit in database (status=PENDING)
|
||||
|
||||
"Watcher API" <-- "Watcher Database" : new audit uuid
|
||||
"Watcher CLI" <-- "Watcher API" : return new audit URL
|
||||
|
||||
Administrator <-- "Watcher CLI" : new audit uuid
|
||||
|
||||
"Watcher API" -> "AMQP Bus" : trigger_audit(new_audit.uuid)
|
||||
"AMQP Bus" -> "Watcher Decision Engine" : trigger_audit(new_audit.uuid)
|
||||
|
||||
ref over "Watcher Decision Engine"
|
||||
Trigger audit in the
|
||||
Watcher Decision Engine
|
||||
end ref
|
||||
|
||||
@enduml
|
||||
@@ -0,0 +1,16 @@
|
||||
@startuml
|
||||
|
||||
actor Administrator
|
||||
|
||||
Administrator -> "Watcher CLI" : watcher audit-template-create <name> <goal>
|
||||
"Watcher CLI" -> "Watcher API" : POST audit_template(parameters)
|
||||
|
||||
"Watcher API" -> "Watcher API" : make sure goal exist in configuration
|
||||
"Watcher API" -> "Watcher Database" : create new audit_template in database
|
||||
|
||||
"Watcher API" <-- "Watcher Database" : new audit template uuid
|
||||
"Watcher CLI" <-- "Watcher API" : return new audit template URL in HTTP Location Header
|
||||
Administrator <-- "Watcher CLI" : new audit template uuid
|
||||
|
||||
@enduml
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
@startuml
|
||||
|
||||
actor Administrator
|
||||
|
||||
Administrator -> "Watcher CLI" : watcher action-plan-start <action_plan_uuid>
|
||||
|
||||
"Watcher CLI" -> "Watcher API" : PATCH action_plan(state=TRIGGERED)
|
||||
"Watcher API" -> "Watcher Database" : action_plan.state=TRIGGERED
|
||||
|
||||
"Watcher CLI" <-- "Watcher API" : HTTP 200
|
||||
|
||||
Administrator <-- "Watcher CLI" : OK
|
||||
|
||||
"Watcher API" -> "AMQP Bus" : launch_action_plan(action_plan.uuid)
|
||||
"AMQP Bus" -> "Watcher Applier" : launch_action_plan(action_plan.uuid)
|
||||
|
||||
ref over "Watcher Applier"
|
||||
Launch Action Plan in the
|
||||
Watcher Applier
|
||||
end ref
|
||||
|
||||
@enduml
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
@startuml
|
||||
|
||||
"AMQP Bus" -> "Watcher Applier" : launch_action_plan(action_plan.uuid)
|
||||
"Watcher Applier" -> "Watcher Database" : action_plan.state=ONGOING
|
||||
"Watcher Applier" -[#blue]> "AMQP Bus" : notify action plan state = ONGOING
|
||||
"Watcher Applier" -> "Watcher Database" : get_action_list(action_plan.uuid)
|
||||
"Watcher Applier" <-- "Watcher Database" : actions
|
||||
loop for each action of the action flow
|
||||
create Action
|
||||
"Watcher Applier" -> Action : instantiate Action object with target resource id\n and input parameters
|
||||
"Watcher Applier" -> Action : validate_parameters()
|
||||
"Watcher Applier" <-- Action : OK
|
||||
"Watcher Applier" -[#blue]> "AMQP Bus" : notify action state = ONGOING
|
||||
"Watcher Applier" -> Action : preconditions()
|
||||
"Watcher Applier" <-- Action : OK
|
||||
"Watcher Applier" -> Action : execute()
|
||||
alt action is "migrate instance"
|
||||
Action -> "Nova API" : migrate(instance_id, dest_host_id)
|
||||
Action <-- "Nova API" : OK
|
||||
else action is "disable hypervisor"
|
||||
Action -> "Nova API" : host-update(host_id, maintenance=true)
|
||||
Action <-- "Nova API" : OK
|
||||
end
|
||||
"Watcher Applier" <-- Action : OK
|
||||
"Watcher Applier" -> "Watcher Database" : action.state=SUCCEEDED
|
||||
"Watcher Applier" -[#blue]> "AMQP Bus" : notify action state = SUCCEEDED
|
||||
end
|
||||
"Watcher Applier" -> "Watcher Database" : action_plan.state=SUCCEEDED
|
||||
"Watcher Applier" -[#blue]> "AMQP Bus" : notify action plan state = SUCCEEDED
|
||||
|
||||
@enduml
|
||||
@@ -0,0 +1,31 @@
|
||||
@startuml
|
||||
|
||||
"AMQP Bus" -> "Watcher Decision Engine" : trigger_audit(new_audit.uuid)
|
||||
"Watcher Decision Engine" -> "Watcher Database" : update audit.state = ONGOING
|
||||
"AMQP Bus" <[#blue]- "Watcher Decision Engine" : notify new audit state = ONGOING
|
||||
"Watcher Decision Engine" -> "Watcher Database" : get audit parameters(goal, ...)
|
||||
"Watcher Decision Engine" <-- "Watcher Database" : audit parameters(goal, ...)
|
||||
create Strategy
|
||||
"Watcher Decision Engine" -[#red]> "Strategy": select appropriate\noptimization strategy
|
||||
loop while enough data to build cluster data model
|
||||
"Watcher Decision Engine" -> "Nova API" : get resource state (host, instance, ...)
|
||||
"Watcher Decision Engine" <-- "Nova API" : resource state
|
||||
end
|
||||
"Watcher Decision Engine" -[#red]> "Watcher Decision Engine": build cluster_data_model
|
||||
"Watcher Decision Engine" -> "Strategy" : execute(cluster_data_model)
|
||||
loop while enough history data for the strategy
|
||||
"Strategy" -> "Ceilometer API": get_aggregated_metrics\n(resource_id,meter_name,period,aggregate_method)
|
||||
"Strategy" <-- "Ceilometer API": aggregated metrics
|
||||
end
|
||||
"Strategy" -> "Strategy" : compute solution to achieve goal
|
||||
"Watcher Decision Engine" <-- "Strategy" : solution = array of actions (i.e. not scheduled yet)
|
||||
create "Watcher Planner"
|
||||
"Watcher Decision Engine" -[#red]> "Watcher Planner": select appropriate actions scheduler (i.e. Planner implementation)
|
||||
"Watcher Decision Engine" -> "Watcher Planner": schedule(audit_id, solution)
|
||||
"Watcher Planner" -> "Watcher Planner": schedule actions according to\nscheduling rules/policies
|
||||
"Watcher Decision Engine" <-- "Watcher Planner": new action_plan
|
||||
"Watcher Decision Engine" -> "Watcher Database" : save new action_plan in database
|
||||
"Watcher Decision Engine" -> "Watcher Database" : update audit.state = SUCCEEDED
|
||||
"AMQP Bus" <[#blue]- "Watcher Decision Engine" : notify new audit state = SUCCEEDED
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user