Seperate out subcommands and utils; root logger setup begins in __init__ of iottb module
This commit is contained in:
0
iottb/commands/__init__.py
Normal file
0
iottb/commands/__init__.py
Normal file
44
iottb/commands/initialize_testbed.py
Normal file
44
iottb/commands/initialize_testbed.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import click
|
||||
from pathlib import Path
|
||||
import logging
|
||||
from logging.handlers import RotatingFileHandler
|
||||
import sys
|
||||
from iottb.contexts import IottbConfig
|
||||
from iottb.definitions import DB_NAME
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@click.command()
|
||||
@click.option('-d', '--dest', type=Path, help='Location to put (new) iottb database')
|
||||
@click.option('--name', default=DB_NAME, type=str, help='Name of new database.')
|
||||
@click.option('--update-default/--no-update-default', default=True, help='If new db should be set as the new default')
|
||||
@click.pass_context
|
||||
def init_db(ctx, dest, name, update_default):
|
||||
logger.info('init-db invoked')
|
||||
config = ctx.obj['CONFIG']
|
||||
logger.debug(f'str(config)')
|
||||
# Use the default path from config if dest is not provided
|
||||
known_dbs = config.get_known_databases()
|
||||
if name in known_dbs:
|
||||
click.echo(f'A database {name} already exists.')
|
||||
logger.info(f'Exiting...')
|
||||
exit()
|
||||
if not dest:
|
||||
logger.info('No dest set, choosing default destination.')
|
||||
dest = Path(config.default_path).parent
|
||||
|
||||
db_path = dest / name
|
||||
logger.debug(f'Full path for db {db_path}')
|
||||
# Create the directory if it doesn't exist
|
||||
db_path.mkdir(parents=True, exist_ok=True)
|
||||
logger.info(f"Created directory {db_path.parent} for the database")
|
||||
|
||||
# Update configuration
|
||||
config.set_database_location(name, str(db_path))
|
||||
if update_default:
|
||||
config.set_default_database(name, str(db_path))
|
||||
config.save_config()
|
||||
logger.info(f"Updated configuration with database {name} at {db_path}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user