feat: add unified decommission and database provisioning modules
This commit is contained in:
parent
171b2a63dd
commit
b0f97f80df
4 changed files with 114 additions and 2 deletions
|
|
@ -6,6 +6,7 @@ from .router import RouterManager
|
|||
from .proxmox import ProxmoxManager
|
||||
from .samba import SambaManager
|
||||
from .cloudflare import CloudflareManager
|
||||
from .database import DatabaseManager
|
||||
import sys
|
||||
|
||||
@click.group()
|
||||
|
|
@ -19,6 +20,47 @@ def cli(ctx, config):
|
|||
click.echo(f"Error: {e}", err=True)
|
||||
sys.exit(1)
|
||||
|
||||
@cli.group()
|
||||
def db():
|
||||
"""Manage PostgreSQL Databases and Users"""
|
||||
pass
|
||||
|
||||
@db.command(name='list-dbs')
|
||||
@click.pass_obj
|
||||
def db_list_dbs(config):
|
||||
mgr = DatabaseManager(config)
|
||||
click.echo(mgr.list_databases())
|
||||
|
||||
@db.command(name='list-users')
|
||||
@click.pass_obj
|
||||
def db_list_users(config):
|
||||
mgr = DatabaseManager(config)
|
||||
click.echo(mgr.list_users())
|
||||
|
||||
@db.command(name='provision')
|
||||
@click.argument('project_name')
|
||||
@click.option('--password', help='Database user password')
|
||||
@click.pass_obj
|
||||
def db_provision(config, project_name, password):
|
||||
"""Create a database and user for a project"""
|
||||
import secrets
|
||||
import string
|
||||
|
||||
db_name = project_name.lower().replace("-", "_")
|
||||
username = f"{db_name}_user"
|
||||
pwd = password or ''.join(secrets.choice(string.ascii_letters + string.digits) for i in range(16))
|
||||
|
||||
mgr = DatabaseManager(config)
|
||||
click.echo(f"Creating user {username}...")
|
||||
mgr.create_user(username, pwd)
|
||||
click.echo(f"Creating database {db_name} owned by {username}...")
|
||||
mgr.create_database(db_name, owner=username)
|
||||
|
||||
click.echo("\nProvisioning Complete:")
|
||||
click.echo(f" DB Name: {db_name}")
|
||||
click.echo(f" Username: {username}")
|
||||
click.echo(f" Password: {pwd}")
|
||||
|
||||
@cli.group()
|
||||
def cloudflare():
|
||||
"""Manage Cloudflare DNS and DDNS"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue