堆疊狀態我有以下條件 1. stackCreate 2. stackUpdate 3. stackCreate如何捕捉在OpenStack的
我所試圖做的是,雖然stackCreate /更新/刪除被觸發,我需要檢查進度。我怎樣才能做到這一點?我知道2條路線 1. openstack堆棧事件列表。 2.我有下面的python代碼。
stack_id = str(hc.stacks.get(stack_name).id)
hc.stacks.delete(stack_id=stack_id)
try:
evntsdata = hc.events.list(stack_name)[0].to_dict()
event_handle = evntsdata['resource_status']
if event_handle == 'DELETE_IN_PROGRESS':
loopcontinue = True
while loopcontinue:
evntsdata = hc.events.list(stack_name)[0].to_dict()
event_handle = evntsdata['resource_status']
if event_handle == 'DELETE_COMPLETE':
loopcontinue = False
print(str(timestamp()) + " " + "Delete is Completed!")
elif event_handle == 'DELETE_FAILED':
print("Failed") # this needs a proper error msg
sys.exit(0)
else:
print(str(timestamp()) + " " + "Delete in Progress!")
time.sleep(5)
elif event_handle == 'DELETE_COMPLETE':
print(str(timestamp()) + " " + "Delete is Completed!")
sys.exit(0)
elif event_handle == 'DELETE_FAILED':
print("Failed")
sys.exit(0)
except AttributeError as e:
print(str(timestamp()) + " " + "ERROR: Stack Delete Failure")
raise
except (RuntimeError, heatclient.exc.NotFound):
print("Stack doesnt exist:", stack_name)
第一種方法是shell命令,其中我不是很好。 (或者讓我說我不知道如何最好地集成在python中的shell命令) 這兩種方法的問題是,我正在執行這些很多步驟來確定堆棧刪除是否成功。我正在重複stackupdate和創建這不是我正在考慮的最佳實踐。任何人都有任何想法如何我可以最小化這種邏輯?任何幫助是極大的讚賞。
我仍然覺得這個漫長。我正在考慮循環check_output([「openstack」,「stack」,「event」,「list」,stack_name]) –
您可以使用「openstack stack show -f value -c stack_status」 –
Tejaswi
這仍然不行因爲它沒有通過不斷變化的狀態循環。 –