add other horus installers, create examples, test startup
This commit is contained in:
209
examples/installers/horus/README.md
Normal file
209
examples/installers/horus/README.md
Normal file
@@ -0,0 +1,209 @@
|
||||
# Horus Installation Examples
|
||||
|
||||
This directory contains example scripts for installing and managing all Horus components using the herolib installer framework.
|
||||
|
||||
## Components
|
||||
|
||||
The Horus ecosystem consists of the following components:
|
||||
|
||||
1. **Coordinator** - Central coordination service (HTTP: 8081, WS: 9653)
|
||||
2. **Supervisor** - Supervision and monitoring service (HTTP: 8082, WS: 9654)
|
||||
3. **Hero Runner** - Command execution runner for Hero jobs
|
||||
4. **Osiris Runner** - Database-backed runner
|
||||
5. **SAL Runner** - System Abstraction Layer runner
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Full Installation and Start
|
||||
|
||||
To install and start all Horus components:
|
||||
|
||||
```bash
|
||||
# 1. Install all components (this will take several minutes)
|
||||
./horus_full_install.vsh
|
||||
|
||||
# 2. Start all services
|
||||
./horus_start_all.vsh
|
||||
|
||||
# 3. Check status
|
||||
./horus_status.vsh
|
||||
```
|
||||
|
||||
### Stop All Services
|
||||
|
||||
```bash
|
||||
./horus_stop_all.vsh
|
||||
```
|
||||
|
||||
## Available Scripts
|
||||
|
||||
### `horus_full_install.vsh`
|
||||
Installs all Horus components:
|
||||
- Checks and installs Redis if needed
|
||||
- Checks and installs Rust if needed
|
||||
- Clones the horus repository
|
||||
- Builds all binaries from source
|
||||
|
||||
**Note:** This script can take 10-30 minutes depending on your system, as it compiles Rust code.
|
||||
|
||||
### `horus_start_all.vsh`
|
||||
Starts all Horus services in the correct order:
|
||||
1. Coordinator
|
||||
2. Supervisor
|
||||
3. Hero Runner
|
||||
4. Osiris Runner
|
||||
5. SAL Runner
|
||||
|
||||
### `horus_stop_all.vsh`
|
||||
Stops all running Horus services in reverse order.
|
||||
|
||||
### `horus_status.vsh`
|
||||
Checks and displays the status of all Horus services.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- **Operating System**: Linux or macOS
|
||||
- **Dependencies** (automatically installed):
|
||||
- Redis (required for all components)
|
||||
- Rust toolchain (for building from source)
|
||||
- Git (for cloning repositories)
|
||||
|
||||
## Configuration
|
||||
|
||||
All components use default configurations:
|
||||
|
||||
### Coordinator
|
||||
- Binary: `/hero/var/bin/coordinator`
|
||||
- HTTP Port: `8081`
|
||||
- WebSocket Port: `9653`
|
||||
- Redis: `127.0.0.1:6379`
|
||||
|
||||
### Supervisor
|
||||
- Binary: `/hero/var/bin/supervisor`
|
||||
- HTTP Port: `8082`
|
||||
- WebSocket Port: `9654`
|
||||
- Redis: `127.0.0.1:6379`
|
||||
|
||||
### Runners
|
||||
- Hero Runner: `/hero/var/bin/herorunner`
|
||||
- Osiris Runner: `/hero/var/bin/runner_osiris`
|
||||
- SAL Runner: `/hero/var/bin/runner_sal`
|
||||
|
||||
## Custom Configuration
|
||||
|
||||
To customize the configuration, you can use heroscript:
|
||||
|
||||
```v
|
||||
import incubaid.herolib.installers.horus.coordinator
|
||||
|
||||
mut coordinator := herocoordinator.get(create: true)!
|
||||
coordinator.http_port = 9000
|
||||
coordinator.ws_port = 9001
|
||||
coordinator.log_level = 'debug'
|
||||
herocoordinator.set(coordinator)!
|
||||
coordinator.install()!
|
||||
coordinator.start()!
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
After starting the services, you can test them:
|
||||
|
||||
```bash
|
||||
# Test Coordinator HTTP endpoint
|
||||
curl http://127.0.0.1:8081
|
||||
|
||||
# Test Supervisor HTTP endpoint
|
||||
curl http://127.0.0.1:8082
|
||||
|
||||
# Check running processes
|
||||
pgrep -f coordinator
|
||||
pgrep -f supervisor
|
||||
pgrep -f herorunner
|
||||
pgrep -f runner_osiris
|
||||
pgrep -f runner_sal
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Redis Not Running
|
||||
If you get Redis connection errors:
|
||||
```bash
|
||||
# Check if Redis is running
|
||||
redis-cli ping
|
||||
|
||||
# Start Redis (Ubuntu/Debian)
|
||||
sudo systemctl start redis-server
|
||||
|
||||
# Start Redis (macOS with Homebrew)
|
||||
brew services start redis
|
||||
```
|
||||
|
||||
### Build Failures
|
||||
If the build fails:
|
||||
1. Ensure you have enough disk space (at least 5GB free)
|
||||
2. Check that Rust is properly installed: `rustc --version`
|
||||
3. Try cleaning the build: `cd /root/code/git.ourworld.tf/herocode/horus && cargo clean`
|
||||
|
||||
### Port Conflicts
|
||||
If ports 8081 or 8082 are already in use, you can customize the ports in the configuration.
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
### Individual Component Installation
|
||||
|
||||
You can install components individually:
|
||||
|
||||
```bash
|
||||
# Install only coordinator
|
||||
v run coordinator_only.vsh
|
||||
|
||||
# Install only supervisor
|
||||
v run supervisor_only.vsh
|
||||
```
|
||||
|
||||
### Using with Heroscript
|
||||
|
||||
You can also use heroscript files for configuration:
|
||||
|
||||
```heroscript
|
||||
!!herocoordinator.configure
|
||||
name:'production'
|
||||
http_port:8081
|
||||
ws_port:9653
|
||||
log_level:'info'
|
||||
|
||||
!!herocoordinator.install
|
||||
|
||||
!!herocoordinator.start
|
||||
```
|
||||
|
||||
## Service Management
|
||||
|
||||
Services are managed using the system's startup manager (zinit or systemd):
|
||||
|
||||
```bash
|
||||
# Check service status with systemd
|
||||
systemctl status coordinator
|
||||
|
||||
# View logs
|
||||
journalctl -u coordinator -f
|
||||
```
|
||||
|
||||
## Cleanup
|
||||
|
||||
To completely remove all Horus components:
|
||||
|
||||
```bash
|
||||
# Stop all services
|
||||
./horus_stop_all.vsh
|
||||
|
||||
# Destroy all components (removes binaries)
|
||||
v run horus_destroy_all.vsh
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions:
|
||||
- Check the main Horus repository: https://git.ourworld.tf/herocode/horus
|
||||
- Review the installer code in `lib/installers/horus/`
|
||||
60
examples/installers/horus/horus_config.heroscript
Normal file
60
examples/installers/horus/horus_config.heroscript
Normal file
@@ -0,0 +1,60 @@
|
||||
// Horus Configuration Heroscript
|
||||
// This file demonstrates how to configure all Horus components using heroscript
|
||||
|
||||
// Configure Coordinator
|
||||
!!herocoordinator.configure
|
||||
name:'default'
|
||||
binary_path:'/hero/var/bin/coordinator'
|
||||
redis_addr:'127.0.0.1:6379'
|
||||
http_port:8081
|
||||
ws_port:9653
|
||||
log_level:'info'
|
||||
repo_path:'/root/code/git.ourworld.tf/herocode/horus'
|
||||
|
||||
// Configure Supervisor
|
||||
!!supervisor.configure
|
||||
name:'default'
|
||||
binary_path:'/hero/var/bin/supervisor'
|
||||
redis_addr:'127.0.0.1:6379'
|
||||
http_port:8082
|
||||
ws_port:9654
|
||||
log_level:'info'
|
||||
repo_path:'/root/code/git.ourworld.tf/herocode/horus'
|
||||
|
||||
// Configure Hero Runner
|
||||
!!herorunner.configure
|
||||
name:'default'
|
||||
binary_path:'/hero/var/bin/herorunner'
|
||||
redis_addr:'127.0.0.1:6379'
|
||||
log_level:'info'
|
||||
repo_path:'/root/code/git.ourworld.tf/herocode/horus'
|
||||
|
||||
// Configure Osiris Runner
|
||||
!!osirisrunner.configure
|
||||
name:'default'
|
||||
binary_path:'/hero/var/bin/runner_osiris'
|
||||
redis_addr:'127.0.0.1:6379'
|
||||
log_level:'info'
|
||||
repo_path:'/root/code/git.ourworld.tf/herocode/horus'
|
||||
|
||||
// Configure SAL Runner
|
||||
!!salrunner.configure
|
||||
name:'default'
|
||||
binary_path:'/hero/var/bin/runner_sal'
|
||||
redis_addr:'127.0.0.1:6379'
|
||||
log_level:'info'
|
||||
repo_path:'/root/code/git.ourworld.tf/herocode/horus'
|
||||
|
||||
// Install all components
|
||||
!!herocoordinator.install
|
||||
!!supervisor.install
|
||||
!!herorunner.install
|
||||
!!osirisrunner.install
|
||||
!!salrunner.install
|
||||
|
||||
// Start all services
|
||||
!!herocoordinator.start name:'default'
|
||||
!!supervisor.start name:'default'
|
||||
!!herorunner.start name:'default'
|
||||
!!osirisrunner.start name:'default'
|
||||
!!salrunner.start name:'default'
|
||||
60
examples/installers/horus/horus_full_install.vsh
Executable file
60
examples/installers/horus/horus_full_install.vsh
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
|
||||
|
||||
import incubaid.herolib.installers.horus.coordinator
|
||||
import incubaid.herolib.installers.horus.supervisor
|
||||
import incubaid.herolib.installers.horus.herorunner
|
||||
import incubaid.herolib.installers.horus.osirisrunner
|
||||
import incubaid.herolib.installers.horus.salrunner
|
||||
|
||||
// Full Horus Installation Example
|
||||
// This script installs and configures all Horus components:
|
||||
// - Coordinator (port 8081)
|
||||
// - Supervisor (port 8082)
|
||||
// - Hero Runner
|
||||
// - Osiris Runner
|
||||
// - SAL Runner
|
||||
|
||||
println('🚀 Starting Full Horus Installation')
|
||||
|
||||
// Step 1: Install Coordinator
|
||||
println('\n📦 Step 1/5: Installing Coordinator...')
|
||||
mut coordinator_installer := coordinator.get(create: true)!
|
||||
coordinator_installer.install()!
|
||||
println('✅ Coordinator installed at ${coordinator_installer.binary_path}')
|
||||
|
||||
// Step 2: Install Supervisor
|
||||
println('\n📦 Step 2/5: Installing Supervisor...')
|
||||
mut supervisor_inst := supervisor.get(create: true)!
|
||||
supervisor_inst.install()!
|
||||
println('✅ Supervisor installed at ${supervisor_inst.binary_path}')
|
||||
|
||||
// Step 3: Install Hero Runner
|
||||
println('\n📦 Step 3/5: Installing Hero Runner...')
|
||||
mut hero_runner := herorunner.get(create: true)!
|
||||
hero_runner.install()!
|
||||
println('✅ Hero Runner installed at ${hero_runner.binary_path}')
|
||||
|
||||
// Step 4: Install Osiris Runner
|
||||
println('\n📦 Step 4/5: Installing Osiris Runner...')
|
||||
mut osiris_runner := osirisrunner.get(create: true)!
|
||||
osiris_runner.install()!
|
||||
println('✅ Osiris Runner installed at ${osiris_runner.binary_path}')
|
||||
|
||||
// Step 5: Install SAL Runner
|
||||
println('\n📦 Step 5/5: Installing SAL Runner...')
|
||||
mut sal_runner := salrunner.get(create: true)!
|
||||
sal_runner.install()!
|
||||
println('✅ SAL Runner installed at ${sal_runner.binary_path}')
|
||||
|
||||
println('🎉 All Horus components installed successfully!')
|
||||
|
||||
println('\n📋 Installation Summary:')
|
||||
println(' • Coordinator: ${coordinator_installer.binary_path} (HTTP: ${coordinator_installer.http_port}, WS: ${coordinator_installer.ws_port})')
|
||||
println(' • Supervisor: ${supervisor_inst.binary_path} (HTTP: ${supervisor_inst.http_port}, WS: ${supervisor_inst.ws_port})')
|
||||
println(' • Hero Runner: ${hero_runner.binary_path}')
|
||||
println(' • Osiris Runner: ${osiris_runner.binary_path}')
|
||||
println(' • SAL Runner: ${sal_runner.binary_path}')
|
||||
|
||||
println('\n💡 Next Steps:')
|
||||
println(' To start services, run: ./horus_start_all.vsh')
|
||||
println(' To test individual components, see the other example scripts')
|
||||
76
examples/installers/horus/horus_start_all.vsh
Executable file
76
examples/installers/horus/horus_start_all.vsh
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
|
||||
|
||||
import incubaid.herolib.installers.horus.coordinator
|
||||
import incubaid.herolib.installers.horus.supervisor
|
||||
import incubaid.herolib.installers.horus.herorunner
|
||||
import incubaid.herolib.installers.horus.osirisrunner
|
||||
import incubaid.herolib.installers.horus.salrunner
|
||||
import time
|
||||
|
||||
// Start All Horus Services
|
||||
// This script starts all Horus components in the correct order
|
||||
|
||||
println('🚀 Starting All Horus Services')
|
||||
|
||||
// Step 1: Start Coordinator
|
||||
println('\n▶️ Step 1/5: Starting Coordinator...')
|
||||
mut coordinator_installer := coordinator.get()!
|
||||
coordinator_installer.start()!
|
||||
if coordinator_installer.running()! {
|
||||
println('✅ Coordinator is running on HTTP:${coordinator_installer.http_port} WS:${coordinator_installer.ws_port}')
|
||||
} else {
|
||||
println('❌ Coordinator failed to start')
|
||||
}
|
||||
|
||||
// Step 2: Start Supervisor
|
||||
println('\n▶️ Step 2/5: Starting Supervisor...')
|
||||
mut supervisor_inst := supervisor.get()!
|
||||
supervisor_inst.start()!
|
||||
if supervisor_inst.running()! {
|
||||
println('✅ Supervisor is running on HTTP:${supervisor_inst.http_port} WS:${supervisor_inst.ws_port}')
|
||||
} else {
|
||||
println('❌ Supervisor failed to start')
|
||||
}
|
||||
|
||||
// Step 3: Start Hero Runner
|
||||
println('\n▶️ Step 3/5: Starting Hero Runner...')
|
||||
mut hero_runner := herorunner.get()!
|
||||
hero_runner.start()!
|
||||
if hero_runner.running()! {
|
||||
println('✅ Hero Runner is running')
|
||||
} else {
|
||||
println('❌ Hero Runner failed to start')
|
||||
}
|
||||
|
||||
// Step 4: Start Osiris Runner
|
||||
println('\n▶️ Step 4/5: Starting Osiris Runner...')
|
||||
mut osiris_runner := osirisrunner.get()!
|
||||
osiris_runner.start()!
|
||||
if osiris_runner.running()! {
|
||||
println('✅ Osiris Runner is running')
|
||||
} else {
|
||||
println('❌ Osiris Runner failed to start')
|
||||
}
|
||||
|
||||
// Step 5: Start SAL Runner
|
||||
println('\n▶️ Step 5/5: Starting SAL Runner...')
|
||||
mut sal_runner := salrunner.get()!
|
||||
sal_runner.start()!
|
||||
if sal_runner.running()! {
|
||||
println('✅ SAL Runner is running')
|
||||
} else {
|
||||
println('❌ SAL Runner failed to start')
|
||||
}
|
||||
|
||||
println('🎉 All Horus services started!')
|
||||
|
||||
println('\n📊 Service Status:')
|
||||
println(' • Coordinator: ${if coordinator_installer.running()! { "✅ Running" } else { "❌ Stopped" }} (http://127.0.0.1:${coordinator_installer.http_port})')
|
||||
println(' • Supervisor: ${if supervisor_inst.running()! { "✅ Running" } else { "❌ Stopped" }} (http://127.0.0.1:${supervisor_inst.http_port})')
|
||||
println(' • Hero Runner: ${if hero_runner.running()! { "✅ Running" } else { "❌ Stopped" }}')
|
||||
println(' • Osiris Runner: ${if osiris_runner.running()! { "✅ Running" } else { "❌ Stopped" }}')
|
||||
println(' • SAL Runner: ${if sal_runner.running()! { "✅ Running" } else { "❌ Stopped" }}')
|
||||
|
||||
println('\n💡 Next Steps:')
|
||||
println(' To stop services, run: ./horus_stop_all.vsh')
|
||||
println(' To check status, run: ./horus_status.vsh')
|
||||
56
examples/installers/horus/horus_status.vsh
Executable file
56
examples/installers/horus/horus_status.vsh
Executable file
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
|
||||
|
||||
import incubaid.herolib.installers.horus.coordinator
|
||||
import incubaid.herolib.installers.horus.supervisor
|
||||
import incubaid.herolib.installers.horus.herorunner
|
||||
import incubaid.herolib.installers.horus.osirisrunner
|
||||
import incubaid.herolib.installers.horus.salrunner
|
||||
|
||||
// Check Status of All Horus Services
|
||||
|
||||
println('📊 Horus Services Status')
|
||||
println('=' * 60)
|
||||
|
||||
// Get all services
|
||||
mut coordinator := herocoordinator.get()!
|
||||
mut supervisor_inst := supervisor.get()!
|
||||
mut hero_runner := herorunner.get()!
|
||||
mut osiris_runner := osirisrunner.get()!
|
||||
mut sal_runner := salrunner.get()!
|
||||
|
||||
// Check status
|
||||
println('\n🔍 Checking service status...\n')
|
||||
|
||||
coord_running := coordinator.running()!
|
||||
super_running := supervisor_inst.running()!
|
||||
hero_running := hero_runner.running()!
|
||||
osiris_running := osiris_runner.running()!
|
||||
sal_running := sal_runner.running()!
|
||||
|
||||
println('Service Status Details')
|
||||
println('-' * 60)
|
||||
println('Coordinator ${if coord_running { "✅ Running" } else { "❌ Stopped" }} http://127.0.0.1:${coordinator.http_port}')
|
||||
println('Supervisor ${if super_running { "✅ Running" } else { "❌ Stopped" }} http://127.0.0.1:${supervisor_inst.http_port}')
|
||||
println('Hero Runner ${if hero_running { "✅ Running" } else { "❌ Stopped" }}')
|
||||
println('Osiris Runner ${if osiris_running { "✅ Running" } else { "❌ Stopped" }}')
|
||||
println('SAL Runner ${if sal_running { "✅ Running" } else { "❌ Stopped" }}')
|
||||
|
||||
println('\n' + '=' * 60)
|
||||
|
||||
// Count running services
|
||||
mut running_count := 0
|
||||
if coord_running { running_count++ }
|
||||
if super_running { running_count++ }
|
||||
if hero_running { running_count++ }
|
||||
if osiris_running { running_count++ }
|
||||
if sal_running { running_count++ }
|
||||
|
||||
println('Summary: ${running_count}/5 services running')
|
||||
|
||||
if running_count == 5 {
|
||||
println('🎉 All services are running!')
|
||||
} else if running_count == 0 {
|
||||
println('💤 All services are stopped')
|
||||
} else {
|
||||
println('⚠️ Some services are not running')
|
||||
}
|
||||
43
examples/installers/horus/horus_stop_all.vsh
Executable file
43
examples/installers/horus/horus_stop_all.vsh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
|
||||
|
||||
import incubaid.herolib.installers.horus.coordinator
|
||||
import incubaid.herolib.installers.horus.supervisor
|
||||
import incubaid.herolib.installers.horus.herorunner
|
||||
import incubaid.herolib.installers.horus.osirisrunner
|
||||
import incubaid.herolib.installers.horus.salrunner
|
||||
|
||||
// Stop All Horus Services
|
||||
// This script stops all running Horus components
|
||||
|
||||
println('🛑 Stopping All Horus Services')
|
||||
println('=' * 60)
|
||||
|
||||
// Stop in reverse order
|
||||
println('\n⏹️ Stopping SAL Runner...')
|
||||
mut sal_runner := salrunner.get()!
|
||||
sal_runner.stop()!
|
||||
println('✅ SAL Runner stopped')
|
||||
|
||||
println('\n⏹️ Stopping Osiris Runner...')
|
||||
mut osiris_runner := osirisrunner.get()!
|
||||
osiris_runner.stop()!
|
||||
println('✅ Osiris Runner stopped')
|
||||
|
||||
println('\n⏹️ Stopping Hero Runner...')
|
||||
mut hero_runner := herorunner.get()!
|
||||
hero_runner.stop()!
|
||||
println('✅ Hero Runner stopped')
|
||||
|
||||
println('\n⏹️ Stopping Supervisor...')
|
||||
mut supervisor_inst := supervisor.get()!
|
||||
supervisor_inst.stop()!
|
||||
println('✅ Supervisor stopped')
|
||||
|
||||
println('\n⏹️ Stopping Coordinator...')
|
||||
mut coordinator := herocoordinator.get()!
|
||||
coordinator.stop()!
|
||||
println('✅ Coordinator stopped')
|
||||
|
||||
println('\n' + '=' * 60)
|
||||
println('✅ All Horus services stopped!')
|
||||
println('=' * 60)
|
||||
52
examples/installers/horus/quick_start.vsh
Executable file
52
examples/installers/horus/quick_start.vsh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
|
||||
|
||||
import incubaid.herolib.installers.horus.coordinator
|
||||
import incubaid.herolib.installers.horus.supervisor
|
||||
|
||||
// Quick Start Example - Install and Start Coordinator and Supervisor
|
||||
// This is a minimal example to get started with Horus
|
||||
|
||||
println('🚀 Horus Quick Start')
|
||||
println('=' * 60)
|
||||
println('This will install and start Coordinator and Supervisor')
|
||||
println('(Runners can be added later using the full install script)')
|
||||
println('=' * 60)
|
||||
|
||||
// Install Coordinator
|
||||
println('\n📦 Installing Coordinator...')
|
||||
mut coordinator := herocoordinator.get(create: true)!
|
||||
coordinator.install()!
|
||||
println('✅ Coordinator installed')
|
||||
|
||||
// Install Supervisor
|
||||
println('\n📦 Installing Supervisor...')
|
||||
mut supervisor_inst := supervisor.get(create: true)!
|
||||
supervisor_inst.install()!
|
||||
println('✅ Supervisor installed')
|
||||
|
||||
// Start services
|
||||
println('\n▶️ Starting Coordinator...')
|
||||
coordinator.start()!
|
||||
if coordinator.running()! {
|
||||
println('✅ Coordinator is running on http://127.0.0.1:${coordinator.http_port}')
|
||||
}
|
||||
|
||||
println('\n▶️ Starting Supervisor...')
|
||||
supervisor_inst.start()!
|
||||
if supervisor_inst.running()! {
|
||||
println('✅ Supervisor is running on http://127.0.0.1:${supervisor_inst.http_port}')
|
||||
}
|
||||
|
||||
println('\n' + '=' * 60)
|
||||
println('🎉 Quick Start Complete!')
|
||||
println('=' * 60)
|
||||
println('\n📊 Services Running:')
|
||||
println(' • Coordinator: http://127.0.0.1:${coordinator.http_port}')
|
||||
println(' • Supervisor: http://127.0.0.1:${supervisor_inst.http_port}')
|
||||
|
||||
println('\n💡 Next Steps:')
|
||||
println(' • Test coordinator: curl http://127.0.0.1:${coordinator.http_port}')
|
||||
println(' • Test supervisor: curl http://127.0.0.1:${supervisor_inst.http_port}')
|
||||
println(' • Install runners: ./horus_full_install.vsh')
|
||||
println(' • Check status: ./horus_status.vsh')
|
||||
println(' • Stop services: ./horus_stop_all.vsh')
|
||||
Reference in New Issue
Block a user