def tf_init()

in dialogflow-cx/vpc-sc-demo/backend/asset_utilities.py [0:0]


def tf_init(context, module, workdir, env, prefix):
    """Initialize terraform."""
    user_access_token = env.pop("GOOGLE_OAUTH_ACCESS_TOKEN")
    debug = "TF_LOG" in env

    credentials = get_credentials()
    request = google.auth.transport.requests.Request()
    credentials.refresh(request)
    env["GOOGLE_OAUTH_ACCESS_TOKEN"] = credentials.token
    promise = context.run(
        (
            f"cp {module} {workdir} && "
            f"terraform -chdir={workdir} init "
            "-upgrade -reconfigure "
            f'-backend-config="access_token={env["GOOGLE_OAUTH_ACCESS_TOKEN"]}" '
            f'-backend-config="bucket={os.environ["TF_PLAN_STORAGE_BUCKET"]}" '
            f'-backend-config="prefix={prefix}"'
        ),
        warn=True,
        hide=True,
        asynchronous=True,
    )
    result = promise.join()
    env["GOOGLE_OAUTH_ACCESS_TOKEN"] = user_access_token

    if debug:
        logging.debug(result.exited)
        logging.debug(result.stdout)
        logging.debug(result.stderr)

    if result.exited:
        return Response(
            status=500,
            response=json.dumps(
                {
                    "status": "ERROR",
                    "stdout": result.stdout,
                    "stderr": result.stderr,
                }
            ),
        )