Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

As mentioned above, EMCO provides for the addition of controllers to perform specific placement and action operations on a Composite Application prior to it being deployed to a set of clusters.

This sequence diagram illuillustrates how action and placment controllers are registered with orchestrator.  Later on, the part of the sequence where the orchestrator is preparing the AppContext for a composite application, the controllers are invoked in priority order to update the AppContext per their specific function is shown.

PlantUML Macro
titlePlacement and Action Controller Registration
@startuml
skinparam roundcorner 20
title Register placement and action controllers via Controller API

actor Admin

box "Distributed Application Scheduler\n(orchestrator)" #LightBlue
participant Controller_API
participant GRPC_Server_info
participant scheduler
end box

box "EMCO DB" #LightGreen
database mongo
end box

box "AppContext" #LightGreen
database etcd
end box

box "Placement Controller(s)" #LightBlue
participant UpdateContextAPI_place
end box

box "Action Controller(s)" #LightBlue
participant UpdateContextAPI_action
end box

loop for all placement and action controllers
Admin -> Controller_API : POST controller\nregistration information\n(Name, Host, Port, Type, Priority)
Controller_API -> mongo : Save controller record
Controller_API -> GRPC_Server_info : add a GRPC connection\nto controller to\ninternal table
Controller_API -> Admin : Return
end


== Some time later - orchestrator\nis preparing an AppContext\nfor deployment ==
|||
scheduler -> etcd : Prepares initial AppContext\nfor the composite app\nusing the generic\nplacement intents
scheduler -> mongo : Retrieve all controllers\nrequired for this AppContext\ndeployment

loop for all placement controllers in priority order
scheduler -> GRPC_Server_info : Retrieve gRPC connection\nfor controller
scheduler -> UpdateContextAPI_place : GRPC UpdateContext API call (AppContext identifier)
UpdateContextAPI_place -> etcd : updates AppContext according to\nthis controllers placement function
UpdateContextAPI_place -> scheduler : return
end
|||
loop for all action controllers in priority order
scheduler -> GRPC_Server_info : Retrieve gRPC connection\nfor controller
scheduler -> UpdateContextAPI_action : GRPC UpdateContext API call (AppContext identifier)
UpdateContextAPI_action -> etcd : updates AppContext according to\nthis controllers action function
UpdateContextAPI_action -> scheduler : return
end

|||
@enduml