2021-09-13 19:27:32 +02:00
|
|
|
import psycopg2
|
|
|
|
import psycopg2.extras
|
|
|
|
from loguru import logger
|
|
|
|
import os
|
|
|
|
import configparser
|
|
|
|
import json
|
|
|
|
import argparse
|
|
|
|
import importlib
|
2021-09-14 10:33:08 +02:00
|
|
|
import sys
|
2021-09-13 19:27:32 +02:00
|
|
|
|
|
|
|
DB_USER = ""
|
|
|
|
DB_PASS = ""
|
|
|
|
DB_HOST = ""
|
|
|
|
DB_NAME = ""
|
|
|
|
try:
|
|
|
|
DB_USER = os.environ["DB_USER"]
|
|
|
|
DB_PASS = os.environ["DB_PASS"]
|
|
|
|
DB_HOST = os.environ["DB_HOST"]
|
|
|
|
DB_NAME = os.environ["DB_NAME"]
|
|
|
|
except KeyError:
|
|
|
|
config = configparser.ConfigParser()
|
|
|
|
config.read('./config/dbconfig.ini')
|
|
|
|
DB_USER = config["database"]["user"]
|
|
|
|
DB_PASS = config["database"]["pass"]
|
|
|
|
DB_HOST = config["database"]["host"]
|
|
|
|
DB_NAME = config["database"]["name"]
|
|
|
|
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(description="hv2cli.py")
|
|
|
|
parser.add_argument('--operation', '-o',
|
|
|
|
help='Operation to perform.',
|
|
|
|
required=True)
|
|
|
|
parser.add_argument('--params', '-p',
|
|
|
|
help='JSON string with parameter for the selected operation, default: {}',
|
|
|
|
required=False,
|
|
|
|
default="{}")
|
2021-09-14 10:33:08 +02:00
|
|
|
parser.add_argument('--verbosity', '-v',
|
|
|
|
help='Minimal log level for output: DEBUG, INFO, WARNING, ..., default: DEBUG',
|
|
|
|
required=False,
|
|
|
|
default="DEBUG")
|
2021-09-13 19:27:32 +02:00
|
|
|
args = parser.parse_args()
|
|
|
|
operation = args.operation
|
|
|
|
params = json.loads(args.params)
|
2021-09-14 10:33:08 +02:00
|
|
|
logLevel = args.verbosity
|
|
|
|
|
2021-09-13 19:27:32 +02:00
|
|
|
|
2021-09-14 10:33:08 +02:00
|
|
|
logger.remove()
|
|
|
|
logger.add(sys.stderr, colorize=True, level=logLevel)
|
2021-09-13 19:27:32 +02:00
|
|
|
|
|
|
|
|
2021-09-13 19:28:18 +02:00
|
|
|
dbh = None
|
2021-09-13 19:27:32 +02:00
|
|
|
try:
|
|
|
|
opMod = importlib.import_module(operation)
|
|
|
|
|
|
|
|
dbh = psycopg2.connect(user = DB_USER, password = DB_PASS,
|
|
|
|
host = DB_HOST, database = DB_NAME,
|
|
|
|
sslmode = 'require')
|
|
|
|
dbh.autocommit = False
|
|
|
|
|
|
|
|
with dbh:
|
|
|
|
opMod.perform(dbh, params)
|
|
|
|
except psycopg2.Error as err:
|
|
|
|
raise Exception("Error when working on the database: {}".format(err))
|
|
|
|
except Exception as err:
|
|
|
|
raise err
|
|
|
|
finally:
|
|
|
|
if dbh:
|
|
|
|
dbh.close()
|
|
|
|
|
|
|
|
|