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