in ManagedkdbInsights/dbmaint/managed_kx.py [0:0]
def wait_for_changeset_status(client, environmentId:str, databaseName: str, changesetId: str, status: str='COMPLETED', sleep_sec=10, max_wait_sec=1200, show_wait=False):
if environmentId is None:
environmentId = get_kx_environment_id(client)
"""
Function polls until changeset is in desired status
"""
total_wait = 0
while True and total_wait < max_wait_sec:
try:
resp = client.get_kx_changeset(environmentId=environmentId, databaseName=databaseName, changesetId=changesetId)
except client.exceptions.ResourceNotFoundException:
resp = None
continue
if resp['ResponseMetadata']['HTTPStatusCode'] != 200:
sys.stderr.write("Error:\n {resp}")
else:
resp.pop('ResponseMetadata', None)
a_status = resp.get('status')
if a_status is not None and a_status.upper() == "FAILED":
print(f"Failed, 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 a_status is not None and a_status.upper() != status.upper():
if show_wait:
print(f"Status is {a_status}, total wait {datetime.timedelta(seconds=total_wait)}, waiting {sleep_sec} sec ...")
time.sleep(sleep_sec)
total_wait = total_wait + sleep_sec
continue
else:
return resp
return None