def setup_stack()

in scripts/testing/cli.py [0:0]


def setup_stack(name, vm_zone, es_version, connectors_ref, es_host):
    with click.progressbar(label="Setting up the stack...", length=100) as steps:
        # Upload pull-connectors file
        cmd = [
            "gcloud",
            "compute",
            "scp",
            PULL_CONNECTORS_SCRIPT,
            f"{name}:~/",
            "--zone",
            vm_zone,
        ]
        run_gcloud_cmd(cmd)
        steps.update(1)

        # pull connectors repo
        cmd = [
            "gcloud",
            "compute",
            "ssh",
            name,
            "--zone",
            vm_zone,
            "--command",
            f"sudo ./{os.path.basename(PULL_CONNECTORS_SCRIPT)} {connectors_ref}",
        ]
        run_gcloud_cmd(cmd)
        steps.update(9)

        # check if it's a cloud/serverless deployment
        if es_host != ES_DEFAULT_HOST:
            steps.update(90)
            return

        # upload Elasticsearch docker compose file
        cmd = [
            "gcloud",
            "compute",
            "scp",
            DOCKER_COMPOSE_FILE,
            f"{name}:~/",
            "--zone",
            vm_zone,
        ]
        run_gcloud_cmd(cmd)

        steps.update(1)

        # run docker compose file
        cmd = [
            "gcloud",
            "compute",
            "ssh",
            name,
            "--zone",
            vm_zone,
            "--command",
            f"sudo ES_VERSION={es_version} docker compose -f ~/{os.path.basename(DOCKER_COMPOSE_FILE)} up -d",
        ]
        run_gcloud_cmd(cmd)

        steps.update(9)

        # wait when Elasticsearch starts
        for _i in range(1, 16):
            time.sleep(SLEEP_TIMEOUT)
            steps.update(4)

        steps.update(20)