必要に応じて openstack にサーバーを自動的に作成するプログラムを書いています。問題は、インスタンスが IP アドレスを取得するまでプログラムを待機させてから続行することです。インスタンスが IP を取得していない場合、novaclient は例外をスローし、オブジェクトは終了します。スリープ機能を使用すると機能しますが、それを永続的な解決策にしたくありません。
ipAddress = None
try:
instance = nova.servers.create(name=self.hostName, image=image,
flavor=flavor, key_name="mykey",
nics=nics)
while(ipAddress == None): #<---Something like this, just actually working
for network in instance.networks['my_net']:
if re.match('\d+\.\d+\.\d+\.\d+', network):
self.ipAddress = network
break
print 'The server is waiting at IP address {0}.'.format(self.ipAddress)
except:
print "could not create webserver"
#WebManager.exception(hostname)
finally:
print("Execution Completed")
self.addToLoadbalancer()
サーバーがIPを取得するまで待機する一種のスピンロックなどを作成する方法はありますか? どんなヒントも素晴らしいでしょう。