in ManagedkdbInsights/torq/managed_kx.py [0:0]
def wait_for_dataview_status(client, environmentId:str, databaseName: str, dataviewName: str, status: str='ACTIVE', sleep_sec=30, max_wait_sec=3600, show_wait=False):
if environmentId is None:
environmentId = get_kx_environment_id(client)
"""
Function polls until dataview is in desired status
"""
total_wait = 0
max_polls = max_wait_sec/sleep_sec
while True and total_wait < max_wait_sec:
this_resp = get_kx_dataview(client=client, environmentId = environmentId, databaseName=databaseName, dataviewName=dataviewName)
if this_resp is None:
print(f"Dataview: {dataviewName} not found")
return None
this_status = this_resp['status']
if this_status.upper() == "CREATE_FAILED":
print(f"Dataview: {this_status}, total wait {datetime.timedelta(seconds=total_wait)}")
error_info = resp.get('errorInfo', None)
if error_info is not None:
print(f"Type: {error_info.get('errorType', '')}")
print(f"Message: {error_info.get('errorMessage', '')}")
print(error_info)
else:
print(resp)
return None
elif this_status.upper() != status.upper():
if show_wait:
print(f"Dataview: {dataviewName} status is {this_status}, total wait {datetime.timedelta(seconds=total_wait)}, waiting {sleep_sec} sec ...")
time.sleep(sleep_sec)
total_wait = total_wait + sleep_sec
continue
else:
if show_wait:
if total_wait > 0:
print(f"Dataview: {dataviewName} status is now {this_status}, total wait {datetime.timedelta(seconds=total_wait)}")
else:
print(f"Dataview: {dataviewName} status is {this_status}")
return this_resp
print(f"No Dataview after {datetime.timedelta(seconds=total_wait)}")