seqdiag { node_width = 80; edge_length = 100; "Client" "Tacker-server" "Tacker-conductor" "VnfLcmDriver" "OpenstackDriver" "Heat" "MgmtDriver" "VnfInstance(Tacker DB)" "RemoteCommandExecutor" "Ansible" "NfvoPlugin" Client -> "Tacker-server" [label = "1. POST /vnf_instances/{vnfInstanceId}/instantiate"]; Client <-- "Tacker-server" [label = "Response 202 Accepted"]; "Tacker-server" -> "Tacker-conductor" [label = "2. Trigger asynchronous task"]; "Tacker-conductor" -> "VnfLcmDriver" [label = "3. Execute VnfLcmDriver"]; "VnfLcmDriver" -> "OpenstackDriver" [label = "4. Execute OpenstackDriver"]; "OpenstackDriver" -> "Heat" [label = "5. Create stack"]; "OpenstackDriver" <-- "Heat" [label = "Return stack id"]; "VnfLcmDriver" <-- "OpenstackDriver" [label = "Return instance_id"]; "VnfLcmDriver" -> "MgmtDriver" [label = "6. Instantiate_end"]; "MgmtDriver" -> "VnfInstance(Tacker DB)" [label = "7. Get stack id"]; "MgmtDriver" <-- "VnfInstance(Tacker DB)" [label = ""]; "MgmtDriver" -> "Heat" [label = "8. Get SSH IP address"]; "MgmtDriver" <-- "Heat" [label = ""]; "MgmtDriver" -> "MgmtDriver" [label = "9. Generate a new inventory file"]; "MgmtDriver" -> "RemoteCommandExecutor" [label = "10. Call Ansible via SSH"]; "RemoteCommandExecutor" -> "Ansible" [label = "11. Run playbooks"]; "RemoteCommandExecutor" <-- "Ansible" [label = ""]; "MgmtDriver" <-- "RemoteCommandExecutor" [label = ""]; "MgmtDriver" -> "RemoteCommandExecutor" [label = "12. Get access info of Kubernetes cluster"]; "MgmtDriver" <-- "RemoteCommandExecutor" [label = ""]; "MgmtDriver" -> "NfvoPlugin" [label = "13. Register Kubernetes VIM to tacker"]; "MgmtDriver" <-- "NfvoPlugin" [label = ""]; "MgmtDriver" -> "VnfInstance(Tacker DB)" [label = "14. Update VimConnectionInfo with access info of Kubernetes cluster"]; "MgmtDriver" <-- "VnfInstance(Tacker DB)" [label = ""]; "MgmtDriver" -> "RemoteCommandExecutor" [label = "15. Install and configure ExternalLB"]; "MgmtDriver" <-- "RemoteCommandExecutor" [label = ""]; "VnfLcmDriver" <-- "MgmtDriver" [label = ""]; "Tacker-conductor" <-- "VnfLcmDriver" [label = ""]; }