package Ġcom . do it intl . bl aster . de leter Ċ Ċ import Ġcom . do it intl . bl aster . shared . Constants . CLOUD _ BL ASTER Ċ import Ġcom . google . api . client . googleapis . auth . oauth 2 . Google Credential Ċ import Ġcom . google . api . client . googleapis . jav an et . Google Net Http Transport Ċ import Ġcom . google . api . client . json . jackson 2 . Jack son Factory Ċ import Ġcom . google . api . services . compute . Compute Ċ import Ġcom . google . api . services . compute . model . Operation Ċ import Ġjava . lang . System . currentTimeMillis ĊĊ Ċ abstract Ġclass ĠG CE Base De leter Ġ: ĠBase De leter () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġtwo Min Ġ= Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Compute Service (): ĠCompute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Transport Ġ= ĠGoogle Net Http Transport . new Trusted Transport () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Factory Ġ= ĠJack son Factory . getDefaultInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcredential Ġ= ĠGoogle Credential . getApplication Default () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( credential . create Scoped Required ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Ġ= Ġcredential . create Scoped ( listOf (" https :// www . googleapis . com / auth / cloud - platform ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCompute . Builder ( http Transport , Ġjson Factory , Ġcredential ). set Application Name ( CLOUD _ BL ASTER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġwait On Z onal Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation : ĠOperation ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠcurrentTime Millis () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimeout Ġ= Ġstart Ġ+ Ġtwo Min ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( currentTimeMillis () Ġ< Ġtimeout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Operation : ĠOperation Ġ= Ġget Compute Service () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. zone Operations () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( project , Ġlocation , Ġoperation . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Operation . status Ġ== Ġ" DONE ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( SLEEP _ IN _ LO OPS _ MS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwait On Region al Operation ( project : ĠString , Ġlocation : ĠString , Ġoperation : ĠOperation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠcurrentTime Millis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimeout Ġ= Ġstart Ġ+ Ġtwo Min ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( currentTimeMillis () Ġ< Ġtimeout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Operation : ĠOperation Ġ= Ġget Compute Service () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. region Operations (). get ( project , Ġlocation , Ġoperation . name ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Operation . status Ġ== Ġ" DONE ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( SLEEP _ IN _ LO OPS _ MS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwait On Global Operation ( project : ĠString , Ġoperation : ĠOperation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠcurrentTime Millis () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimeout Ġ= Ġstart Ġ+ Ġtwo Min ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( currentTimeMillis () Ġ< Ġtimeout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Operation : ĠOperation Ġ= Ġget Compute Service () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. global Operations (). get ( project , Ġoperation . name ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Operation . status Ġ== Ġ" DONE ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( SLEEP _ IN _ LO OPS _ MS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ