StartVM and TerminateVM Main Flow of Cloud Drivers - cloud-barista/cb-spider GitHub Wiki

StartVM()/TerminateVM() retry timeout ์กฐ์ • ์ด๋ ฅ

[Init]

  • StartVM: 30s
  • TerminateVM: 10s
  • issues:
    • Alibaba TerminateVM ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
    • OpenStack StartVM ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

[2021.05.21.]

  • StartVM: 120s
  • TerminateVM: 60s

[StartVM main flow]

  • Focusing on CallLog and Waiting Loop
  • Waiting Loop: VM ์ •๋ณด ์ œ๊ณต์„ ์œ„ํ•ด์„œ VM ์ •๋ณด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€(=running status) ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ž‘์—…
    • StartVM ๊ทœ๊ฒฉ ์ฐธ๊ณ : StartVM(vmReqInfo VMReqInfo) (VMInfo, error)
  • Flow์—์„œ ํ•จ์ˆ˜ ์ด๋ฆ„์€ ์‹ค์ œ ์ด๋ฆ„๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ
    • SetUser('cb-user'): cloud-init ๋ฐ์ดํ„ฐ ์„ค์ •
    • CreateUser('cb-user'): runSSH into VM
Driver Names StartVM Flow Etc
ALIBABA GetKey() SetUser('cb-user') StartTime ย  RunInstances() EndTime ย  Loop-120sec(getStatus('Running'): sleep 1s) return GetVMInfo()
AWS GetKey() SetUser('cb-user') StartTime ย  RunInstances() EndTime ย  WaitUntilInstanceRunning() return GetVMInfo()
AZURE CheckVM() CreatePublicIP() CreateVNic() GetPublicKey() StartTime ย  CreateOrUpdate() EndTime ย  WaitForCompletionRef() return GetVMInfo()
CLOUDIT StartTime ย  Rest.Post(ACE, servers) EndTime ย  Loop-120sec(get(PrivateIP && Running): sleep 1s) ย  Loop-120sec(echo: sleep 1) CreateUser('cb-user') Restart(sshd) return GetVMInfo()
GCP GetKey() StartTime ย  Instances.Insert.Do() EndTime ย  Loop-120sec(getStatus('Running'): sleep 1s) return GetVMInfo()
OPENSTACK CheckVM() setUser('cb-user') StartTime ย  servers.Create() EndTime ย  Loop-120sec(getStatus('active'): sleep 1s) ย  AssociatePublicIP() return GetVMInfo()

[TerminateVM main flow]

  • Focusing on CallLog and Waiting Loop
  • Waiting Loop: VM์ด ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ž‘์—…
    • TerminateVM ๊ทœ๊ฒฉ ์ฐธ๊ณ : TerminateVM(vmIID IID) (VMStatus, error)
  • Flow์—์„œ ํ•จ์ˆ˜ ์ด๋ฆ„์€ ์‹ค์ œ ์ด๋ฆ„๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ
Driver Names TerminateVM Flow Etc
ALIBABA SuspendVM() ย  Loop-60sec(getStatus('Suspended'): sleep 1s) Starttime ย  DeleteInstance() EndTime return 'Terminating'
AWS StartTime ย  TerminateInstances() EndTime return 'Terminating'
AZURE GetVM() StartTime ย  Delete() EndTime ย  WaitForCompletionRef() DeleteVNic() DeletePublicIP() DeleteVMDisk() return irs.NotExist
CLOUDIT GetVM() DisassociatePublicIP() sleep 5s StartTime ย  Terminate() EndTime return irs.Terminating
GCP StartTime ย  Delete() EndTime return 'Terminating'
OPENSTACK GetVM() floatingip.Delete() StartTime ย  Delete() EndTime return irs.Terminating