def node(dest): gen = genders.Genders(filename=dest) for node_name in gen.getnodes(): node_name_query = ("SELECT node_name FROM NODE WHERE node_name=%s") cursor.execute(node_name_query, (node_name,)) result = cursor.fetchall() if len(result) == 0: node_num, cluster = parseName(node_name) add_node = ("INSERT IGNORE INTO NODE (node_name, node_num, cluster) VALUES (%s, %s, %s)") cursor.execute(add_node, (node_name, node_num, cluster)) mydb.commit()
def gender(dest): gen = genders.Genders(filename=dest) for attr in gen.getattr_all(): gender_query = ("SELECT gender_name from GENDER where gender_name=%s") cursor.execute(gender_query, (attr,)) result = cursor.fetchall() if len(result) == 0: descrip = None add_gender = ("INSERT IGNORE INTO GENDER (gender_name, descrip) VALUES (%s, %s)") cursor.execute(add_gender, (attr, descrip)) mydb.commit()
def parsedefault(inp): gen = genders.Genders("/etc/genders") if len(inp) == 1: node = gen.getnodename() attr = inp[0] elif len(inp) == 2: node = inp[0] attr = inp[1] else: parser.error("Too many arguments.") return node, attr
def deleteattrs(dest, present, absent): gen = genders.Genders(filename=dest) node_query = ("SELECT gender_name FROM GENDER") cursor.execute(node_query) for (gender_name,) in cursor: if gen.isattr(gender_name) == 1: if not gender_name in present: present.append(gender_name) if gender_name in absent: absent.remove(gender_name) elif (not gender_name in present) and (not gender_name in absent): absent.append(gender_name)
def deletenodes(dest, present, absent): gen = genders.Genders(filename=dest) node_query = ("SELECT node_name FROM NODE") cursor.execute(node_query) for (node_name,) in cursor: if gen.isnode(node_name) == 1: if not node_name in present: present.append(node_name) if node_name in absent: absent.remove(node_name) elif (not node_name in present) and (not node_name in absent): absent.append(node_name)
def deleteattrs(dest, present, absent, mydb): cursor = mydb.cursor() gen = genders.Genders(filename=dest) node_query = "SELECT gender_name FROM GENDER" cursor.execute(node_query) for (gender_name,) in cursor: if gen.isattr(gender_name) == 1: if gender_name not in present: present.append(gender_name) if gender_name in absent: absent.remove(gender_name) elif (gender_name not in present) and (gender_name not in absent): absent.append(gender_name) cursor.close()
def deleteconfig(dest): gen = genders.Genders(filename=dest) for node in gen.getnodes(): query = ("SELECT gender_name, val FROM CONFIGURATION WHERE node_name=%s") cursor.execute(query, (node,)) results = cursor.fetchall() for (gender_name, val) in results: if (val == None) and gen.testattr(gender_name, node) == 0: query = ("DELETE FROM CONFIGURATION WHERE config_id=%s") cursor.execute(query, (node + gender_name,)) mydb.commit() elif not (val == None) and gen.testattrval(gender_name, val, node) == 0: if gen.testattr(gender_name, node) == 0: query = ("DELETE FROM CONFIGURATION WHERE config_id=%s") cursor.execute(query, (node + gender_name,)) mydb.commit()
def lookup(label): '''Process a genders query to resolve into host list''' if not label.startswith('genders:'): return g = genders.Genders(filename=genders_file) matches = [] for host in g.query(label[8:]): ip = g.getattrval('ip', host) fqdn = g.getattrval('fqdn', host) port = g.getattrval('port', host) if not port: port = '22' if ip: matches.append((host, ip + ':' + port, None)) elif fqdn: matches.append((host, fqdn + ':' + port, None)) else: matches.append((host, host + ':' + port, None)) return iter(matches)
def gender_lookup(cluster, logdir, cmd, *args): '''Lookup attributes/values for cluster hosts in genders database''' if not args: args = cluster g = genders.Genders(filename=genders_file) for host in args: print(host, ': ', end='') if not g.isnode(str(host)): print('not in genders database', end='') else: attr = g.getattr(str(host)) data = [] for a in attr: value = g.getattrval(a, str(host)) if value: data.append('%s=%s' % (a, value)) else: data.append(a) print(','.join(data), end='') print('')
def configuration(dest): gen = genders.Genders(filename=dest) for node in gen.getnodes(): for attribute in gen.getattr(node): config_id = node + attribute value = gen.getattrval(attribute, node) config_query = ("SELECT config_id, val FROM CONFIGURATION WHERE config_id=%s") cursor.execute(config_query, (config_id,)) result = cursor.fetchall() if len(result) == 0: add_config = ("INSERT IGNORE INTO CONFIGURATION (config_id, val, node_name, gender_name) VALUES (%s, %s, %s, %s)") cursor.execute(add_config, (config_id, value, node, attribute)) mydb.commit() else: for (config_id, val) in result: if val == value: break; update_config = ("UPDATE CONFIGURATION SET val=%s WHERE config_id=%s") cursor.execute(update_config, (value, config_id)) mydb.commit()
# Test setting environment variables in python # UPDATE ----------- # ERROR: doesn't work the same as exporting the variables in bash - create a driver script instead + debug import os os.environ['PYTHONPATH'] = '/usr/local/lib64/python3.6/site-packages' os.environ['LD_LIBRARY_PATH'] = '/usr/local/lib' print(os.environ.get('PYTHONPATH')) print(os.environ.get('LD_LIBRARY_PATH')) import genders genders_object = genders.Genders(filename="/etc/genders") print(genders_object.getattr())
#!/usr/bin/python3 import pdb import sys import os os.environ['PYTHONPATH'] = '/usr/local/lib64/python3.6/site-packages' import argparse parser = argparse.ArgumentParser("genders database query") import genders gen = genders.Genders(filename="/etc/genders") import mysql.connector import hostlist config = { 'user': '******', 'password': # EDIT WITH YOUR PASSWORD 'host': 'localhost', 'database': 'gender' } import numpy as np #def parsequery(results): # list = [] # for element in results: # for e in element: # if (e != None): # list.append(e) # return list def printquery(results):
def setUp(self): self.genders = genders.Genders("test-data/genders")
def setUp(self): self.genders = genders.Genders(no_auto=True) self.genders.handle_create()
def setUp(self): self.genders = genders.Genders(no_auto=True)