From 5eccc05b46039ebd97c63262977ad861b2764380 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 17 Oct 2024 10:09:46 +0200 Subject: [PATCH 01/19] feat: integrate pocketdex with tilt --- Tiltfile | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/Tiltfile b/Tiltfile index 8c339de7f..c29883602 100644 --- a/Tiltfile +++ b/Tiltfile @@ -58,6 +58,10 @@ localnet_config_defaults = { # By default, we use the `helm_repo` function below to point to the remote repository # but can update it to the locally cloned repo for testing & development "helm_chart_local_repo": {"enabled": False, "path": "../helm-charts"}, + "indexer": { + "enabled": True, + "clone_if_not_present": False, + } } localnet_config_file = read_yaml(localnet_config_path, default=localnet_config_defaults) # Initial empty config @@ -82,7 +86,6 @@ if localnet_config["helm_chart_local_repo"]["enabled"]: print("Using local helm chart repo " + helm_chart_local_repo) chart_prefix = helm_chart_local_repo + "/charts/" - # Observability print("Observability enabled: " + str(localnet_config["observability"]["enabled"])) if localnet_config["observability"]["enabled"]: @@ -383,3 +386,34 @@ if localnet_config["rest"]["enabled"]: print("REST enabled: " + str(localnet_config["rest"]["enabled"])) deployment_create("rest", image="davarski/go-rest-api-demo") k8s_resource("rest", labels=["data_nodes"], port_forwards=["10000"]) + +### Pocketdex Shannon Indexer +def load_pocketdex(): + pocketdex_tilt = load_dynamic("../pocketdex/pocketdex.tilt") + pocketdex_tilt["pocketdex"]("../pocketdex", + genesis_file_name="localnet.json", + postgres_values_path="../pocketdex/k8s/postgres/values.yaml", + indexer_values_path="./localnet/kubernetes/values-pocketdex-indexer.yaml", + gql_engine_values_path="./localnet/kubernetes/values-pocketdex-gql-engine.yaml") + +if localnet_config["indexer"]["enabled"]: + # Check if sibling pocketdex repo exists. + pocketdex_repo_exists = local("[ -d '../pocketdex' ] && echo 'true' || echo 'false'") + print("POCKETDEX_REPO_EXISTS: ", str(pocketdex_repo_exists).strip()) + if str(pocketdex_repo_exists).strip() == "false": + if localnet_config["indexer"]["clone_if_not_present"]: + print("Cloning pocketdex repo") + local("git clone https://github.com/pokt-network/pocketdex --branch chore/tilt ../pocketdex") + load_pocketdex() + else: + print("NOT CLONING") + local_resource("Indexer Disabled", + "echo 'Pocketdex repo not found. Set `clone_if_not_present` to `true` in `localnet_config.yaml` and restart tilt to clone the repo.'", + labels=["Pocketdex"]) + else: + print("Using existing pocketdex repo") + load_pocketdex() +else: + local_resource("Indexer Disabled", + "echo 'Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it.'", + labels=["Pocketdex"]) From e471207f4bf84e56499060f9ea52be5e528d635d Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 17 Oct 2024 14:05:43 +0200 Subject: [PATCH 02/19] chore: add pocketdex values files --- .../values-pocketdex-gql-engine.yaml | 25 +++++++++++++++++++ .../kubernetes/values-pocketdex-indexer.yaml | 25 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 localnet/kubernetes/values-pocketdex-gql-engine.yaml create mode 100644 localnet/kubernetes/values-pocketdex-indexer.yaml diff --git a/localnet/kubernetes/values-pocketdex-gql-engine.yaml b/localnet/kubernetes/values-pocketdex-gql-engine.yaml new file mode 100644 index 000000000..e21ab10e7 --- /dev/null +++ b/localnet/kubernetes/values-pocketdex-gql-engine.yaml @@ -0,0 +1,25 @@ +env: + NODE_ENV: development + # Testnet + ENDPOINT: "https://testnet-validated-validator-rpc.poktroll.com" + # LocalNet + # ENDPOINT: "http://validator-poktroll-validator.default.svc.cluster.local:26657" + CHAIN_ID: "poktroll" + # db schema name + DB_SCHEMA: "localnet" + # indexer endpoint +# indexer_endpoint: "http://pocketdex-indexer.default.svc.cluster.local:3000" + + START_BLOCK: 1 + # Check docs to see what else you can set here: + # Ref: https://academy.subquery.network/indexer/run_publish/references.html#subql-cli + SUBQUERY_NODE_EXTRA_PARAMS: "--unfinalized-blocks=true" + # Check docs to see what else you can set here: + # Ref: https://academy.subquery.network/indexer/run_publish/references.html#subql-query + SUBQUERY_GRAPHQL_EXTRA_PARAMS: "" + + DB_HOST: postgres-service + DB_PORT: 5432 + DB_USER: postgres + DB_PASS: postgres + DB_DATABASE: postgres diff --git a/localnet/kubernetes/values-pocketdex-indexer.yaml b/localnet/kubernetes/values-pocketdex-indexer.yaml new file mode 100644 index 000000000..32c7e9412 --- /dev/null +++ b/localnet/kubernetes/values-pocketdex-indexer.yaml @@ -0,0 +1,25 @@ +env: + NODE_ENV: development + # LocalNet + ENDPOINT: "http://validator-poktroll-validator:26657" + CHAIN_ID: "poktroll" + # db schema name + DB_SCHEMA: "localnet" + # indexer endpoint + indexer_endpoint: "http://indexer-service:3000" + + START_BLOCK: 1 + # Check docs to see what else you can set here: + # Ref: https://academy.subquery.network/indexer/run_publish/references.html#subql-cli + SUBQUERY_NODE_EXTRA_PARAMS: "--unfinalized-blocks=true" + # Check docs to see what else you can set here: + # Ref: https://academy.subquery.network/indexer/run_publish/references.html#subql-query + SUBQUERY_GRAPHQL_EXTRA_PARAMS: "" + + SUBQUERY_GRAPHQL_ENGINE_VERSION: "latest" + + DB_HOST: postgres-service + DB_PORT: 5432 + DB_USER: postgres + DB_PASS: postgres + DB_DATABASE: postgres From 83fbcbec81b7eca4ec89d4e710bf72a4c688c184 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 17 Oct 2024 19:36:47 +0200 Subject: [PATCH 03/19] chore: cleanup --- Tiltfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Tiltfile b/Tiltfile index c29883602..9eaf79fe5 100644 --- a/Tiltfile +++ b/Tiltfile @@ -399,14 +399,12 @@ def load_pocketdex(): if localnet_config["indexer"]["enabled"]: # Check if sibling pocketdex repo exists. pocketdex_repo_exists = local("[ -d '../pocketdex' ] && echo 'true' || echo 'false'") - print("POCKETDEX_REPO_EXISTS: ", str(pocketdex_repo_exists).strip()) if str(pocketdex_repo_exists).strip() == "false": if localnet_config["indexer"]["clone_if_not_present"]: print("Cloning pocketdex repo") local("git clone https://github.com/pokt-network/pocketdex --branch chore/tilt ../pocketdex") load_pocketdex() else: - print("NOT CLONING") local_resource("Indexer Disabled", "echo 'Pocketdex repo not found. Set `clone_if_not_present` to `true` in `localnet_config.yaml` and restart tilt to clone the repo.'", labels=["Pocketdex"]) From 2d82ed8be05fdbbd57c1355f31b3c84fa6b6e132 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 17 Oct 2024 19:44:46 +0200 Subject: [PATCH 04/19] refactor: extract pocketdex_disabled function & add comments --- Tiltfile | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Tiltfile b/Tiltfile index 9eaf79fe5..ad4b4e9b2 100644 --- a/Tiltfile +++ b/Tiltfile @@ -388,6 +388,11 @@ if localnet_config["rest"]["enabled"]: k8s_resource("rest", labels=["data_nodes"], port_forwards=["10000"]) ### Pocketdex Shannon Indexer +def pocketdex_disabled(reason): + local_resource("Indexer Disabled", + "echo '{}'".format(reason), + labels=["Pocketdex"]) + def load_pocketdex(): pocketdex_tilt = load_dynamic("../pocketdex/pocketdex.tilt") pocketdex_tilt["pocketdex"]("../pocketdex", @@ -398,6 +403,10 @@ def load_pocketdex(): if localnet_config["indexer"]["enabled"]: # Check if sibling pocketdex repo exists. + # If it does, load the pocketdex.tilt file from the sibling repo. + # Otherwise check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` + # and EITHER clone pocketdex to ../pocketdex OR prints a message if true or false, + # respectively. pocketdex_repo_exists = local("[ -d '../pocketdex' ] && echo 'true' || echo 'false'") if str(pocketdex_repo_exists).strip() == "false": if localnet_config["indexer"]["clone_if_not_present"]: @@ -405,13 +414,9 @@ if localnet_config["indexer"]["enabled"]: local("git clone https://github.com/pokt-network/pocketdex --branch chore/tilt ../pocketdex") load_pocketdex() else: - local_resource("Indexer Disabled", - "echo 'Pocketdex repo not found. Set `clone_if_not_present` to `true` in `localnet_config.yaml` and restart tilt to clone the repo.'", - labels=["Pocketdex"]) + pocketdex_disabled("Pocketdex repo not found at ../pocketdex. Set `clone_if_not_present` to `true` in `localnet_config.yaml`.".format()) else: print("Using existing pocketdex repo") load_pocketdex() else: - local_resource("Indexer Disabled", - "echo 'Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it.'", - labels=["Pocketdex"]) + pocketdex_disabled("Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it.") From a24803fa600013a015931d05ab0e47d6427b08a8 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 17 Oct 2024 20:16:15 +0200 Subject: [PATCH 05/19] chore: update Tiltfile and values --- Tiltfile | 4 ++-- localnet/kubernetes/values-pocketdex-gql-engine.yaml | 9 ++++----- localnet/kubernetes/values-pocketdex-indexer.yaml | 3 +-- localnet/kubernetes/values-pocketdex-postgres.yaml | 4 ++++ 4 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 localnet/kubernetes/values-pocketdex-postgres.yaml diff --git a/Tiltfile b/Tiltfile index ad4b4e9b2..512ed58f5 100644 --- a/Tiltfile +++ b/Tiltfile @@ -394,10 +394,10 @@ def pocketdex_disabled(reason): labels=["Pocketdex"]) def load_pocketdex(): - pocketdex_tilt = load_dynamic("../pocketdex/pocketdex.tilt") + pocketdex_tilt = load_dynamic("../pocketdex/tiltfiles/pocketdex.tilt") pocketdex_tilt["pocketdex"]("../pocketdex", genesis_file_name="localnet.json", - postgres_values_path="../pocketdex/k8s/postgres/values.yaml", + postgres_values_path="./localnet/kubernetes/values-pocketdex-postgres.yaml", indexer_values_path="./localnet/kubernetes/values-pocketdex-indexer.yaml", gql_engine_values_path="./localnet/kubernetes/values-pocketdex-gql-engine.yaml") diff --git a/localnet/kubernetes/values-pocketdex-gql-engine.yaml b/localnet/kubernetes/values-pocketdex-gql-engine.yaml index e21ab10e7..2a7d81243 100644 --- a/localnet/kubernetes/values-pocketdex-gql-engine.yaml +++ b/localnet/kubernetes/values-pocketdex-gql-engine.yaml @@ -1,14 +1,13 @@ +enable_graphiql_playground: true +indexer_endpoint: "http://indexer-service:3000" +port: 3000 env: NODE_ENV: development - # Testnet - ENDPOINT: "https://testnet-validated-validator-rpc.poktroll.com" # LocalNet - # ENDPOINT: "http://validator-poktroll-validator.default.svc.cluster.local:26657" + ENDPOINT: "http://validator-poktroll-validator:26657" CHAIN_ID: "poktroll" # db schema name DB_SCHEMA: "localnet" - # indexer endpoint -# indexer_endpoint: "http://pocketdex-indexer.default.svc.cluster.local:3000" START_BLOCK: 1 # Check docs to see what else you can set here: diff --git a/localnet/kubernetes/values-pocketdex-indexer.yaml b/localnet/kubernetes/values-pocketdex-indexer.yaml index 32c7e9412..611a09e32 100644 --- a/localnet/kubernetes/values-pocketdex-indexer.yaml +++ b/localnet/kubernetes/values-pocketdex-indexer.yaml @@ -1,3 +1,4 @@ +port: 3000 env: NODE_ENV: development # LocalNet @@ -5,8 +6,6 @@ env: CHAIN_ID: "poktroll" # db schema name DB_SCHEMA: "localnet" - # indexer endpoint - indexer_endpoint: "http://indexer-service:3000" START_BLOCK: 1 # Check docs to see what else you can set here: diff --git a/localnet/kubernetes/values-pocketdex-postgres.yaml b/localnet/kubernetes/values-pocketdex-postgres.yaml new file mode 100644 index 000000000..76f5a11ea --- /dev/null +++ b/localnet/kubernetes/values-pocketdex-postgres.yaml @@ -0,0 +1,4 @@ +env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres From 464d519dd8e35887f35606f7a8f009b6845ef0ff Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 17 Oct 2024 21:00:29 +0200 Subject: [PATCH 06/19] refactor: use os-agnostic paths in Tiltfile --- Tiltfile | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Tiltfile b/Tiltfile index 512ed58f5..2b5449306 100644 --- a/Tiltfile +++ b/Tiltfile @@ -57,8 +57,9 @@ localnet_config_defaults = { }, # By default, we use the `helm_repo` function below to point to the remote repository # but can update it to the locally cloned repo for testing & development - "helm_chart_local_repo": {"enabled": False, "path": "../helm-charts"}, + "helm_chart_local_repo": {"enabled": False, "path": os.path.join("..", "helm-charts")}, "indexer": { + "repo_path": os.path.join("..", "pocketdex"), "enabled": True, "clone_if_not_present": False, } @@ -79,11 +80,13 @@ if (localnet_config_file != localnet_config) or (not os.path.exists(localnet_con # Configure helm chart reference. If using a local repo, set the path to the local repo; otherwise, use our own helm repo. helm_repo("pokt-network", "https://pokt-network.github.io/helm-charts/") +# TODO_IMPROVE: Use os.path.join to make this more OS-agnostic. chart_prefix = "pokt-network/" if localnet_config["helm_chart_local_repo"]["enabled"]: helm_chart_local_repo = localnet_config["helm_chart_local_repo"]["path"] hot_reload_dirs.append(helm_chart_local_repo) print("Using local helm chart repo " + helm_chart_local_repo) + # TODO_IMPROVE: Use os.path.join to make this more OS-agnostic. chart_prefix = helm_chart_local_repo + "/charts/" # Observability @@ -388,18 +391,24 @@ if localnet_config["rest"]["enabled"]: k8s_resource("rest", labels=["data_nodes"], port_forwards=["10000"]) ### Pocketdex Shannon Indexer +pocketdex_root_path = localnet_config["indexer"]["repo_path"] +pocketdex_tilt_path = os.path.join(pocketdex_root_path, "tiltfiles", "pocketdex.tilt") +postgres_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-postgres.yaml") +indexer_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-indexer.yaml") +gql_engine_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-gql-engine.yaml") + def pocketdex_disabled(reason): local_resource("Indexer Disabled", "echo '{}'".format(reason), labels=["Pocketdex"]) def load_pocketdex(): - pocketdex_tilt = load_dynamic("../pocketdex/tiltfiles/pocketdex.tilt") - pocketdex_tilt["pocketdex"]("../pocketdex", + pocketdex_tilt = load_dynamic(pocketdex_tilt_path) + pocketdex_tilt["pocketdex"](pocketdex_root_path, genesis_file_name="localnet.json", - postgres_values_path="./localnet/kubernetes/values-pocketdex-postgres.yaml", - indexer_values_path="./localnet/kubernetes/values-pocketdex-indexer.yaml", - gql_engine_values_path="./localnet/kubernetes/values-pocketdex-gql-engine.yaml") + postgres_values_path=postgres_values_path, + indexer_values_path=indexer_values_path, + gql_engine_values_path=gql_engine_values_path) if localnet_config["indexer"]["enabled"]: # Check if sibling pocketdex repo exists. @@ -407,10 +416,11 @@ if localnet_config["indexer"]["enabled"]: # Otherwise check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` # and EITHER clone pocketdex to ../pocketdex OR prints a message if true or false, # respectively. - pocketdex_repo_exists = local("[ -d '../pocketdex' ] && echo 'true' || echo 'false'") + pocketdex_repo_exists = local("[ -d {} ] && echo 'true' || echo 'false'".format(pocketdex_root_path)) if str(pocketdex_repo_exists).strip() == "false": if localnet_config["indexer"]["clone_if_not_present"]: print("Cloning pocketdex repo") + # TODO_INVESTIGATE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource local("git clone https://github.com/pokt-network/pocketdex --branch chore/tilt ../pocketdex") load_pocketdex() else: From d1546d68f390f3bbb6cc79c5674a9e14cf8f697e Mon Sep 17 00:00:00 2001 From: Bryan White Date: Mon, 21 Oct 2024 13:14:06 +0200 Subject: [PATCH 07/19] chore: add pgadmin & check for pocketdex updates --- Tiltfile | 80 +++++++++++++++++-- .../kubernetes/values-pocketdex-pgadmin.yaml | 14 ++++ 2 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 localnet/kubernetes/values-pocketdex-pgadmin.yaml diff --git a/Tiltfile b/Tiltfile index 2b5449306..f0a522551 100644 --- a/Tiltfile +++ b/Tiltfile @@ -394,39 +394,107 @@ if localnet_config["rest"]["enabled"]: pocketdex_root_path = localnet_config["indexer"]["repo_path"] pocketdex_tilt_path = os.path.join(pocketdex_root_path, "tiltfiles", "pocketdex.tilt") postgres_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-postgres.yaml") +pgadmin_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-pgadmin.yaml") indexer_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-indexer.yaml") gql_engine_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-gql-engine.yaml") -def pocketdex_disabled(reason): - local_resource("Indexer Disabled", + +# pocketdex_repo_exists returns true if the sibling pocketdex repo exists. +def pocketdex_repo_exists(): + return str( + local("[ -d {} ] && echo 'true' || echo 'false'".format(pocketdex_root_path), + echo_off=True) + ).strip() + + +# pocketdex_disabled_resource creates a tilt resource that prints a message indicating +# that the indexer is disabled and how to enable it. +def pocketdex_disabled_resource(reason): + local_resource("⚠️ Indexer Disabled", "echo '{}'".format(reason), labels=["Pocketdex"]) + +# fetch_pocketdex_main fetches the main branch from the remote from which the repo was cloned. +def fetch_pocketdex_main(): + local("git fetch {} main".format(main_branch_remote_name()), + dir=pocketdex_root_path, + echo_off=True) + + +# main_branch_remote_name returns the name of the remote from which the repo was cloned. +def main_branch_remote_name(): + return str( + local("git rev-parse --abbrev-ref @{u} | cut -d '/' -f1", + dir=pocketdex_root_path, + echo_off=True), + ).strip() + + +# pocketdex_changes returns a tuple of integers representing the number of local +# and remote changes, respectively. +def pocketdex_changes(): + all_changes = str( + local("git rev-list --left-right --count HEAD...{}/main".format(main_branch_remote_name()), + dir=pocketdex_root_path, + echo_off=True) + ) + + # Split the output into local and remote changes and convert to integers. + num_local_changes, num_remote_changes = [int(x) for x in all_changes.split()] + + return (num_local_changes, num_remote_changes) + + +# pocketdex_main_is_outdated returns true if there's a diff between the local and remote main branches. +def pocketdex_main_is_outdated(): + fetch_pocketdex_main() + _, num_remote_changes = pocketdex_changes() + return num_remote_changes != 0 + + +# pocketdex_outdated_resource creates a tilt resource that prints a message indicating +# that the indexer is outdated and how many commits behind it is. +def pocketdex_outdated_resource(): + _, num_remote_changes = pocketdex_changes() + local_resource("🔄 Updates Available", + """ + echo 'Pocketdex main branch is outdated; {} commits behind. Please `git pull --ff-only` to update pocketdex.' + """.format(num_remote_changes), + labels=["Pocketdex"]) + + def load_pocketdex(): + if pocketdex_main_is_outdated(): + pocketdex_outdated_resource() + pocketdex_tilt = load_dynamic(pocketdex_tilt_path) pocketdex_tilt["pocketdex"](pocketdex_root_path, genesis_file_name="localnet.json", postgres_values_path=postgres_values_path, + pgadmin_values_path=pgadmin_values_path, indexer_values_path=indexer_values_path, gql_engine_values_path=gql_engine_values_path) + if localnet_config["indexer"]["enabled"]: # Check if sibling pocketdex repo exists. # If it does, load the pocketdex.tilt file from the sibling repo. # Otherwise check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` # and EITHER clone pocketdex to ../pocketdex OR prints a message if true or false, # respectively. - pocketdex_repo_exists = local("[ -d {} ] && echo 'true' || echo 'false'".format(pocketdex_root_path)) - if str(pocketdex_repo_exists).strip() == "false": + if pocketdex_repo_exists == "false": if localnet_config["indexer"]["clone_if_not_present"]: print("Cloning pocketdex repo") # TODO_INVESTIGATE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource local("git clone https://github.com/pokt-network/pocketdex --branch chore/tilt ../pocketdex") load_pocketdex() else: - pocketdex_disabled("Pocketdex repo not found at ../pocketdex. Set `clone_if_not_present` to `true` in `localnet_config.yaml`.".format()) + pocketdex_disabled_resource( + "Pocketdex repo not found at ../pocketdex. Set `clone_if_not_present` to `true` in `localnet_config.yaml`.".format()) else: print("Using existing pocketdex repo") load_pocketdex() else: - pocketdex_disabled("Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it.") + pocketdex_disabled_resource( + "Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it.") diff --git a/localnet/kubernetes/values-pocketdex-pgadmin.yaml b/localnet/kubernetes/values-pocketdex-pgadmin.yaml new file mode 100644 index 000000000..6168693c8 --- /dev/null +++ b/localnet/kubernetes/values-pocketdex-pgadmin.yaml @@ -0,0 +1,14 @@ +env: + # Pgadmin4 + # NOTE: if you modify POSTGRES_USER/PASSWORD/DB then auto-imported server will not match and you need to setup + # your own with the modified values on the pgadmin website after first login. + PGADMIN_VERSION: 8.11 + PGADMIN_DEFAULT_EMAIL: admin@local.dev + PGADMIN_DEFAULT_PASSWORD: admin + PGADMIN_LISTEN_PORT: 5050 + + DB_HOST: postgres-service + DB_PORT: 5432 + DB_USER: postgres + DB_PASS: postgres + DB_DATABASE: postgres From 734b6488b85374049d8862c3e96d271404c596d3 Mon Sep 17 00:00:00 2001 From: Daniel Olshansky Date: Mon, 21 Oct 2024 11:28:02 -0400 Subject: [PATCH 08/19] WIP - reviews from Olshansky --- Tiltfile | 23 +++++--- api/poktroll/application/event.pulsar.go | 2 +- .../docs/develop/contributing/_category_.json | 2 +- .../docs/develop/localnet/_category_.json | 8 +++ .../docs/develop/localnet/observability.md | 54 +++++++++++++++++++ docusaurus/yarn.lock | 16 +++--- go.mod | 1 - go.sum | 2 - .../kubernetes/values-pocketdex-pgadmin.yaml | 2 +- x/tokenomics/types/tx.pb.go | 1 - 10 files changed, 89 insertions(+), 22 deletions(-) create mode 100644 docusaurus/docs/develop/localnet/_category_.json create mode 100644 docusaurus/docs/develop/localnet/observability.md diff --git a/Tiltfile b/Tiltfile index f0a522551..9a25fe392 100644 --- a/Tiltfile +++ b/Tiltfile @@ -55,9 +55,16 @@ localnet_config_defaults = { "rest": { "enabled": True, }, + + # TODO_CONSIDERATION: Consider using git submodules for all repos where we + # are dependent on a sibling directory. + # By default, we use the `helm_repo` function below to point to the remote repository # but can update it to the locally cloned repo for testing & development - "helm_chart_local_repo": {"enabled": False, "path": os.path.join("..", "helm-charts")}, + "helm_chart_local_repo": { + "enabled": False, + "path": os.path.join("..", "helm-charts") + }, "indexer": { "repo_path": os.path.join("..", "pocketdex"), "enabled": True, @@ -476,17 +483,19 @@ def load_pocketdex(): indexer_values_path=indexer_values_path, gql_engine_values_path=gql_engine_values_path) - +# Check if sibling pocketdex repo exists. +# If it does, load the pocketdex.tilt file from the sibling repo. +# Otherwise check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` and EITHER: +# 1. clone pocketdex to ../pocketdex +# -- OR -- +# 2. Prints a message if true or false if localnet_config["indexer"]["enabled"]: - # Check if sibling pocketdex repo exists. - # If it does, load the pocketdex.tilt file from the sibling repo. - # Otherwise check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` - # and EITHER clone pocketdex to ../pocketdex OR prints a message if true or false, - # respectively. + pocketdex_repo_exists = local("[ -d {} ] && echo 'true' || echo 'false'".format(pocketdex_root_path)) if pocketdex_repo_exists == "false": if localnet_config["indexer"]["clone_if_not_present"]: print("Cloning pocketdex repo") # TODO_INVESTIGATE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource + # TODO_IN_THIS_PR: Remove "--branch' after merging in https://github.com/pokt-network/pocketdex/pull/23/files local("git clone https://github.com/pokt-network/pocketdex --branch chore/tilt ../pocketdex") load_pocketdex() else: diff --git a/api/poktroll/application/event.pulsar.go b/api/poktroll/application/event.pulsar.go index 043aa2264..290bbde55 100644 --- a/api/poktroll/application/event.pulsar.go +++ b/api/poktroll/application/event.pulsar.go @@ -3,11 +3,11 @@ package application import ( _ "cosmossdk.io/api/cosmos/base/v1beta1" + _ "github.com/pokt-network/poktroll/api/poktroll/shared" fmt "fmt" _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" - _ "github.com/pokt-network/poktroll/api/poktroll/shared" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" diff --git a/docusaurus/docs/develop/contributing/_category_.json b/docusaurus/docs/develop/contributing/_category_.json index a2849367a..54f7b6101 100644 --- a/docusaurus/docs/develop/contributing/_category_.json +++ b/docusaurus/docs/develop/contributing/_category_.json @@ -1,6 +1,6 @@ { "label": "Contributing", - "position": 9, + "position": 10, "link": { "type": "generated-index", "description": "Guidelines on how to contribute to the poktroll repo." diff --git a/docusaurus/docs/develop/localnet/_category_.json b/docusaurus/docs/develop/localnet/_category_.json new file mode 100644 index 000000000..eeb79d4a7 --- /dev/null +++ b/docusaurus/docs/develop/localnet/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "LocalNet", + "position": 9, + "link": { + "type": "generated-index", + "description": "Tips on how to leverage the most out of your LocalNet Environment." + } +} diff --git a/docusaurus/docs/develop/localnet/observability.md b/docusaurus/docs/develop/localnet/observability.md new file mode 100644 index 000000000..529b425c6 --- /dev/null +++ b/docusaurus/docs/develop/localnet/observability.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 1 +title: Pocketdex Indexer +--- + +- [Usage](#usage) + - [GraphQL](#graphql) + - [Postgres - CLI](#postgres---cli) +- [Debugging](#debugging) + - [Port already in use](#port-already-in-use) + +:::warning + +This document is a living WIP and assumes you are familiar with the LocalNet environment. + +::: + +## Pocketdex + +[Pocketdex](https://github.com/pokt-network/pocketdex/), the poktroll indexer starts up as part of the default LocalNet. + +### Usage + +#### GraphQL + +#### Postgres - CLI + +You can connect using a tool of your choice or with the CLI via: + +```bash +psql -h localhost -p 5432 -U postgres -d postgres +``` + +### Debugging + +#### Port already in use + +If you go to [http://localhost:10350/r/Postgres/overview] and see the following error: + +```bash +Reconnecting... Error port-forwarding Postgres (5432 -> 5432): Unable to listen on port 5432: Listeners failed to create with the following errors: [unable to create listener: Error listen tcp4 127.0.0.1:5432: bind: address already in use unable to create listener: Error listen tcp6 [::1]:5432: bind: address already in use] +``` + +You likely have another local Postgres instance running. You can identify it by running + +```bash +lsof -i:5432 +``` + +On macOS, if installed via `brew`, it can be stopped with: + +```bash +brew services stop postgresql +``` diff --git a/docusaurus/yarn.lock b/docusaurus/yarn.lock index 93cee387e..5c2dcf935 100644 --- a/docusaurus/yarn.lock +++ b/docusaurus/yarn.lock @@ -1810,15 +1810,10 @@ dependencies: "@types/mdx" "^2.0.0" -"@node-rs/jieba-linux-x64-gnu@1.10.0": +"@node-rs/jieba-darwin-arm64@1.10.0": version "1.10.0" - resolved "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.10.0.tgz" - integrity sha512-rS5Shs8JITxJjFIjoIZ5a9O+GO21TJgKu03g2qwFE3QaN5ZOvXtz+/AqqyfT4GmmMhCujD83AGqfOGXDmItF9w== - -"@node-rs/jieba-linux-x64-musl@1.10.0": - version "1.10.0" - resolved "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.10.0.tgz" - integrity sha512-BvSiF2rR8Birh2oEVHcYwq0WGC1cegkEdddWsPrrSmpKmukJE2zyjcxaOOggq2apb8fIRsjyeeUh6X3R5AgjvA== + resolved "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.10.0.tgz" + integrity sha512-IhR5r+XxFcfhVsF93zQ3uCJy8ndotRntXzoW/JCyKqOahUo/ITQRT6vTKHKMyD9xNmjl222OZonBSo2+mlI2fQ== "@node-rs/jieba@^1.6.0": version "1.10.0" @@ -4619,6 +4614,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" diff --git a/go.mod b/go.mod index 8e7700b69..91de15f1d 100644 --- a/go.mod +++ b/go.mod @@ -82,7 +82,6 @@ require ( require ( cosmossdk.io/x/tx v0.13.4 github.com/jhump/protoreflect v1.16.0 - go.uber.org/mock v0.4.0 ) require ( diff --git a/go.sum b/go.sum index b35917516..62dc61bb0 100644 --- a/go.sum +++ b/go.sum @@ -1213,8 +1213,6 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= diff --git a/localnet/kubernetes/values-pocketdex-pgadmin.yaml b/localnet/kubernetes/values-pocketdex-pgadmin.yaml index 6168693c8..8c18ca35a 100644 --- a/localnet/kubernetes/values-pocketdex-pgadmin.yaml +++ b/localnet/kubernetes/values-pocketdex-pgadmin.yaml @@ -1,6 +1,6 @@ env: # Pgadmin4 - # NOTE: if you modify POSTGRES_USER/PASSWORD/DB then auto-imported server will not match and you need to setup + # DEV_NOTE: if you modify POSTGRES_USER/PASSWORD/DB then auto-imported server will not match and you need to setup # your own with the modified values on the pgadmin website after first login. PGADMIN_VERSION: 8.11 PGADMIN_DEFAULT_EMAIL: admin@local.dev diff --git a/x/tokenomics/types/tx.pb.go b/x/tokenomics/types/tx.pb.go index e4fec264c..9f18a148c 100644 --- a/x/tokenomics/types/tx.pb.go +++ b/x/tokenomics/types/tx.pb.go @@ -125,7 +125,6 @@ type MsgUpdateParam struct { // specified in the `Params` message in `proof/params.proto.` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Types that are valid to be assigned to AsType: - // // *MsgUpdateParam_AsString // *MsgUpdateParam_AsInt64 // *MsgUpdateParam_AsBytes From c916a963fa3872f0dc61e377622205f463db1faf Mon Sep 17 00:00:00 2001 From: Bryan White Date: Mon, 21 Oct 2024 17:38:57 +0200 Subject: [PATCH 09/19] chore: remove redundant tilt code --- Tiltfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Tiltfile b/Tiltfile index 9a25fe392..2eee102c7 100644 --- a/Tiltfile +++ b/Tiltfile @@ -490,8 +490,7 @@ def load_pocketdex(): # -- OR -- # 2. Prints a message if true or false if localnet_config["indexer"]["enabled"]: - pocketdex_repo_exists = local("[ -d {} ] && echo 'true' || echo 'false'".format(pocketdex_root_path)) - if pocketdex_repo_exists == "false": + if pocketdex_repo_exists() == "false": if localnet_config["indexer"]["clone_if_not_present"]: print("Cloning pocketdex repo") # TODO_INVESTIGATE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource From fa328cb4aaf442a53f81db7664a2c4c798652618 Mon Sep 17 00:00:00 2001 From: Daniel Olshansky Date: Mon, 21 Oct 2024 11:39:58 -0400 Subject: [PATCH 10/19] Update postgres CLI --- docusaurus/docs/develop/localnet/observability.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docusaurus/docs/develop/localnet/observability.md b/docusaurus/docs/develop/localnet/observability.md index 529b425c6..b5389c9f1 100644 --- a/docusaurus/docs/develop/localnet/observability.md +++ b/docusaurus/docs/develop/localnet/observability.md @@ -31,6 +31,14 @@ You can connect using a tool of your choice or with the CLI via: psql -h localhost -p 5432 -U postgres -d postgres ``` +After you've connected, you MUST update your schema to `localnet` and start exploring the data: + +```sql +set schema 'localnet'; +\dt +select * from accounts limit 10; # Example query +``` + ### Debugging #### Port already in use From 566700240dfefc21f380e5b5601f8d243979da26 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Wed, 23 Oct 2024 10:07:02 +0200 Subject: [PATCH 11/19] chore: update pocketdex branch & cleanup --- Tiltfile | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Tiltfile b/Tiltfile index 2eee102c7..b3c1ad6e0 100644 --- a/Tiltfile +++ b/Tiltfile @@ -483,6 +483,7 @@ def load_pocketdex(): indexer_values_path=indexer_values_path, gql_engine_values_path=gql_engine_values_path) + # Check if sibling pocketdex repo exists. # If it does, load the pocketdex.tilt file from the sibling repo. # Otherwise check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` and EITHER: @@ -493,16 +494,19 @@ if localnet_config["indexer"]["enabled"]: if pocketdex_repo_exists() == "false": if localnet_config["indexer"]["clone_if_not_present"]: print("Cloning pocketdex repo") - # TODO_INVESTIGATE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource - # TODO_IN_THIS_PR: Remove "--branch' after merging in https://github.com/pokt-network/pocketdex/pull/23/files - local("git clone https://github.com/pokt-network/pocketdex --branch chore/tilt ../pocketdex") + # TODO_IMPROVE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource + local(""" + git clone https://github.com/pokt-network/pocketdex --branch main {} + """.format(pocketdex_root_path)) load_pocketdex() else: - pocketdex_disabled_resource( - "Pocketdex repo not found at ../pocketdex. Set `clone_if_not_present` to `true` in `localnet_config.yaml`.".format()) + pocketdex_disabled_resource(""" + Pocketdex repo not found at {}. Set `clone_if_not_present` to `true` in `localnet_config.yaml`. + """.format(pocketdex_root_path)) else: print("Using existing pocketdex repo") load_pocketdex() else: - pocketdex_disabled_resource( - "Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it.") + pocketdex_disabled_resource(""" + Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it. + """) From 62a1df6d23775ae9ef10c497b9e747a7bac5aaf9 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Wed, 23 Oct 2024 10:26:55 +0200 Subject: [PATCH 12/19] docs: update localnet observability docs --- docusaurus/docs/develop/localnet/observability.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docusaurus/docs/develop/localnet/observability.md b/docusaurus/docs/develop/localnet/observability.md index b5389c9f1..33bfa97bd 100644 --- a/docusaurus/docs/develop/localnet/observability.md +++ b/docusaurus/docs/develop/localnet/observability.md @@ -23,9 +23,19 @@ This document is a living WIP and assumes you are familiar with the LocalNet env #### GraphQL +The localnet graphiql playground is available at [http://localhost:3000](http://localhost:3000), by default. + +![GraphiQL Playground](../../../static/img/pocketdex_graphiql_screenshot.png) + +A link is accessible from the ["GraphQL API" tab in tilt](http://localhost:10350/r/GraphQL%20API/overview): + +![LocalNet Dashboard](../../../static/img/pocketdex_graphiql_link.png) + +See the [pocketdex docs](https://github.com/pokt-network/pocketdex?tab=readme-ov-file#usage--query-docs) for more details. + #### Postgres - CLI -You can connect using a tool of your choice or with the CLI via: +You can connect using a tool of your choice or with the `psql` CLI via: ```bash psql -h localhost -p 5432 -U postgres -d postgres From cf641295d740ee4efe10903636e9998a41bfb83c Mon Sep 17 00:00:00 2001 From: Bryan White Date: Wed, 23 Oct 2024 11:10:53 +0200 Subject: [PATCH 13/19] refactor: extract & rename functions to simplify Tiltfile --- Tiltfile | 112 ++------------------------------------- tiltfiles/git.tilt | 52 ++++++++++++++++++ tiltfiles/pocketdex.tilt | 71 +++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 108 deletions(-) create mode 100644 tiltfiles/git.tilt create mode 100644 tiltfiles/pocketdex.tilt diff --git a/Tiltfile b/Tiltfile index b3c1ad6e0..12721a0e4 100644 --- a/Tiltfile +++ b/Tiltfile @@ -56,8 +56,7 @@ localnet_config_defaults = { "enabled": True, }, - # TODO_CONSIDERATION: Consider using git submodules for all repos where we - # are dependent on a sibling directory. + # NOTE: git submodule usage was explicityly avoided to reduce environment complexity. # By default, we use the `helm_repo` function below to point to the remote repository # but can update it to the locally cloned repo for testing & development @@ -398,115 +397,12 @@ if localnet_config["rest"]["enabled"]: k8s_resource("rest", labels=["data_nodes"], port_forwards=["10000"]) ### Pocketdex Shannon Indexer -pocketdex_root_path = localnet_config["indexer"]["repo_path"] -pocketdex_tilt_path = os.path.join(pocketdex_root_path, "tiltfiles", "pocketdex.tilt") -postgres_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-postgres.yaml") -pgadmin_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-pgadmin.yaml") -indexer_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-indexer.yaml") -gql_engine_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-gql-engine.yaml") - - -# pocketdex_repo_exists returns true if the sibling pocketdex repo exists. -def pocketdex_repo_exists(): - return str( - local("[ -d {} ] && echo 'true' || echo 'false'".format(pocketdex_root_path), - echo_off=True) - ).strip() - - -# pocketdex_disabled_resource creates a tilt resource that prints a message indicating -# that the indexer is disabled and how to enable it. -def pocketdex_disabled_resource(reason): - local_resource("⚠️ Indexer Disabled", - "echo '{}'".format(reason), - labels=["Pocketdex"]) - - -# fetch_pocketdex_main fetches the main branch from the remote from which the repo was cloned. -def fetch_pocketdex_main(): - local("git fetch {} main".format(main_branch_remote_name()), - dir=pocketdex_root_path, - echo_off=True) - - -# main_branch_remote_name returns the name of the remote from which the repo was cloned. -def main_branch_remote_name(): - return str( - local("git rev-parse --abbrev-ref @{u} | cut -d '/' -f1", - dir=pocketdex_root_path, - echo_off=True), - ).strip() - - -# pocketdex_changes returns a tuple of integers representing the number of local -# and remote changes, respectively. -def pocketdex_changes(): - all_changes = str( - local("git rev-list --left-right --count HEAD...{}/main".format(main_branch_remote_name()), - dir=pocketdex_root_path, - echo_off=True) - ) - - # Split the output into local and remote changes and convert to integers. - num_local_changes, num_remote_changes = [int(x) for x in all_changes.split()] - - return (num_local_changes, num_remote_changes) - - -# pocketdex_main_is_outdated returns true if there's a diff between the local and remote main branches. -def pocketdex_main_is_outdated(): - fetch_pocketdex_main() - _, num_remote_changes = pocketdex_changes() - return num_remote_changes != 0 - - -# pocketdex_outdated_resource creates a tilt resource that prints a message indicating -# that the indexer is outdated and how many commits behind it is. -def pocketdex_outdated_resource(): - _, num_remote_changes = pocketdex_changes() - local_resource("🔄 Updates Available", - """ - echo 'Pocketdex main branch is outdated; {} commits behind. Please `git pull --ff-only` to update pocketdex.' - """.format(num_remote_changes), - labels=["Pocketdex"]) - - -def load_pocketdex(): - if pocketdex_main_is_outdated(): - pocketdex_outdated_resource() - - pocketdex_tilt = load_dynamic(pocketdex_tilt_path) - pocketdex_tilt["pocketdex"](pocketdex_root_path, - genesis_file_name="localnet.json", - postgres_values_path=postgres_values_path, - pgadmin_values_path=pgadmin_values_path, - indexer_values_path=indexer_values_path, - gql_engine_values_path=gql_engine_values_path) - +load("./tiltfiles/pocketdex.tilt", "check_and_load_pocketdex") # Check if sibling pocketdex repo exists. # If it does, load the pocketdex.tilt file from the sibling repo. -# Otherwise check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` and EITHER: +# Otherwise, check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` and EITHER: # 1. clone pocketdex to ../pocketdex # -- OR -- # 2. Prints a message if true or false -if localnet_config["indexer"]["enabled"]: - if pocketdex_repo_exists() == "false": - if localnet_config["indexer"]["clone_if_not_present"]: - print("Cloning pocketdex repo") - # TODO_IMPROVE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource - local(""" - git clone https://github.com/pokt-network/pocketdex --branch main {} - """.format(pocketdex_root_path)) - load_pocketdex() - else: - pocketdex_disabled_resource(""" - Pocketdex repo not found at {}. Set `clone_if_not_present` to `true` in `localnet_config.yaml`. - """.format(pocketdex_root_path)) - else: - print("Using existing pocketdex repo") - load_pocketdex() -else: - pocketdex_disabled_resource(""" - Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it. - """) +check_and_load_pocketdex(localnet_config["indexer"]) diff --git a/tiltfiles/git.tilt b/tiltfiles/git.tilt new file mode 100644 index 000000000..9794f1ba9 --- /dev/null +++ b/tiltfiles/git.tilt @@ -0,0 +1,52 @@ +# dir_repo_exists returns true if the dir_path exists. +def dir_exists(dir_path): + return str( + local("[ -d {} ] && echo 'true' || echo 'false'".format(dir_path), + echo_off=True) + ).strip() + + +# repo_remote_name returns the name of the remote from which the git repo was cloned. +def repo_remote_name(repo_root): + return str( + local("git rev-parse --abbrev-ref @{u} | cut -d '/' -f1", + dir=repo_root, + echo_off=True), + ).strip() + + +# fetch_repo_main fetches the main branch from the remote from which the git repo was cloned. +def fetch_repo_main(repo_root): + local("git fetch {} main".format(repo_remote_name(repo_root)), + dir=repo_root, + echo_off=True) + + +# repo_changes returns a tuple of integers representing the number of local +# and remote changes for the git repos main branch, respectively. +def repo_changes(repo_root): + all_changes = str( + local(""" + git rev-list --left-right --count HEAD...{}/main + """.format(repo_remote_name(repo_root)), + dir=repo_root, + echo_off=True) + ) + + # Split the output into local and remote changes and convert to integers. + num_local_changes, num_remote_changes = [int(x) for x in all_changes.split()] + + return (num_local_changes, num_remote_changes) + + +# repo_is_outdated returns true if there's a diff between the local and remote main branches. +def repo_is_outdated(repo_root): + fetch_repo_main(repo_root) + _, num_remote_changes = repo_changes(repo_root) + return num_remote_changes != 0 + + +def clone_repo(repo_url, local_path): + print("Cloning pocketdex repo") + # TODO_IMPROVE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource + local("git clone {} --branch main {}".format(repo_url, local_path)) diff --git a/tiltfiles/pocketdex.tilt b/tiltfiles/pocketdex.tilt new file mode 100644 index 000000000..c75ea6555 --- /dev/null +++ b/tiltfiles/pocketdex.tilt @@ -0,0 +1,71 @@ +load("./git.tilt", + "dir_exists", + "clone_repo", + "fetch_repo_main", + "repo_remote_name", + "repo_changes", + "repo_is_outdated") + + +# pocketdex_disabled_resource creates a tilt resource that prints a message indicating +# that the indexer is disabled and how to enable it. +def pocketdex_disabled_resource(reason): + local_resource("⚠️ Indexer Disabled", + "echo '{}'".format(reason), + labels=["Pocketdex"]) + + +# pocketdex_outdated_resource creates a tilt resource that prints a message indicating +# that the indexer is outdated and how many commits behind it is. +def pocketdex_outdated_resource(pocketdex_root_path): + _, num_remote_changes = repo_changes(pocketdex_root_path) + local_resource("🔄 Updates Available", + """ + echo 'Pocketdex main branch is outdated; {} commits behind. Please `git pull --ff-only` to update pocketdex.' + """.format(num_remote_changes), + labels=["Pocketdex"]) + + +def load_pocketdex(pocketdex_root_path): + if repo_is_outdated(pocketdex_root_path): + pocketdex_outdated_resource(pocketdex_root_path) + + pocketdex_tilt_path = os.path.join(pocketdex_root_path, "tiltfiles", "pocketdex.tilt") + pocketdex_tilt = load_dynamic(pocketdex_tilt_path) + + postgres_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-postgres.yaml") + pgadmin_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-pgadmin.yaml") + indexer_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-indexer.yaml") + gql_engine_values_path = os.path.join(".", "localnet", "kubernetes", "values-pocketdex-gql-engine.yaml") + pocketdex_tilt["pocketdex"](pocketdex_root_path, + genesis_file_name="localnet.json", + postgres_values_path=postgres_values_path, + pgadmin_values_path=pgadmin_values_path, + indexer_values_path=indexer_values_path, + gql_engine_values_path=gql_engine_values_path) + + +# Check if sibling pocketdex repo exists. +# If it does, load the pocketdex.tilt file from the sibling repo. +# Otherwise, check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` and EITHER: +# 1. clone pocketdex to ../pocketdex +# -- OR -- +# 2. Prints a message if true or false +def check_and_load_pocketdex(indexer_config): + if indexer_config["enabled"]: + pocketdex_root_path = indexer_config["repo_path"] + if dir_exists(pocketdex_root_path) == "false": + if indexer_config["clone_if_not_present"]: + clone_repo("https://github.com/pokt-network/pocketdex", pocketdex_root_path) + load_pocketdex(pocketdex_root_path) + else: + pocketdex_disabled_resource(""" + Pocketdex repo not found at {}. Set `clone_if_not_present` to `true` in `localnet_config.yaml`. + """.format(pocketdex_root_path)) + else: + print("Using existing pocketdex repo") + load_pocketdex(pocketdex_root_path) + else: + pocketdex_disabled_resource(""" + Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it. + """) From e675c48664435947033941a3c46390a35de3f82f Mon Sep 17 00:00:00 2001 From: Bryan White Date: Wed, 23 Oct 2024 11:18:02 +0200 Subject: [PATCH 14/19] revert: go.{mod,sum} changes --- go.mod | 1 + go.sum | 2 ++ 2 files changed, 3 insertions(+) diff --git a/go.mod b/go.mod index 91de15f1d..8e7700b69 100644 --- a/go.mod +++ b/go.mod @@ -82,6 +82,7 @@ require ( require ( cosmossdk.io/x/tx v0.13.4 github.com/jhump/protoreflect v1.16.0 + go.uber.org/mock v0.4.0 ) require ( diff --git a/go.sum b/go.sum index 62dc61bb0..b35917516 100644 --- a/go.sum +++ b/go.sum @@ -1213,6 +1213,8 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= From 63e8f281b7e0e9b8e4be8ed7c9c866e7d829d2e4 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Wed, 23 Oct 2024 11:18:13 +0200 Subject: [PATCH 15/19] fix: commit omitted images --- .../static/img/pocketdex_graphiql_link.png | Bin 0 -> 91026 bytes .../img/pocketdex_graphiql_screenshot.png | Bin 0 -> 114934 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docusaurus/static/img/pocketdex_graphiql_link.png create mode 100644 docusaurus/static/img/pocketdex_graphiql_screenshot.png diff --git a/docusaurus/static/img/pocketdex_graphiql_link.png b/docusaurus/static/img/pocketdex_graphiql_link.png new file mode 100644 index 0000000000000000000000000000000000000000..e17214f2fd7df63d189c9e2b45adbd4683011086 GIT binary patch literal 91026 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 literal 0 HcmV?d00001 diff --git a/docusaurus/static/img/pocketdex_graphiql_screenshot.png b/docusaurus/static/img/pocketdex_graphiql_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..c84ca17b63fb5b9c54a2e74b12f508571482253c GIT binary patch literal 114934 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 literal 0 HcmV?d00001 From 6d9b981787cfee83c7914e5b2b3aa7a2421c16db Mon Sep 17 00:00:00 2001 From: Bryan White Date: Wed, 23 Oct 2024 11:18:44 +0200 Subject: [PATCH 16/19] fix: typo --- Tiltfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tiltfile b/Tiltfile index 12721a0e4..6b701bd8a 100644 --- a/Tiltfile +++ b/Tiltfile @@ -56,7 +56,7 @@ localnet_config_defaults = { "enabled": True, }, - # NOTE: git submodule usage was explicityly avoided to reduce environment complexity. + # NOTE: git submodule usage was explicitly avoided to reduce environment complexity. # By default, we use the `helm_repo` function below to point to the remote repository # but can update it to the locally cloned repo for testing & development From 832bf4768f3ab75704955fdaa3550f14141c4b11 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Wed, 23 Oct 2024 11:21:29 +0200 Subject: [PATCH 17/19] chore: add comments --- tiltfiles/git.tilt | 1 + tiltfiles/pocketdex.tilt | 2 ++ 2 files changed, 3 insertions(+) diff --git a/tiltfiles/git.tilt b/tiltfiles/git.tilt index 9794f1ba9..478bd8e68 100644 --- a/tiltfiles/git.tilt +++ b/tiltfiles/git.tilt @@ -46,6 +46,7 @@ def repo_is_outdated(repo_root): return num_remote_changes != 0 +# clone_repo clones the main branch from the repo at repo_url to local_path. def clone_repo(repo_url, local_path): print("Cloning pocketdex repo") # TODO_IMPROVE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource diff --git a/tiltfiles/pocketdex.tilt b/tiltfiles/pocketdex.tilt index c75ea6555..f477d12f8 100644 --- a/tiltfiles/pocketdex.tilt +++ b/tiltfiles/pocketdex.tilt @@ -26,6 +26,8 @@ def pocketdex_outdated_resource(pocketdex_root_path): labels=["Pocketdex"]) +# load_pocketdex loads the pocketdex.tilt file from the pocketdex repo at pocketdex_root_path. +# It also checks if the pocketdex repo has updates and, if so, creates a resource which prints instructions to update. def load_pocketdex(pocketdex_root_path): if repo_is_outdated(pocketdex_root_path): pocketdex_outdated_resource(pocketdex_root_path) From 5daffb9b55a0ae38a48ecb02056c3b8698b5f6a5 Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 24 Oct 2024 10:00:03 +0200 Subject: [PATCH 18/19] chore: review feedback improvements --- tiltfiles/git.tilt | 9 +-------- tiltfiles/pocketdex.tilt | 11 +++-------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/tiltfiles/git.tilt b/tiltfiles/git.tilt index 478bd8e68..08db67611 100644 --- a/tiltfiles/git.tilt +++ b/tiltfiles/git.tilt @@ -1,10 +1,4 @@ -# dir_repo_exists returns true if the dir_path exists. -def dir_exists(dir_path): - return str( - local("[ -d {} ] && echo 'true' || echo 'false'".format(dir_path), - echo_off=True) - ).strip() - +# TODO_INVESTIGATE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource # repo_remote_name returns the name of the remote from which the git repo was cloned. def repo_remote_name(repo_root): @@ -49,5 +43,4 @@ def repo_is_outdated(repo_root): # clone_repo clones the main branch from the repo at repo_url to local_path. def clone_repo(repo_url, local_path): print("Cloning pocketdex repo") - # TODO_IMPROVE: https://github.com/tilt-dev/tilt-extensions/tree/master/git_resource local("git clone {} --branch main {}".format(repo_url, local_path)) diff --git a/tiltfiles/pocketdex.tilt b/tiltfiles/pocketdex.tilt index f477d12f8..4cddb640e 100644 --- a/tiltfiles/pocketdex.tilt +++ b/tiltfiles/pocketdex.tilt @@ -1,5 +1,4 @@ load("./git.tilt", - "dir_exists", "clone_repo", "fetch_repo_main", "repo_remote_name", @@ -56,18 +55,14 @@ def load_pocketdex(pocketdex_root_path): def check_and_load_pocketdex(indexer_config): if indexer_config["enabled"]: pocketdex_root_path = indexer_config["repo_path"] - if dir_exists(pocketdex_root_path) == "false": + if not os.path.exists(pocketdex_root_path): if indexer_config["clone_if_not_present"]: clone_repo("https://github.com/pokt-network/pocketdex", pocketdex_root_path) load_pocketdex(pocketdex_root_path) else: - pocketdex_disabled_resource(""" - Pocketdex repo not found at {}. Set `clone_if_not_present` to `true` in `localnet_config.yaml`. - """.format(pocketdex_root_path)) + pocketdex_disabled_resource("Pocketdex repo not found at {}. Set `clone_if_not_present` to `true` in `localnet_config.yaml`.".format(pocketdex_root_path)) else: print("Using existing pocketdex repo") load_pocketdex(pocketdex_root_path) else: - pocketdex_disabled_resource(""" - Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it. - """) + pocketdex_disabled_resource("Pocketdex indexer disabled. Set `indexer.enabled` to `true` in `localnet_config.yaml` to enable it.") From eead29278ce497f50b65208cb936f23db9c64d3f Mon Sep 17 00:00:00 2001 From: Bryan White Date: Thu, 24 Oct 2024 10:02:11 +0200 Subject: [PATCH 19/19] chore: review feedback improvements Co-authored-by: Daniel Olshansky --- docusaurus/docs/develop/localnet/observability.md | 2 +- tiltfiles/pocketdex.tilt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docusaurus/docs/develop/localnet/observability.md b/docusaurus/docs/develop/localnet/observability.md index 33bfa97bd..0879b009b 100644 --- a/docusaurus/docs/develop/localnet/observability.md +++ b/docusaurus/docs/develop/localnet/observability.md @@ -53,7 +53,7 @@ select * from accounts limit 10; # Example query #### Port already in use -If you go to [http://localhost:10350/r/Postgres/overview] and see the following error: +If you go to [http://localhost:10350/r/Postgres/overview](http://localhost:10350/r/Postgres/overview) and see the following error: ```bash Reconnecting... Error port-forwarding Postgres (5432 -> 5432): Unable to listen on port 5432: Listeners failed to create with the following errors: [unable to create listener: Error listen tcp4 127.0.0.1:5432: bind: address already in use unable to create listener: Error listen tcp6 [::1]:5432: bind: address already in use] diff --git a/tiltfiles/pocketdex.tilt b/tiltfiles/pocketdex.tilt index 4cddb640e..0b9c69c2d 100644 --- a/tiltfiles/pocketdex.tilt +++ b/tiltfiles/pocketdex.tilt @@ -46,7 +46,7 @@ def load_pocketdex(pocketdex_root_path): gql_engine_values_path=gql_engine_values_path) -# Check if sibling pocketdex repo exists. +# check_and_load_pocketdex checks if sibling pocketdex repo exists. # If it does, load the pocketdex.tilt file from the sibling repo. # Otherwise, check the `indexer.clone_if_not_present` flag in `localnet_config.yaml` and EITHER: # 1. clone pocketdex to ../pocketdex