mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-08 21:34:25 +00:00
145 lines
4.7 KiB
Fish
145 lines
4.7 KiB
Fish
#!/usr/bin/env fish
|
|
|
|
# Connect to PeerDB server in SQL mode
|
|
psql 'host=localhost port=9900 password=peerdb'
|
|
psql 'postgresql://peerdb.example.org:9900/?password=peerdb'
|
|
|
|
|
|
# List peers
|
|
psql "host=localhost port=9900 password=$(gopass show -o 'peerdb/instance')" \
|
|
-c "SELECT id, name, type FROM peers;"
|
|
curl -fsS --url 'http://localhost:3000/api/v1/peers/list' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)"
|
|
|
|
# Create peers
|
|
# postgres: peer.type=3|'POSTGRES' + postgres_config={…}
|
|
# clickhouse: peer.type=8 + clickhouse_config={…}
|
|
# kafka: peer.type=9 + kafka_config={…}
|
|
psql "host=localhost port=9900 password=$(gopass show -o 'peerdb/instance')" \
|
|
-c "CREATE PEER some_pg_peer FROM POSTGRES WITH (
|
|
host = 'localhost',
|
|
port = '5432',
|
|
user = 'peerdb',
|
|
password = '$(gopass show -o 'peerdb/db-user')',
|
|
database = 'sales'
|
|
);"
|
|
curl -fsS --url 'http://localhost:3000/api/v1/peers/create' -X 'POST' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
-H 'Content-Type: application/json' \
|
|
-d "{
|
|
\"peer\": {
|
|
\"name\": \"some_pg_peer\",
|
|
\"type\": \"POSTGRES\",
|
|
\"postgres_config\": {
|
|
\"host\": \"localhost\",
|
|
\"port\": 5432,
|
|
\"user\": \"peerdb\",
|
|
\"password\": \"$(gopass show -o 'peerdb/db-user')\",
|
|
\"database\": \"sales\"
|
|
}
|
|
}
|
|
}"
|
|
|
|
# Update peers
|
|
# Reuse the command for creation but add 'allow_update: true' to the data
|
|
curl -fsS --url 'http://localhost:3000/api/v1/peers/create' -X 'POST' … \
|
|
-d "{
|
|
\"peer\": { … },
|
|
allow_update: true
|
|
}"
|
|
|
|
# Delete peers
|
|
psql "host=localhost port=9900 password=$(gopass show -o 'peerdb/instance')" \
|
|
-c "DELETE FROM peers WHERE name == 'some_pg_peer';"
|
|
|
|
|
|
# List mirrors
|
|
curl -fsS --url 'http://localhost:3000/api/v1/mirrors/list' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
| jq '.mirrors[]' -
|
|
|
|
# Get mirrors' status
|
|
curl -fsS 'http://localhost:3000/api/v1/mirrors/status' -X 'POST' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{ "flowJobName": "testing_bq_2" }'
|
|
|
|
# Get mirrors' configuration
|
|
curl -fsS 'http://localhost:3000/api/v1/mirrors/status' -X 'POST' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"flowJobName": "testing_bq_2",
|
|
"includeFlowInfo": true
|
|
}' \
|
|
| jq '.cdcStatus.config' -
|
|
|
|
# Create mirrors
|
|
curl -fsS 'http://localhost:3000/api/v1/flows/cdc/create' -X 'POST' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"connection_configs": {
|
|
"flow_job_name": "testing_bq_2",
|
|
"source_name": "some_pg_peer",
|
|
"destination_name": "some_other_pg_peer",
|
|
"table_mappings": [
|
|
{
|
|
"source_table_identifier": "public.users",
|
|
"destination_table_identifier": "users_api"
|
|
},
|
|
{
|
|
"source_table_identifier": "public.payments",
|
|
"destination_table_identifier": "payments_api"
|
|
},
|
|
{
|
|
"source_table_identifier": "public.optional_ordering_key",
|
|
"destination_table_identifier": "optional_ordering_key",
|
|
"columns": [
|
|
{
|
|
"name": "id",
|
|
"ordering": 1
|
|
},
|
|
{
|
|
"name": "created_at",
|
|
"ordering": 2
|
|
}
|
|
]
|
|
},
|
|
],
|
|
"do_initial_snapshot": true
|
|
}
|
|
}'
|
|
|
|
|
|
# Show alerts' configuration
|
|
curl -fsS --url 'http://localhost:3000/api/v1/alerts/config' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
| jq '.configs[]' -
|
|
|
|
# Create alerts
|
|
# 'service_config' seems must be a string
|
|
curl -fsS --url 'http://localhost:3000/api/v1/alerts/config' -X 'POST' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"config": {
|
|
"id": -1,
|
|
"service_type": "slack",
|
|
"service_config": "{\"slot_lag_mb_alert_threshold\":15000,\"open_connections_alert_threshold\":20,\"auth_token\":\"xoxb-012345678901-0123456789012-1234ABcdEFGhijKLMnopQRST\",\"channel_ids\":[\"C01K23X4567\"]}",
|
|
"alert_for_mirrors": [
|
|
"odoo_postgres_to_snowflake",
|
|
"product_korea_postgres_to_snowflake",
|
|
"product_zimbabwe_postgres_to_snowflake"
|
|
]
|
|
}
|
|
}'
|
|
|
|
# Others
|
|
curl -fsS 'http://localhost:3000/api/v1/dynamic_settings' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
| jq '.settings[]' -
|
|
curl -fsS --url 'http://localhost:3000/api/v1/scripts/-1' \
|
|
-H "Authorization: Basic $(gopass show -o 'peerdb/instance' | xargs printf '%s' ':' | base64)" \
|
|
| jq '.scripts[]' -
|