refactor: migrate blockchain CLI commands to use centralized config and update port assignments
- Replace load_multichain_config() with ctx.obj['config'] in all blockchain commands - Update blockchain RPC port from 8003 to 8006 throughout CLI - Add blockchain_rpc_url and wallet_url fields to Config class with environment variable support - Update node status command to use new port logic (8006 for primary, 8026 for dev) - Update installation docs to reflect new blockchain RPC port (8006) - Update
This commit is contained in:
203
scripts/README.md
Normal file
203
scripts/README.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# AITBC Development Environment Scripts
|
||||
|
||||
This directory contains scripts for managing the AITBC development environment, including incus containers and systemd services.
|
||||
|
||||
## 📋 Available Scripts
|
||||
|
||||
### 🔧 `start-aitbc-dev.sh`
|
||||
Starts incus containers and AITBC systemd services on localhost.
|
||||
|
||||
**Features:**
|
||||
- Starts incus containers: `aitbc` and `aitbc1`
|
||||
- Starts all local systemd services matching `aitbc-*`
|
||||
- Checks service health and port status
|
||||
- Tests health endpoints
|
||||
- Provides colored output and status reporting
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
./scripts/start-aitbc-dev.sh
|
||||
```
|
||||
|
||||
### 🛑 `stop-aitbc-dev.sh`
|
||||
Stops incus containers and AITBC systemd services on localhost.
|
||||
|
||||
**Features:**
|
||||
- Stops incus containers: `aitbc` and `aitbc1`
|
||||
- Stops all local systemd services matching `aitbc-*`
|
||||
- Verifies services are stopped
|
||||
- Provides colored output and status reporting
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
./scripts/stop-aitbc-dev.sh
|
||||
```
|
||||
|
||||
### 🚀 `start-aitbc-full.sh`
|
||||
Comprehensive startup script for the complete AITBC development environment.
|
||||
|
||||
**Features:**
|
||||
- Starts incus containers: `aitbc` and `aitbc1`
|
||||
- Starts services inside containers
|
||||
- Starts all local systemd services matching `aitbc-*`
|
||||
- Tests connectivity to container services
|
||||
- Provides detailed status reporting
|
||||
- Shows container IP addresses
|
||||
- Tests health endpoints
|
||||
|
||||
**Services Started:**
|
||||
- **Local Services:** All `aitbc-*` systemd services
|
||||
- **Container Services:**
|
||||
- `aitbc-coordinator-api`
|
||||
- `aitbc-wallet-daemon`
|
||||
- `aitbc-blockchain-node`
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
./scripts/start-aitbc-full.sh
|
||||
```
|
||||
|
||||
## 🎯 Prerequisites
|
||||
|
||||
### Required Commands:
|
||||
- `incus` - Container management
|
||||
- `systemctl` - Systemd service management
|
||||
- `curl` - Health endpoint testing
|
||||
- `netstat` - Port checking
|
||||
|
||||
### Required Containers:
|
||||
The scripts expect these incus containers to exist:
|
||||
- `aitbc`
|
||||
- `aitbc1`
|
||||
|
||||
### Required Services:
|
||||
The scripts look for systemd services matching the pattern `aitbc-*`.
|
||||
|
||||
## 📊 Service Ports
|
||||
|
||||
| Port | Service | Description |
|
||||
|------|---------|-------------|
|
||||
| 8001 | Coordinator API | Main API service |
|
||||
| 8002 | Wallet Daemon | Wallet management |
|
||||
| 8003 | Blockchain RPC | Blockchain node RPC |
|
||||
| 8000 | Coordinator API (alt) | Alternative API |
|
||||
| 8081 | Blockchain Node 1 | Blockchain instance |
|
||||
| 8082 | Blockchain Node 2 | Blockchain instance |
|
||||
| 8006 | Coordinator API (dev) | Development API |
|
||||
|
||||
## 🔍 Health Endpoints
|
||||
|
||||
The scripts test these health endpoints:
|
||||
- `http://localhost:8001/health` - Coordinator API
|
||||
- `http://localhost:8002/health` - Wallet Daemon
|
||||
- `http://localhost:8003/health` - Blockchain RPC
|
||||
|
||||
## 📝 Output Examples
|
||||
|
||||
### Success Output:
|
||||
```
|
||||
[INFO] Starting AITBC Development Environment...
|
||||
[INFO] Starting incus containers...
|
||||
[SUCCESS] Container aitbc started successfully
|
||||
[SUCCESS] Container aitbc1 started successfully
|
||||
[INFO] Starting AITBC systemd services on localhost...
|
||||
[SUCCESS] Service aitbc-coordinator-api started successfully
|
||||
[SUCCESS] Service aitbc-wallet-daemon started successfully
|
||||
[INFO] Checking service status...
|
||||
[SUCCESS] aitbc-coordinator-api: RUNNING
|
||||
[SUCCESS] aitbc-wallet-daemon: RUNNING
|
||||
[SUCCESS] AITBC Development Environment startup complete!
|
||||
```
|
||||
|
||||
### Service Status:
|
||||
```
|
||||
[INFO] Checking AITBC service ports...
|
||||
[SUCCESS] Coordinator API (port 8001): RUNNING
|
||||
[SUCCESS] Wallet Daemon (port 8002): RUNNING
|
||||
[WARNING] Blockchain RPC (port 8003): NOT RUNNING
|
||||
```
|
||||
|
||||
## 🛠️ Troubleshooting
|
||||
|
||||
### Common Issues:
|
||||
|
||||
1. **Container not found:**
|
||||
```
|
||||
[ERROR] Container aitbc not found. Please create it first.
|
||||
```
|
||||
**Solution:** Create the incus containers first:
|
||||
```bash
|
||||
incus launch images:ubuntu/22.04 aitbc
|
||||
incus launch images:ubuntu/22.04 aitbc1
|
||||
```
|
||||
|
||||
2. **Service not found:**
|
||||
```
|
||||
[WARNING] No AITBC services found on localhost
|
||||
```
|
||||
**Solution:** Install AITBC services or check if they're named correctly.
|
||||
|
||||
3. **Port already in use:**
|
||||
```
|
||||
[WARNING] Service aitbc-coordinator-api is already running
|
||||
```
|
||||
**Solution:** This is normal - the script detects already running services.
|
||||
|
||||
4. **Permission denied:**
|
||||
```
|
||||
[ERROR] Failed to start service aitbc-coordinator-api
|
||||
```
|
||||
**Solution:** Run with sudo or check user permissions.
|
||||
|
||||
### Debug Commands:
|
||||
|
||||
```bash
|
||||
# Check all AITBC services
|
||||
systemctl list-units | grep aitbc-
|
||||
|
||||
# Check container status
|
||||
incus list
|
||||
|
||||
# View service logs
|
||||
journalctl -f -u aitbc-coordinator-api
|
||||
|
||||
# View container logs
|
||||
incus exec aitbc -- journalctl -f -u aitbc-coordinator-api
|
||||
|
||||
# Check port usage
|
||||
netstat -tlnp | grep :800
|
||||
```
|
||||
|
||||
## 🔄 Workflow
|
||||
|
||||
### Development Setup:
|
||||
1. Create incus containers (if not exists)
|
||||
2. Install AITBC services in containers
|
||||
3. Install AITBC systemd services locally
|
||||
4. Run `./scripts/start-aitbc-full.sh`
|
||||
|
||||
### Daily Development:
|
||||
1. `./scripts/start-aitbc-full.sh` - Start everything
|
||||
2. Work on AITBC development
|
||||
3. `./scripts/stop-aitbc-dev.sh` - Stop when done
|
||||
|
||||
### Testing:
|
||||
1. Start services with scripts
|
||||
2. Test health endpoints
|
||||
3. Check logs for issues
|
||||
4. Stop services when finished
|
||||
|
||||
## 📚 Additional Information
|
||||
|
||||
- **Container IPs:** Scripts show container IP addresses for direct access
|
||||
- **Health Checks:** Automatic health endpoint testing
|
||||
- **Service Status:** Real-time status reporting
|
||||
- **Error Handling:** Graceful error handling with informative messages
|
||||
|
||||
## 🎯 Best Practices
|
||||
|
||||
1. **Use the full script** for complete environment setup
|
||||
2. **Check the output** for any warnings or errors
|
||||
3. **Monitor logs** when troubleshooting issues
|
||||
4. **Stop services** when not in use to conserve resources
|
||||
5. **Run scripts from the project root** for proper path resolution
|
||||
Reference in New Issue
Block a user