summaryrefslogtreecommitdiffstats
path: root/compass-deck/bin/manage_db.py
diff options
context:
space:
mode:
authorHarry Huang <huangxiangyu5@huawei.com>2018-11-12 14:39:43 +0800
committerHarry Huang <huangxiangyu5@huawei.com>2018-11-12 14:39:43 +0800
commit95f7bab29edf5396b1727b4a0a5ceb02073ac8a5 (patch)
tree91a8b2e383a431df67110cc34afecaa6ad351b72 /compass-deck/bin/manage_db.py
parent7d85ab67f8f50f74b3cf3d037b09974b1b7bd428 (diff)
Modify manage_db.py
JIRA: COMPASS-613 Add add_machine and add_subnet Change-Id: Ibe3be5040a8d34c4415b6c0fe927b486b14495c8 Signed-off-by: Harry Huang <huangxiangyu5@huawei.com>
Diffstat (limited to 'compass-deck/bin/manage_db.py')
-rwxr-xr-xcompass-deck/bin/manage_db.py54
1 files changed, 53 insertions, 1 deletions
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,<switch_ip>,<switch_vendor>,'
'<switch_version>,<switch_community>,<switch_state>'),
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()