servicecatalog_puppet/aws.py [366:393]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        )
        .get("RecordDetail")
        .get("ProvisionedProductId")
    )
    logger.info(f"{uid}: provisioning started: {provisioned_product_id}")

    if execution == constants.EXECUTION_MODE_ASYNC:
        return provisioned_product_id
    else:
        while True:
            response = service_catalog.describe_provisioned_product(
                Id=provisioned_product_id
            )
            logger.info(
                f"{uid} :: "
                f"waiting for provision to complete: {response.get('ProvisionedProductDetail').get('Status')}"
            )
            provisioned_product_detail = response.get("ProvisionedProductDetail")
            execute_status = provisioned_product_detail.get("Status")
            if execute_status in ["AVAILABLE", "EXECUTE_SUCCESS"]:
                break
            elif execute_status in ["ERROR", "TAINTED"]:
                raise Exception(
                    f"{uid} :: Execute failed: {execute_status}: {provisioned_product_detail.get('StatusMessage')}"
                )
            else:
                time.sleep(5)
        return provisioned_product_id
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



servicecatalog_puppet/aws.py [422:449]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        )
        .get("RecordDetail")
        .get("ProvisionedProductId")
    )
    logger.info(f"{uid}: provisioning started: {provisioned_product_id}")

    if execution == constants.EXECUTION_MODE_ASYNC:
        return provisioned_product_id
    else:
        while True:
            response = service_catalog.describe_provisioned_product(
                Id=provisioned_product_id
            )
            logger.info(
                f"{uid} :: "
                f"waiting for provision to complete: {response.get('ProvisionedProductDetail').get('Status')}"
            )
            provisioned_product_detail = response.get("ProvisionedProductDetail")
            execute_status = provisioned_product_detail.get("Status")
            if execute_status in ["AVAILABLE", "EXECUTE_SUCCESS"]:
                break
            elif execute_status in ["ERROR", "TAINTED"]:
                raise Exception(
                    f"{uid} :: Execute failed: {execute_status}: {provisioned_product_detail.get('StatusMessage')}"
                )
            else:
                time.sleep(5)
        return provisioned_product_id
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



