feat: add sync command to CLI main interface
Some checks failed
AITBC CI/CD Pipeline / lint-and-test (3.11) (push) Has been cancelled
AITBC CI/CD Pipeline / lint-and-test (3.12) (push) Has been cancelled
AITBC CI/CD Pipeline / lint-and-test (3.13) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.11) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.12) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.13) (push) Has been cancelled
Security Scanning / Bandit Security Scan (apps/coordinator-api/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (cli/aitbc_cli) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-core/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-crypto/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-sdk/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (tests) (push) Has been cancelled
Security Scanning / CodeQL Security Analysis (javascript) (push) Has been cancelled
Security Scanning / CodeQL Security Analysis (python) (push) Has been cancelled
Security Scanning / Dependency Security Scan (push) Has been cancelled
Security Scanning / Container Security Scan (push) Has been cancelled
Security Scanning / OSSF Scorecard (push) Has been cancelled
AITBC CI/CD Pipeline / test-cli (push) Has been cancelled
AITBC CI/CD Pipeline / test-services (push) Has been cancelled
AITBC CI/CD Pipeline / test-production-services (push) Has been cancelled
AITBC CI/CD Pipeline / security-scan (push) Has been cancelled
AITBC CI/CD Pipeline / build (push) Has been cancelled
AITBC CI/CD Pipeline / deploy-staging (push) Has been cancelled
AITBC CI/CD Pipeline / deploy-production (push) Has been cancelled
AITBC CI/CD Pipeline / performance-test (push) Has been cancelled
AITBC CI/CD Pipeline / docs (push) Has been cancelled
AITBC CI/CD Pipeline / release (push) Has been cancelled
AITBC CI/CD Pipeline / notify (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-summary (push) Has been cancelled
Security Scanning / Security Summary Report (push) Has been cancelled
Some checks failed
AITBC CI/CD Pipeline / lint-and-test (3.11) (push) Has been cancelled
AITBC CI/CD Pipeline / lint-and-test (3.12) (push) Has been cancelled
AITBC CI/CD Pipeline / lint-and-test (3.13) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.11) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.12) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.13) (push) Has been cancelled
Security Scanning / Bandit Security Scan (apps/coordinator-api/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (cli/aitbc_cli) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-core/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-crypto/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-sdk/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (tests) (push) Has been cancelled
Security Scanning / CodeQL Security Analysis (javascript) (push) Has been cancelled
Security Scanning / CodeQL Security Analysis (python) (push) Has been cancelled
Security Scanning / Dependency Security Scan (push) Has been cancelled
Security Scanning / Container Security Scan (push) Has been cancelled
Security Scanning / OSSF Scorecard (push) Has been cancelled
AITBC CI/CD Pipeline / test-cli (push) Has been cancelled
AITBC CI/CD Pipeline / test-services (push) Has been cancelled
AITBC CI/CD Pipeline / test-production-services (push) Has been cancelled
AITBC CI/CD Pipeline / security-scan (push) Has been cancelled
AITBC CI/CD Pipeline / build (push) Has been cancelled
AITBC CI/CD Pipeline / deploy-staging (push) Has been cancelled
AITBC CI/CD Pipeline / deploy-production (push) Has been cancelled
AITBC CI/CD Pipeline / performance-test (push) Has been cancelled
AITBC CI/CD Pipeline / docs (push) Has been cancelled
AITBC CI/CD Pipeline / release (push) Has been cancelled
AITBC CI/CD Pipeline / notify (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-summary (push) Has been cancelled
Security Scanning / Security Summary Report (push) Has been cancelled
- Import sync command from commands.sync module - Register sync command with CLI application
This commit is contained in:
58
cli/aitbc_cli/commands/sync.py
Normal file
58
cli/aitbc_cli/commands/sync.py
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
"""Sync management commands for AITBC."""
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import click
|
||||||
|
|
||||||
|
from ..utils import success, error, run_subprocess
|
||||||
|
|
||||||
|
|
||||||
|
@click.group()
|
||||||
|
def sync():
|
||||||
|
"""Blockchain synchronization utilities."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@sync.command()
|
||||||
|
@click.option('--source', default='http://10.1.223.40:8006', help='Source RPC URL (leader)')
|
||||||
|
@click.option('--import-url', default='http://127.0.0.1:8006', help='Local RPC URL for import')
|
||||||
|
@click.option('--batch-size', type=int, default=100, help='Blocks per batch')
|
||||||
|
@click.option('--poll-interval', type=float, default=0.2, help='Seconds between batches')
|
||||||
|
def bulk(source, import_url, batch_size, poll_interval):
|
||||||
|
"""Bulk import blocks from a leader to catch up quickly."""
|
||||||
|
try:
|
||||||
|
# Resolve paths
|
||||||
|
blockchain_dir = Path(__file__).resolve().parents[3] / 'apps' / 'blockchain-node'
|
||||||
|
src_dir = blockchain_dir / 'src'
|
||||||
|
venv_python = blockchain_dir / '.venv' / 'bin' / 'python3'
|
||||||
|
sync_cli = src_dir / 'aitbc_chain' / 'sync_cli.py'
|
||||||
|
|
||||||
|
if not sync_cli.exists():
|
||||||
|
error("sync_cli.py not found. Ensure bulk sync feature is deployed.")
|
||||||
|
raise click.Abort()
|
||||||
|
|
||||||
|
cmd = [
|
||||||
|
str(venv_python),
|
||||||
|
str(sync_cli),
|
||||||
|
'--source', source,
|
||||||
|
'--import-url', import_url,
|
||||||
|
'--batch-size', str(batch_size),
|
||||||
|
'--poll-interval', str(poll_interval),
|
||||||
|
]
|
||||||
|
|
||||||
|
# Prepare environment
|
||||||
|
env = {
|
||||||
|
'PYTHONPATH': str(src_dir),
|
||||||
|
}
|
||||||
|
|
||||||
|
success(f"Running bulk sync from {source} to {import_url} (batch size: {batch_size})")
|
||||||
|
result = run_subprocess(cmd, env=env, capture_output=False)
|
||||||
|
if result.returncode != 0:
|
||||||
|
error("Bulk sync failed. Check logs for details.")
|
||||||
|
raise click.Abort()
|
||||||
|
success("Bulk sync completed.")
|
||||||
|
except Exception as e:
|
||||||
|
error(f"Error during bulk sync: {e}")
|
||||||
|
raise click.Abort()
|
||||||
@@ -68,6 +68,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
enterprise_integration_group = None
|
enterprise_integration_group = None
|
||||||
|
|
||||||
|
from .commands.sync import sync
|
||||||
from .commands.explorer import explorer
|
from .commands.explorer import explorer
|
||||||
from .plugins import plugin, load_plugins
|
from .plugins import plugin, load_plugins
|
||||||
|
|
||||||
@@ -270,6 +271,7 @@ cli.add_command(advanced_analytics_group)
|
|||||||
cli.add_command(ai_surveillance_group)
|
cli.add_command(ai_surveillance_group)
|
||||||
if enterprise_integration_group is not None:
|
if enterprise_integration_group is not None:
|
||||||
cli.add_command(enterprise_integration_group)
|
cli.add_command(enterprise_integration_group)
|
||||||
|
cli.add_command(sync)
|
||||||
cli.add_command(explorer)
|
cli.add_command(explorer)
|
||||||
cli.add_command(plugin)
|
cli.add_command(plugin)
|
||||||
load_plugins(cli)
|
load_plugins(cli)
|
||||||
|
|||||||
Reference in New Issue
Block a user