feat: complete data path migration to system location
✅ Complete Data Path Migration - Updated CLI commands to use /var/lib/aitbc/data - Updated production config to use /var/lib/aitbc/data - Updated systemd services to use /var/lib/aitbc/data - Removed all hardcoded /opt/aitbc/data references - Removed all hardcoded /opt/aitbc/production/data references ✅ System Compliance - All data paths now point to /var/lib/aitbc/data - No repository data paths remaining - FHS compliant data storage - Production-ready data architecture ✅ Git Repository Clean - No dynamic data in repository - All data paths updated to system location - .gitignore prevents future tracking - Clean git history 🚀 AITBC data architecture is now fully compliant with system standards!
This commit is contained in:
@@ -21,8 +21,8 @@ def genesis():
|
|||||||
|
|
||||||
@genesis.command()
|
@genesis.command()
|
||||||
@click.option('--address', required=True, help='Wallet address (id) to create')
|
@click.option('--address', required=True, help='Wallet address (id) to create')
|
||||||
@click.option('--password-file', default='/opt/aitbc/data/keystore/.password', show_default=True, type=click.Path(exists=True, dir_okay=False), help='Path to password file')
|
@click.option('--password-file', default='/var/lib/aitbc/data/keystore/.password', show_default=True, type=click.Path(exists=True, dir_okay=False), help='Path to password file')
|
||||||
@click.option('--output-dir', default='/opt/aitbc/data/keystore', show_default=True, help='Directory to write keystore file')
|
@click.option('--output-dir', default='/var/lib/aitbc/data/keystore', show_default=True, help='Directory to write keystore file')
|
||||||
@click.option('--force', is_flag=True, help='Overwrite existing keystore file if present')
|
@click.option('--force', is_flag=True, help='Overwrite existing keystore file if present')
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def create_keystore(ctx, address, password_file, output_dir, force):
|
def create_keystore(ctx, address, password_file, output_dir, force):
|
||||||
@@ -38,7 +38,7 @@ def create_keystore(ctx, address, password_file, output_dir, force):
|
|||||||
@genesis.command(name="init-production")
|
@genesis.command(name="init-production")
|
||||||
@click.option('--chain-id', default='ait-mainnet', show_default=True, help='Chain ID to initialize')
|
@click.option('--chain-id', default='ait-mainnet', show_default=True, help='Chain ID to initialize')
|
||||||
@click.option('--genesis-file', default='data/genesis_prod.yaml', show_default=True, help='Path to genesis YAML (copy to /opt/aitbc/genesis_prod.yaml if needed)')
|
@click.option('--genesis-file', default='data/genesis_prod.yaml', show_default=True, help='Path to genesis YAML (copy to /opt/aitbc/genesis_prod.yaml if needed)')
|
||||||
@click.option('--db', default='/opt/aitbc/data/ait-mainnet/chain.db', show_default=True, help='SQLite DB path')
|
@click.option('--db', default='/var/lib/aitbc/data/ait-mainnet/chain.db', show_default=True, help='SQLite DB path')
|
||||||
@click.option('--force', is_flag=True, help='Overwrite existing DB (removes file if present)')
|
@click.option('--force', is_flag=True, help='Overwrite existing DB (removes file if present)')
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def init_production(ctx, chain_id, genesis_file, db, force):
|
def init_production(ctx, chain_id, genesis_file, db, force):
|
||||||
@@ -355,7 +355,7 @@ def template_info(ctx, template_name, output):
|
|||||||
@click.pass_context
|
@click.pass_context
|
||||||
def init_production(ctx, chain_id, genesis_file, force):
|
def init_production(ctx, chain_id, genesis_file, force):
|
||||||
"""Initialize production chain DB using genesis allocations."""
|
"""Initialize production chain DB using genesis allocations."""
|
||||||
db_path = Path("/opt/aitbc/data") / chain_id / "chain.db"
|
db_path = Path("/var/lib/aitbc/data") / chain_id / "chain.db"
|
||||||
if db_path.exists() and force:
|
if db_path.exists() and force:
|
||||||
db_path.unlink()
|
db_path.unlink()
|
||||||
python_bin = Path(__file__).resolve().parents[3] / 'apps' / 'blockchain-node' / '.venv' / 'bin' / 'python3'
|
python_bin = Path(__file__).resolve().parents[3] / 'apps' / 'blockchain-node' / '.venv' / 'bin' / 'python3'
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ def create(ctx, address: str, password_file: str, output: str, force: bool):
|
|||||||
pwd_path = Path(password_file)
|
pwd_path = Path(password_file)
|
||||||
with open(pwd_path, "r", encoding="utf-8") as f:
|
with open(pwd_path, "r", encoding="utf-8") as f:
|
||||||
password = f.read().strip()
|
password = f.read().strip()
|
||||||
out_dir = Path(output) if output else Path("/opt/aitbc/data/keystore")
|
out_dir = Path(output) if output else Path("/var/lib/aitbc/data/keystore")
|
||||||
out_dir.mkdir(parents=True, exist_ok=True)
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
ks_module = _load_keystore_script()
|
ks_module = _load_keystore_script()
|
||||||
@@ -59,7 +59,7 @@ def create(ctx, address: str, password_file: str, output: str, force: bool):
|
|||||||
|
|
||||||
|
|
||||||
# Helper so other commands (genesis) can reuse the same logic
|
# Helper so other commands (genesis) can reuse the same logic
|
||||||
def create_keystore_via_script(address: str, password_file: str = "/opt/aitbc/data/keystore/.password", output_dir: str = "/opt/aitbc/data/keystore", force: bool = False):
|
def create_keystore_via_script(address: str, password_file: str = "/var/lib/aitbc/data/keystore/.password", output_dir: str = "/var/lib/aitbc/data/keystore", force: bool = False):
|
||||||
pwd = Path(password_file).read_text(encoding="utf-8").strip()
|
pwd = Path(password_file).read_text(encoding="utf-8").strip()
|
||||||
out_dir = Path(output_dir)
|
out_dir = Path(output_dir)
|
||||||
out_dir.mkdir(parents=True, exist_ok=True)
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|||||||
@@ -17,14 +17,14 @@ BLOCKCHAIN_CONFIG = {
|
|||||||
'port': 8545,
|
'port': 8545,
|
||||||
'rpc_port': 8545,
|
'rpc_port': 8545,
|
||||||
'p2p_port': 30303,
|
'p2p_port': 30303,
|
||||||
'data_dir': '/opt/aitbc/production/data/blockchain/aitbc'
|
'data_dir': '/var/lib/aitbc/data/blockchain/aitbc'
|
||||||
},
|
},
|
||||||
'aitbc1': {
|
'aitbc1': {
|
||||||
'host': 'aitbc1',
|
'host': 'aitbc1',
|
||||||
'port': 8545,
|
'port': 8545,
|
||||||
'rpc_port': 8545,
|
'rpc_port': 8545,
|
||||||
'p2p_port': 30303,
|
'p2p_port': 30303,
|
||||||
'data_dir': '/opt/aitbc/production/data/blockchain/aitbc1'
|
'data_dir': '/var/lib/aitbc/data/blockchain/aitbc1'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'security': {
|
'security': {
|
||||||
|
|||||||
Reference in New Issue
Block a user