From 95f7bab29edf5396b1727b4a0a5ceb02073ac8a5 Mon Sep 17 00:00:00 2001 From: Harry Huang Date: Mon, 12 Nov 2018 14:39:43 +0800 Subject: Modify manage_db.py JIRA: COMPASS-613 Add add_machine and add_subnet Change-Id: Ibe3be5040a8d34c4415b6c0fe927b486b14495c8 Signed-off-by: Harry Huang --- compass-deck/bin/manage_db.py | 54 ++++++++++++++++++++++++++++++++++++++++++- compass-deck/requirements.txt | 1 + 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/compass-deck/bin/manage_db.py b/compass-deck/bin/manage_db.py index 38bbc43..2b1f035 100755 --- a/compass-deck/bin/manage_db.py +++ b/compass-deck/bin/manage_db.py @@ -23,14 +23,17 @@ import sys current_dir = os.path.dirname(os.path.realpath(__file__)) sys.path.append(current_dir) - import switch_virtualenv +import yaml + from flask_script import Manager from compass.api import app from compass.db.api import database from compass.db.api import switch as switch_api +from compass.db.api import machine as machine_api +from compass.db.api import network as network_api from compass.db.api import user as user_api from compass.utils import flags from compass.utils import logsetting @@ -57,6 +60,13 @@ flags.add('switch_machines_file', 'or switch,,,' ',,'), default='') +flags.add('machine_file', + help=( + 'file for add machine ' + 'contains one or more mac address of a host ' + 'if it is a baremetal machine, ipmi credential is also ' + 'required.'), + default='') flags.add('search_cluster_properties', help='comma separated properties to search in cluster config', default='') @@ -159,6 +169,48 @@ def set_switch_machines(): ) +@app_manager.command +def set_machine(): + if not flags.OPTIONS.machine_file: + print 'flag --machine_file is missing' + return + database.init() + machine_file = flags.OPTIONS.machine_file + user = user_api.get_user_object( + setting.COMPASS_ADMIN_EMAIL + ) + with open(machine_file) as f: + machine_data = yaml.load(f) + for machine in machine_data: + power_manage = {} + power_manage.update( + {"ip": machine.get("power_ip", "")}) + power_manage.update( + {"username": machine.get("power_user", "")}) + power_manage.update( + {"password": machine.get("power_pass", "")}) + machine_api.add_machine(user=user, mac=machine["mac"], + power_type=machine["power_type"], + power_manage=power_manage) + + +@app_manager.command +def add_subnet(): + if not flags.OPTIONS.subnet: + print 'flag --subnet is missing' + return + database.init() + subnet_tuple = flags.OPTIONS.subnet + subnet_name = subnet_tuple[0] + subnet_cidr = subnet_tuple[1] + user = user_api.get_user_object( + setting.COMPASS_ADMIN_EMAIL + ) + network_api.add_subnet( + user=user, name=subnet_name, subnet=subnet_cidr + ) + + if __name__ == "__main__": flags.init() logsetting.init() diff --git a/compass-deck/requirements.txt b/compass-deck/requirements.txt index 3f8c34a..caf96ea 100644 --- a/compass-deck/requirements.txt +++ b/compass-deck/requirements.txt @@ -22,3 +22,4 @@ python-daemon==2.1.1 SQLAlchemy>=0.9.0 simplejson requests +pyyaml -- cgit 1.2.3-korg