def tf_state_list()

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


def tf_state_list(context, module, workdir, env):
    """Get list of all states."""
    debug = "TF_LOG" in env
    promise = context.run(
        f'\
    cp {module} {workdir} &&\
    terraform -chdir="{workdir}" state list',
        warn=True,
        hide=True,
        asynchronous=True,
        env=env,
    )
    result = promise.join()

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

    if result.exited:
        return {
            "response": Response(
                status=500,
                response=json.dumps(
                    {
                        "status": "ERROR",
                        "stdout": result.stdout,
                        "stderr": result.stderr,
                    }
                ),
            )
        }
    status_dict = {"resources": result.stdout.split()}
    for group_name, group_resources in RESOURCE_GROUP.items():
        if group_resources.issubset(set(status_dict["resources"])):
            status_dict["resources"].append(group_name)
    logging.debug(status_dict["resources"])
    return status_dict