clawsql 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -21
- package/dist/api/routes/instances.d.ts.map +1 -1
- package/dist/api/routes/instances.js +9 -6
- package/dist/api/routes/instances.js.map +1 -1
- package/dist/api/schemas/index.d.ts +142 -142
- package/dist/app.js +2 -2
- package/dist/cli/commands/cleanup.d.ts.map +1 -1
- package/dist/cli/commands/cleanup.js +40 -44
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +41 -22
- package/dist/cli/commands/instances.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +16 -36
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/stop.d.ts.map +1 -1
- package/dist/cli/commands/stop.js +18 -35
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/utils/command-executor.d.ts +62 -0
- package/dist/cli/utils/command-executor.d.ts.map +1 -0
- package/dist/cli/utils/command-executor.js +224 -0
- package/dist/cli/utils/command-executor.js.map +1 -0
- package/dist/config/settings.js +1 -1
- package/dist/core/discovery/topology.d.ts +2 -0
- package/dist/core/discovery/topology.d.ts.map +1 -1
- package/dist/core/discovery/topology.js +48 -7
- package/dist/core/discovery/topology.js.map +1 -1
- package/docker/Dockerfile.allinone +37 -28
- package/docker/orchestrator/orchestrator.conf.json +2 -2
- package/docker-compose.demo.yml +26 -17
- package/docker-compose.yml +3 -0
- package/init/metadata.sql +11 -0
- package/init/primary.sql +2 -12
- package/init/replica-host.sql +7 -0
- package/init/replica.sql +12 -2
- package/package.json +1 -1
- package/dist/__tests__/config/settings.test.d.ts +0 -5
- package/dist/__tests__/config/settings.test.d.ts.map +0 -1
- package/dist/__tests__/config/settings.test.js +0 -154
- package/dist/__tests__/config/settings.test.js.map +0 -1
- package/dist/__tests__/core/discovery/topology.test.d.ts +0 -5
- package/dist/__tests__/core/discovery/topology.test.d.ts.map +0 -1
- package/dist/__tests__/core/discovery/topology.test.js +0 -191
- package/dist/__tests__/core/discovery/topology.test.js.map +0 -1
- package/dist/__tests__/core/failover/executor.test.d.ts +0 -5
- package/dist/__tests__/core/failover/executor.test.d.ts.map +0 -1
- package/dist/__tests__/core/failover/executor.test.js +0 -256
- package/dist/__tests__/core/failover/executor.test.js.map +0 -1
- package/dist/__tests__/core/monitoring/collector.test.d.ts +0 -5
- package/dist/__tests__/core/monitoring/collector.test.d.ts.map +0 -1
- package/dist/__tests__/core/monitoring/collector.test.js +0 -131
- package/dist/__tests__/core/monitoring/collector.test.js.map +0 -1
- package/dist/__tests__/core/monitoring/exporters.test.d.ts +0 -5
- package/dist/__tests__/core/monitoring/exporters.test.d.ts.map +0 -1
- package/dist/__tests__/core/monitoring/exporters.test.js +0 -90
- package/dist/__tests__/core/monitoring/exporters.test.js.map +0 -1
- package/dist/__tests__/core/routing/proxysql-manager.test.d.ts +0 -5
- package/dist/__tests__/core/routing/proxysql-manager.test.d.ts.map +0 -1
- package/dist/__tests__/core/routing/proxysql-manager.test.js +0 -155
- package/dist/__tests__/core/routing/proxysql-manager.test.js.map +0 -1
- package/dist/__tests__/types/index.test.d.ts +0 -5
- package/dist/__tests__/types/index.test.d.ts.map +0 -1
- package/dist/__tests__/types/index.test.js +0 -290
- package/dist/__tests__/types/index.test.js.map +0 -1
- package/dist/__tests__/utils/exceptions.test.d.ts +0 -5
- package/dist/__tests__/utils/exceptions.test.d.ts.map +0 -1
- package/dist/__tests__/utils/exceptions.test.js +0 -142
- package/dist/__tests__/utils/exceptions.test.js.map +0 -1
- package/dist/cli/commands/health.d.ts +0 -12
- package/dist/cli/commands/health.d.ts.map +0 -1
- package/dist/cli/commands/health.js +0 -125
- package/dist/cli/commands/health.js.map +0 -1
- package/docker/init/primary.sql +0 -26
- package/docker/init/replica.sql +0 -16
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
# - Grafana (visualization)
|
|
10
10
|
# - Supervisord (process manager)
|
|
11
11
|
|
|
12
|
-
FROM
|
|
12
|
+
FROM node:20-slim AS clawsql-builder
|
|
13
13
|
|
|
14
14
|
WORKDIR /build
|
|
15
15
|
COPY package.json package-lock.json* ./
|
|
@@ -18,27 +18,30 @@ COPY . .
|
|
|
18
18
|
RUN npm run build
|
|
19
19
|
|
|
20
20
|
# =============================================================================
|
|
21
|
-
# Final all-in-one image
|
|
21
|
+
# Final all-in-one image (Debian-based for glibc compatibility)
|
|
22
22
|
# =============================================================================
|
|
23
|
-
FROM
|
|
23
|
+
FROM debian:bookworm-slim
|
|
24
24
|
|
|
25
25
|
# Install all dependencies
|
|
26
|
-
RUN
|
|
26
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
27
27
|
nodejs \
|
|
28
28
|
npm \
|
|
29
29
|
curl \
|
|
30
30
|
wget \
|
|
31
|
-
mysql-client \
|
|
31
|
+
default-mysql-client \
|
|
32
32
|
supervisor \
|
|
33
33
|
python3 \
|
|
34
|
-
|
|
34
|
+
python3-pip \
|
|
35
35
|
bash \
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
procps \
|
|
37
|
+
gnupg \
|
|
38
|
+
lsb-release \
|
|
39
|
+
ca-certificates \
|
|
40
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
38
41
|
|
|
39
42
|
# Download and install components
|
|
40
|
-
ARG ORCHESTRATOR_VERSION=
|
|
41
|
-
ARG PROXYSQL_VERSION=
|
|
43
|
+
ARG ORCHESTRATOR_VERSION=3.2.6
|
|
44
|
+
ARG PROXYSQL_VERSION=3.0.6
|
|
42
45
|
ARG PROMETHEUS_VERSION=2.45.0
|
|
43
46
|
ARG GRAFANA_VERSION=10.2.0
|
|
44
47
|
|
|
@@ -54,24 +57,21 @@ RUN mkdir -p /opt/clawsql \
|
|
|
54
57
|
/var/lib/grafana \
|
|
55
58
|
/data
|
|
56
59
|
|
|
57
|
-
#
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
COPY docker/prometheus/prometheus.yml /etc/prometheus.yml
|
|
64
|
-
COPY docker/grafana/provisioning /opt/grafana/conf/provisioning
|
|
65
|
-
COPY docker/grafana/dashboards /opt/grafana/dashboards
|
|
60
|
+
# Download Orchestrator
|
|
61
|
+
RUN ARCH=$(uname -m) && \
|
|
62
|
+
if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; elif [ "$ARCH" = "aarch64" ]; then ARCH="arm64"; fi && \
|
|
63
|
+
wget -q "https://github.com/openark/orchestrator/releases/download/v${ORCHESTRATOR_VERSION}/orchestrator-${ORCHESTRATOR_VERSION}-linux-${ARCH}.tar.gz" -O /tmp/orchestrator.tar.gz && \
|
|
64
|
+
tar -xzf /tmp/orchestrator.tar.gz -C /opt/orchestrator --strip-components=1 && \
|
|
65
|
+
rm /tmp/orchestrator.tar.gz
|
|
66
66
|
|
|
67
|
-
# Download
|
|
67
|
+
# Download and install ProxySQL (install before copying our config)
|
|
68
68
|
RUN ARCH=$(uname -m) && \
|
|
69
|
-
if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; fi && \
|
|
70
|
-
wget -q "https://github.com/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; elif [ "$ARCH" = "aarch64" ]; then ARCH="arm64"; fi && \
|
|
70
|
+
wget -q "https://github.com/sysown/proxysql/releases/download/v${PROXYSQL_VERSION}/proxysql_${PROXYSQL_VERSION}-debian12_${ARCH}.deb" -O /tmp/proxysql.deb && \
|
|
71
|
+
apt-get update && \
|
|
72
|
+
DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confnew" /tmp/proxysql.deb && \
|
|
73
|
+
rm /tmp/proxysql.deb && \
|
|
74
|
+
rm -rf /var/lib/apt/lists/*
|
|
75
75
|
|
|
76
76
|
# Download Prometheus
|
|
77
77
|
RUN ARCH=$(uname -m) && \
|
|
@@ -87,8 +87,17 @@ RUN ARCH=$(uname -m) && \
|
|
|
87
87
|
tar -xzf /tmp/grafana.tar.gz -C /opt/grafana --strip-components=1 && \
|
|
88
88
|
rm /tmp/grafana.tar.gz
|
|
89
89
|
|
|
90
|
-
#
|
|
91
|
-
|
|
90
|
+
# Copy ClawSQL application
|
|
91
|
+
COPY --from=clawsql-builder /build/dist /opt/clawsql/dist
|
|
92
|
+
COPY --from=clawsql-builder /build/node_modules /opt/clawsql/node_modules
|
|
93
|
+
COPY --from=clawsql-builder /build/package.json /opt/clawsql/
|
|
94
|
+
|
|
95
|
+
# Copy configuration files (after installing packages to avoid conflicts)
|
|
96
|
+
COPY docker/orchestrator/orchestrator.conf.json /etc/orchestrator.conf.json
|
|
97
|
+
COPY docker/proxysql/proxysql.cnf /etc/proxysql.cnf
|
|
98
|
+
COPY docker/prometheus/prometheus.yml /etc/prometheus.yml
|
|
99
|
+
COPY docker/grafana/provisioning /opt/grafana/conf/provisioning
|
|
100
|
+
COPY docker/grafana/dashboards /opt/grafana/dashboards
|
|
92
101
|
|
|
93
102
|
# Copy supervisord configuration
|
|
94
103
|
COPY docker/supervisord.conf /etc/supervisord.conf
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"DiscoverByShowSlaveHosts": true,
|
|
24
24
|
"PowerOffInstancesMeta": true,
|
|
25
25
|
"InstanceBulkOperationsWaitTimeoutSeconds": 300,
|
|
26
|
-
"HostnameResolveMethod": "
|
|
27
|
-
"MySQLHostnameResolveMethod": "@@
|
|
26
|
+
"HostnameResolveMethod": "none",
|
|
27
|
+
"MySQLHostnameResolveMethod": "@@report_host",
|
|
28
28
|
"SkipBinlogServerUnresolveCheck": true,
|
|
29
29
|
"ExpiryHostnameResolvesMinutes": 60,
|
|
30
30
|
"RejectHostnameResolvePattern": "",
|
package/docker-compose.demo.yml
CHANGED
|
@@ -3,102 +3,111 @@
|
|
|
3
3
|
#
|
|
4
4
|
# This file adds a demo MySQL cluster (primary + 2 replicas) for testing.
|
|
5
5
|
# Users with existing MySQL instances do NOT need this file.
|
|
6
|
+
#
|
|
7
|
+
# NOTE: MySQL containers use host networking to simulate real multi-node deployments.
|
|
8
|
+
# Each instance is accessible on the host IP with different ports:
|
|
9
|
+
# - Primary: <host-ip>:3306
|
|
10
|
+
# - Replica 1: <host-ip>:3307
|
|
11
|
+
# - Replica 2: <host-ip>:3308
|
|
6
12
|
|
|
7
13
|
services:
|
|
8
14
|
# =============================================================================
|
|
9
15
|
# MySQL Primary (Writer)
|
|
16
|
+
# Uses host networking - accessible on host port 3306
|
|
10
17
|
# =============================================================================
|
|
11
18
|
mysql-primary:
|
|
12
19
|
image: docker.io/library/mysql:8.0
|
|
13
20
|
container_name: mysql-primary
|
|
14
21
|
hostname: mysql-primary
|
|
15
|
-
|
|
16
|
-
- "3306:3306"
|
|
22
|
+
network_mode: host
|
|
17
23
|
environment:
|
|
18
24
|
- MYSQL_ROOT_PASSWORD=rootpassword
|
|
19
25
|
command: >
|
|
20
26
|
--server-id=1
|
|
27
|
+
--port=3306
|
|
21
28
|
--log-bin=mysql-bin
|
|
22
29
|
--binlog-format=ROW
|
|
23
30
|
--gtid-mode=ON
|
|
24
31
|
--enforce-gtid-consistency=ON
|
|
25
32
|
--log-slave-updates=ON
|
|
33
|
+
--report-host=${HOST_IP:-127.0.0.1}
|
|
34
|
+
--report-port=3306
|
|
26
35
|
volumes:
|
|
27
36
|
- mysql-primary-data:/var/lib/mysql
|
|
28
37
|
- ./init/primary.sql:/docker-entrypoint-initdb.d/01-primary.sql
|
|
29
|
-
networks:
|
|
30
|
-
- clawsql-network
|
|
31
38
|
restart: unless-stopped
|
|
32
39
|
healthcheck:
|
|
33
|
-
test: ["CMD", "mysqladmin", "ping", "-h", "
|
|
40
|
+
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-P", "3306", "-uroot", "-prootpassword"]
|
|
34
41
|
interval: 10s
|
|
35
42
|
timeout: 5s
|
|
36
43
|
retries: 5
|
|
37
44
|
|
|
38
45
|
# =============================================================================
|
|
39
46
|
# MySQL Replica 1 (Reader)
|
|
47
|
+
# Uses host networking - accessible on host port 3307
|
|
40
48
|
# =============================================================================
|
|
41
49
|
mysql-replica-1:
|
|
42
50
|
image: docker.io/library/mysql:8.0
|
|
43
51
|
container_name: mysql-replica-1
|
|
44
52
|
hostname: mysql-replica-1
|
|
45
|
-
|
|
46
|
-
- "3307:3306"
|
|
53
|
+
network_mode: host
|
|
47
54
|
environment:
|
|
48
55
|
- MYSQL_ROOT_PASSWORD=rootpassword
|
|
49
56
|
command: >
|
|
50
57
|
--server-id=2
|
|
58
|
+
--port=3307
|
|
51
59
|
--log-bin=mysql-bin
|
|
52
60
|
--binlog-format=ROW
|
|
53
61
|
--gtid-mode=ON
|
|
54
62
|
--enforce-gtid-consistency=ON
|
|
55
63
|
--log-slave-updates=ON
|
|
56
64
|
--read-only=ON
|
|
65
|
+
--report-host=${HOST_IP:-127.0.0.1}
|
|
66
|
+
--report-port=3307
|
|
57
67
|
volumes:
|
|
58
68
|
- mysql-replica-1-data:/var/lib/mysql
|
|
59
|
-
- ./init/replica.sql:/docker-entrypoint-initdb.d/01-replica.sql
|
|
69
|
+
- ./init/replica-host.sql:/docker-entrypoint-initdb.d/01-replica.sql
|
|
60
70
|
depends_on:
|
|
61
71
|
mysql-primary:
|
|
62
72
|
condition: service_healthy
|
|
63
|
-
networks:
|
|
64
|
-
- clawsql-network
|
|
65
73
|
restart: unless-stopped
|
|
66
74
|
healthcheck:
|
|
67
|
-
test: ["CMD", "mysqladmin", "ping", "-h", "
|
|
75
|
+
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-P", "3307", "-uroot", "-prootpassword"]
|
|
68
76
|
interval: 10s
|
|
69
77
|
timeout: 5s
|
|
70
78
|
retries: 5
|
|
71
79
|
|
|
72
80
|
# =============================================================================
|
|
73
81
|
# MySQL Replica 2 (Reader)
|
|
82
|
+
# Uses host networking - accessible on host port 3308
|
|
74
83
|
# =============================================================================
|
|
75
84
|
mysql-replica-2:
|
|
76
85
|
image: docker.io/library/mysql:8.0
|
|
77
86
|
container_name: mysql-replica-2
|
|
78
87
|
hostname: mysql-replica-2
|
|
79
|
-
|
|
80
|
-
- "3308:3306"
|
|
88
|
+
network_mode: host
|
|
81
89
|
environment:
|
|
82
90
|
- MYSQL_ROOT_PASSWORD=rootpassword
|
|
83
91
|
command: >
|
|
84
92
|
--server-id=3
|
|
93
|
+
--port=3308
|
|
85
94
|
--log-bin=mysql-bin
|
|
86
95
|
--binlog-format=ROW
|
|
87
96
|
--gtid-mode=ON
|
|
88
97
|
--enforce-gtid-consistency=ON
|
|
89
98
|
--log-slave-updates=ON
|
|
90
99
|
--read-only=ON
|
|
100
|
+
--report-host=${HOST_IP:-127.0.0.1}
|
|
101
|
+
--report-port=3308
|
|
91
102
|
volumes:
|
|
92
103
|
- mysql-replica-2-data:/var/lib/mysql
|
|
93
|
-
- ./init/replica.sql:/docker-entrypoint-initdb.d/01-replica.sql
|
|
104
|
+
- ./init/replica-host.sql:/docker-entrypoint-initdb.d/01-replica.sql
|
|
94
105
|
depends_on:
|
|
95
106
|
mysql-primary:
|
|
96
107
|
condition: service_healthy
|
|
97
|
-
networks:
|
|
98
|
-
- clawsql-network
|
|
99
108
|
restart: unless-stopped
|
|
100
109
|
healthcheck:
|
|
101
|
-
test: ["CMD", "mysqladmin", "ping", "-h", "
|
|
110
|
+
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-P", "3308", "-uroot", "-prootpassword"]
|
|
102
111
|
interval: 10s
|
|
103
112
|
timeout: 5s
|
|
104
113
|
retries: 5
|
package/docker-compose.yml
CHANGED
|
@@ -52,6 +52,8 @@ services:
|
|
|
52
52
|
condition: service_started
|
|
53
53
|
proxysql:
|
|
54
54
|
condition: service_started
|
|
55
|
+
metadata-mysql:
|
|
56
|
+
condition: service_healthy
|
|
55
57
|
networks:
|
|
56
58
|
- clawsql-network
|
|
57
59
|
restart: unless-stopped
|
|
@@ -189,6 +191,7 @@ services:
|
|
|
189
191
|
MYSQL_PASSWORD: ${METADATA_DB_PASSWORD:-clawsql_password}
|
|
190
192
|
volumes:
|
|
191
193
|
- metadata-mysql-data:/var/lib/mysql
|
|
194
|
+
- ./init/metadata.sql:/docker-entrypoint-initdb.d/01-metadata.sql
|
|
192
195
|
networks:
|
|
193
196
|
- clawsql-network
|
|
194
197
|
restart: unless-stopped
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
-- Metadata MySQL initialization script
|
|
2
|
+
-- Recreate clawsql user with mysql_native_password for Orchestrator compatibility
|
|
3
|
+
|
|
4
|
+
-- Drop the user created by MYSQL_USER env var (which uses caching_sha2_password)
|
|
5
|
+
DROP USER IF EXISTS 'clawsql'@'%';
|
|
6
|
+
|
|
7
|
+
-- Recreate with mysql_native_password
|
|
8
|
+
CREATE USER 'clawsql'@'%' IDENTIFIED WITH mysql_native_password BY 'clawsql_password';
|
|
9
|
+
GRANT ALL PRIVILEGES ON *.* TO 'clawsql'@'%' WITH GRANT OPTION;
|
|
10
|
+
|
|
11
|
+
FLUSH PRIVILEGES;
|
package/init/primary.sql
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
-- Primary initialization script
|
|
2
|
-
-- Create
|
|
3
|
-
CREATE USER IF NOT EXISTS 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl_password';
|
|
4
|
-
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
|
|
5
|
-
|
|
6
|
-
-- Create monitoring user
|
|
7
|
-
CREATE USER IF NOT EXISTS 'monitor'@'%' IDENTIFIED WITH mysql_native_password BY 'monitorpassword';
|
|
8
|
-
GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'monitor'@'%';
|
|
9
|
-
GRANT SELECT ON mysql.* TO 'monitor'@'%';
|
|
10
|
-
|
|
11
|
-
-- Create Orchestrator user (needs SUPER for topology management)
|
|
12
|
-
-- Uses mysql_native_password for compatibility with Orchestrator
|
|
2
|
+
-- Create universal admin user for ClawSQL (used by Orchestrator, monitoring, and management)
|
|
13
3
|
CREATE USER IF NOT EXISTS 'clawsql'@'%' IDENTIFIED WITH mysql_native_password BY 'clawsql_password';
|
|
14
4
|
GRANT ALL PRIVILEGES ON *.* TO 'clawsql'@'%' WITH GRANT OPTION;
|
|
15
5
|
|
|
@@ -20,4 +10,4 @@ CREATE DATABASE IF NOT EXISTS clawsql;
|
|
|
20
10
|
CREATE USER IF NOT EXISTS 'app'@'%' IDENTIFIED WITH mysql_native_password BY 'apppassword';
|
|
21
11
|
GRANT ALL PRIVILEGES ON clawsql.* TO 'app'@'%';
|
|
22
12
|
|
|
23
|
-
FLUSH PRIVILEGES;
|
|
13
|
+
FLUSH PRIVILEGES;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Replica initialization script for host-networked demo
|
|
2
|
+
-- Create universal admin user for ClawSQL (used by Orchestrator, monitoring, and management)
|
|
3
|
+
CREATE USER IF NOT EXISTS 'clawsql'@'%' IDENTIFIED WITH mysql_native_password BY 'clawsql_password';
|
|
4
|
+
GRANT ALL PRIVILEGES ON *.* TO 'clawsql'@'%' WITH GRANT OPTION;
|
|
5
|
+
|
|
6
|
+
FLUSH PRIVILEGES;
|
|
7
|
+
-- Note: Replication is configured via ClawSQL CLI: /instances setup-replication
|
package/init/replica.sql
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
-- Replica initialization script
|
|
2
|
+
-- Create users for Orchestrator access
|
|
3
|
+
CREATE USER IF NOT EXISTS 'clawsql'@'%' IDENTIFIED WITH mysql_native_password BY 'clawsql_password';
|
|
4
|
+
GRANT ALL PRIVILEGES ON *.* TO 'clawsql'@'%' WITH GRANT OPTION;
|
|
5
|
+
|
|
6
|
+
-- Create monitoring user
|
|
7
|
+
CREATE USER IF NOT EXISTS 'monitor'@'%' IDENTIFIED WITH mysql_native_password BY 'monitorpassword';
|
|
8
|
+
GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'monitor'@'%';
|
|
9
|
+
|
|
10
|
+
FLUSH PRIVILEGES;
|
|
11
|
+
|
|
2
12
|
-- Configure replication to primary
|
|
3
13
|
STOP SLAVE;
|
|
4
14
|
|
|
@@ -6,8 +16,8 @@ CHANGE REPLICATION SOURCE TO
|
|
|
6
16
|
SOURCE_HOST='mysql-primary',
|
|
7
17
|
SOURCE_PORT=3306,
|
|
8
18
|
SOURCE_USER='repl',
|
|
9
|
-
SOURCE_PASSWORD='
|
|
19
|
+
SOURCE_PASSWORD='repl_password',
|
|
10
20
|
SOURCE_AUTO_POSITION=1,
|
|
11
21
|
GET_SOURCE_PUBLIC_KEY=1;
|
|
12
22
|
|
|
13
|
-
START SLAVE;
|
|
23
|
+
START SLAVE;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/config/settings.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Tests for ClawSQL configuration settings
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
// Store original env
|
|
7
|
-
const originalEnv = { ...process.env };
|
|
8
|
-
// Mock dotenv to prevent loading .env
|
|
9
|
-
jest.mock('dotenv', () => ({
|
|
10
|
-
config: jest.fn(),
|
|
11
|
-
}));
|
|
12
|
-
const settings_1 = require("../../config/settings");
|
|
13
|
-
describe('Settings', () => {
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
// Clear all env vars that affect settings
|
|
16
|
-
delete process.env.API_PORT;
|
|
17
|
-
delete process.env.DB_TYPE;
|
|
18
|
-
delete process.env.AUTO_FAILOVER_ENABLED;
|
|
19
|
-
delete process.env.PROXYSQL_ADMIN_USER;
|
|
20
|
-
delete process.env.PROXYSQL_ADMIN_PASSWORD;
|
|
21
|
-
delete process.env.API_TOKEN_SECRET;
|
|
22
|
-
delete process.env.MYSQL_MONITOR_PASSWORD;
|
|
23
|
-
// Reset settings cache before each test
|
|
24
|
-
(0, settings_1.resetSettings)();
|
|
25
|
-
});
|
|
26
|
-
afterEach(() => {
|
|
27
|
-
// Restore original env
|
|
28
|
-
process.env = { ...originalEnv };
|
|
29
|
-
(0, settings_1.resetSettings)();
|
|
30
|
-
});
|
|
31
|
-
describe('getSettings', () => {
|
|
32
|
-
it('should return default settings when no env vars set', () => {
|
|
33
|
-
const settings = (0, settings_1.getSettings)();
|
|
34
|
-
expect(settings.appName).toBe('ClawSQL');
|
|
35
|
-
expect(settings.appVersion).toBe('0.1.0');
|
|
36
|
-
expect(settings.debug).toBe(false);
|
|
37
|
-
});
|
|
38
|
-
it('should return cached settings on subsequent calls', () => {
|
|
39
|
-
const settings1 = (0, settings_1.getSettings)();
|
|
40
|
-
const settings2 = (0, settings_1.getSettings)();
|
|
41
|
-
expect(settings1).toBe(settings2);
|
|
42
|
-
});
|
|
43
|
-
it('should load new settings after reset', () => {
|
|
44
|
-
const settings1 = (0, settings_1.getSettings)();
|
|
45
|
-
(0, settings_1.resetSettings)();
|
|
46
|
-
const settings2 = (0, settings_1.getSettings)();
|
|
47
|
-
// Different object references but same values
|
|
48
|
-
expect(settings1).not.toBe(settings2);
|
|
49
|
-
expect(settings1.appName).toBe(settings2.appName);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('DatabaseSettings', () => {
|
|
53
|
-
it('should have correct defaults', () => {
|
|
54
|
-
const settings = (0, settings_1.getSettings)();
|
|
55
|
-
expect(settings.database.type).toBe('sqlite');
|
|
56
|
-
expect(settings.database.sqlitePath).toBe('/data/clawsql.db');
|
|
57
|
-
expect(settings.database.host).toBe('localhost');
|
|
58
|
-
expect(settings.database.port).toBe(3306);
|
|
59
|
-
expect(settings.database.name).toBe('clawsql');
|
|
60
|
-
expect(settings.database.user).toBe('clawsql');
|
|
61
|
-
expect(settings.database.poolSize).toBe(10);
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('OrchestratorSettings', () => {
|
|
65
|
-
it('should have correct defaults', () => {
|
|
66
|
-
const settings = (0, settings_1.getSettings)();
|
|
67
|
-
expect(settings.orchestrator.url).toBe('http://orchestrator:3000');
|
|
68
|
-
expect(settings.orchestrator.timeout).toBe(30);
|
|
69
|
-
expect(settings.orchestrator.tlsEnabled).toBe(false);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
describe('ProxySQLSettings', () => {
|
|
73
|
-
it('should have correct defaults', () => {
|
|
74
|
-
const settings = (0, settings_1.getSettings)();
|
|
75
|
-
expect(settings.proxysql.host).toBe('proxysql');
|
|
76
|
-
expect(settings.proxysql.adminPort).toBe(6032);
|
|
77
|
-
expect(settings.proxysql.mysqlPort).toBe(6033);
|
|
78
|
-
expect(settings.proxysql.adminUser).toBe('clawsql');
|
|
79
|
-
expect(settings.proxysql.adminPassword).toBe('clawsql');
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe('PrometheusSettings', () => {
|
|
83
|
-
it('should have correct defaults', () => {
|
|
84
|
-
const settings = (0, settings_1.getSettings)();
|
|
85
|
-
expect(settings.prometheus.url).toBe('http://prometheus:9090');
|
|
86
|
-
expect(settings.prometheus.retentionDays).toBe(15);
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
describe('MonitoringSettings', () => {
|
|
90
|
-
it('should have correct defaults', () => {
|
|
91
|
-
const settings = (0, settings_1.getSettings)();
|
|
92
|
-
expect(settings.monitoring.collectionInterval).toBe(15);
|
|
93
|
-
expect(settings.monitoring.healthCheckInterval).toBe(10);
|
|
94
|
-
expect(settings.monitoring.alertCooldownMinutes).toBe(5);
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
describe('FailoverSettings', () => {
|
|
98
|
-
it('should have correct defaults', () => {
|
|
99
|
-
const settings = (0, settings_1.getSettings)();
|
|
100
|
-
expect(settings.failover.autoFailoverEnabled).toBe(true);
|
|
101
|
-
expect(settings.failover.timeoutSeconds).toBe(30);
|
|
102
|
-
expect(settings.failover.minReplicasForFailover).toBe(2);
|
|
103
|
-
expect(settings.failover.confirmationChecks).toBe(3);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
describe('DiscoverySettings', () => {
|
|
107
|
-
it('should have correct defaults', () => {
|
|
108
|
-
const settings = (0, settings_1.getSettings)();
|
|
109
|
-
expect(settings.discovery.networkSegments).toBe('172.18.0.0/24');
|
|
110
|
-
expect(settings.discovery.portRangeStart).toBe(3306);
|
|
111
|
-
expect(settings.discovery.portRangeEnd).toBe(3306);
|
|
112
|
-
expect(settings.discovery.timeout).toBe(2);
|
|
113
|
-
expect(settings.discovery.maxConcurrent).toBe(100);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
describe('APISettings', () => {
|
|
117
|
-
it('should have correct defaults', () => {
|
|
118
|
-
const settings = (0, settings_1.getSettings)();
|
|
119
|
-
expect(settings.api.host).toBe('0.0.0.0');
|
|
120
|
-
expect(settings.api.port).toBe(8080);
|
|
121
|
-
expect(settings.api.tokenSecret).toBe('change-me-in-production');
|
|
122
|
-
expect(settings.api.tokenExpiryHours).toBe(24);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
describe('MySQLCredentials', () => {
|
|
126
|
-
it('should have correct defaults', () => {
|
|
127
|
-
const settings = (0, settings_1.getSettings)();
|
|
128
|
-
expect(settings.mysql.monitorUser).toBe('monitor');
|
|
129
|
-
expect(settings.mysql.monitorPassword).toBe('');
|
|
130
|
-
expect(settings.mysql.replicationUser).toBe('repl');
|
|
131
|
-
expect(settings.mysql.replicationPassword).toBe('');
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
describe('LogSettings', () => {
|
|
135
|
-
it('should have correct defaults', () => {
|
|
136
|
-
const settings = (0, settings_1.getSettings)();
|
|
137
|
-
expect(settings.logging.level).toBe('INFO');
|
|
138
|
-
expect(settings.logging.format).toBe('json');
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
describe('Environment variable loading', () => {
|
|
142
|
-
it('should load settings from environment variables', () => {
|
|
143
|
-
process.env.API_PORT = '9090';
|
|
144
|
-
process.env.DB_TYPE = 'mysql';
|
|
145
|
-
process.env.AUTO_FAILOVER_ENABLED = 'false';
|
|
146
|
-
(0, settings_1.resetSettings)();
|
|
147
|
-
const settings = (0, settings_1.getSettings)();
|
|
148
|
-
expect(settings.api.port).toBe(9090);
|
|
149
|
-
expect(settings.database.type).toBe('mysql');
|
|
150
|
-
expect(settings.failover.autoFailoverEnabled).toBe(false);
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
//# sourceMappingURL=settings.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings.test.js","sourceRoot":"","sources":["../../../src/__tests__/config/settings.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"topology.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/core/discovery/topology.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|