add: node_status, sanity checks
node status added to config as config option sanity checks for rqdir (request directory)
This commit is contained in:
parent
8effff5158
commit
3346786a80
@ -5,6 +5,7 @@ fuelip: 127.0.0.1
|
|||||||
rqdir: ./rq
|
rqdir: ./rq
|
||||||
logdir: ./logs
|
logdir: ./logs
|
||||||
out-dir: ../timmy-ng/info
|
out-dir: ../timmy-ng/info
|
||||||
|
node-status: ['ready']
|
||||||
timeout: 15
|
timeout: 15
|
||||||
find:
|
find:
|
||||||
template: -name '*.log'
|
template: -name '*.log'
|
||||||
|
@ -5,6 +5,7 @@ ssh:
|
|||||||
fuelip: localhost
|
fuelip: localhost
|
||||||
out-dir: /tmp/timmy-gen/info
|
out-dir: /tmp/timmy-gen/info
|
||||||
timeout: 15
|
timeout: 15
|
||||||
|
node-status: ['ready', 'discover']
|
||||||
find:
|
find:
|
||||||
template: -name '*.gz' -o -name '*.log' -o -name '*-[0-9]4'
|
template: -name '*.gz' -o -name '*.log' -o -name '*-[0-9]4'
|
||||||
path: /var/log/
|
path: /var/log/
|
||||||
|
38
nodes.py
38
nodes.py
@ -56,7 +56,7 @@ class Node(object):
|
|||||||
def set_files(self, dirname, key, ds, version):
|
def set_files(self, dirname, key, ds, version):
|
||||||
files = []
|
files = []
|
||||||
for role in self.roles:
|
for role in self.roles:
|
||||||
if role in ds[key]['by-role'].keys():
|
if 'by-role' in ds[key] and role in ds[key]['by-role'].keys():
|
||||||
for f in ds[key]['by-role'][role]:
|
for f in ds[key]['by-role'][role]:
|
||||||
files += [os.path.join(dirname, key, 'by-role', role, f)]
|
files += [os.path.join(dirname, key, 'by-role', role, f)]
|
||||||
if (('release-'+version in ds[key].keys()) and
|
if (('release-'+version in ds[key].keys()) and
|
||||||
@ -64,11 +64,13 @@ class Node(object):
|
|||||||
for f in ds[key]['release-'+version][role]:
|
for f in ds[key]['release-'+version][role]:
|
||||||
files += [os.path.join(dirname, key,
|
files += [os.path.join(dirname, key,
|
||||||
'release-'+version, role, f)]
|
'release-'+version, role, f)]
|
||||||
for f in ds[key]['by-os'][self.os_platform].keys():
|
if 'by-os' in ds[key]:
|
||||||
files += [os.path.join(dirname, key, 'by-os',
|
for f in ds[key]['by-os'][self.os_platform].keys():
|
||||||
self.os_platform, f)]
|
files += [os.path.join(dirname, key, 'by-os',
|
||||||
for f in ds[key]['default']['default'].keys():
|
self.os_platform, f)]
|
||||||
files += [os.path.join(dirname, key, 'default', 'default', f)]
|
if 'default' in ds[key] and 'default' in ds[key]['default']:
|
||||||
|
for f in ds[key]['default']['default'].keys():
|
||||||
|
files += [os.path.join(dirname, key, 'default', 'default', f)]
|
||||||
self.files[key] = sorted(set(files))
|
self.files[key] = sorted(set(files))
|
||||||
logging.debug('set_files:\nkey: %s, node: %s, file_list: %s' %
|
logging.debug('set_files:\nkey: %s, node: %s, file_list: %s' %
|
||||||
(key, self.node_id, self.files[key]))
|
(key, self.node_id, self.files[key]))
|
||||||
@ -92,7 +94,7 @@ class Node(object):
|
|||||||
|
|
||||||
def add_files(self, dirname, key, ds):
|
def add_files(self, dirname, key, ds):
|
||||||
for role in self.roles:
|
for role in self.roles:
|
||||||
if role in ds[key]['once-by-role'].keys():
|
if 'once-by-role' in ds[key] and role in ds[key]['once-by-role'].keys():
|
||||||
for f in ds[key]['once-by-role'][role]:
|
for f in ds[key]['once-by-role'][role]:
|
||||||
self.files[key] += [os.path.join(dirname, key,
|
self.files[key] += [os.path.join(dirname, key,
|
||||||
'once-by-role', role, f)]
|
'once-by-role', role, f)]
|
||||||
@ -320,6 +322,7 @@ class Nodes(object):
|
|||||||
roles = []
|
roles = []
|
||||||
for node in self.nodes.values():
|
for node in self.nodes.values():
|
||||||
node.set_files(self.dirname, key, self.files, self.version)
|
node.set_files(self.dirname, key, self.files, self.version)
|
||||||
|
# once-by-role functionality
|
||||||
if self.extended and key == ckey and node.online:
|
if self.extended and key == ckey and node.online:
|
||||||
for role in node.roles:
|
for role in node.roles:
|
||||||
if role not in roles:
|
if role not in roles:
|
||||||
@ -335,8 +338,9 @@ class Nodes(object):
|
|||||||
key,
|
key,
|
||||||
node.files[key]))
|
node.files[key]))
|
||||||
for key in [fkey, lkey]:
|
for key in [fkey, lkey]:
|
||||||
for node in self.nodes.values():
|
if key in self.files.keys():
|
||||||
node.get_data_from_files(key)
|
for node in self.nodes.values():
|
||||||
|
node.get_data_from_files(key)
|
||||||
for node in self.nodes.values():
|
for node in self.nodes.values():
|
||||||
logging.debug('%s' % node.files[ckey])
|
logging.debug('%s' % node.files[ckey])
|
||||||
|
|
||||||
@ -351,7 +355,7 @@ class Nodes(object):
|
|||||||
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
||||||
node.cluster != 0):
|
node.cluster != 0):
|
||||||
continue
|
continue
|
||||||
if node.status in ['ready', 'discover'] and node.online:
|
if node.status in self.conf['node-status'] and node.online:
|
||||||
t = threading.Thread(target=node.exec_cmd,
|
t = threading.Thread(target=node.exec_cmd,
|
||||||
args=(label,
|
args=(label,
|
||||||
self.sshvars,
|
self.sshvars,
|
||||||
@ -371,7 +375,7 @@ class Nodes(object):
|
|||||||
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
||||||
node.cluster != 0):
|
node.cluster != 0):
|
||||||
continue
|
continue
|
||||||
if node.status in ['ready', 'discover'] and node.online:
|
if node.status in self.conf['node-status'] and node.online:
|
||||||
t = threading.Thread(target=node.du_logs,
|
t = threading.Thread(target=node.du_logs,
|
||||||
args=(label,
|
args=(label,
|
||||||
self.sshopts,
|
self.sshopts,
|
||||||
@ -451,6 +455,9 @@ class Nodes(object):
|
|||||||
logging.warning("Can't compress archive %s" % (errs))
|
logging.warning("Can't compress archive %s" % (errs))
|
||||||
|
|
||||||
def get_conf_files(self, odir=fkey, timeout=15):
|
def get_conf_files(self, odir=fkey, timeout=15):
|
||||||
|
if fkey not in self.files:
|
||||||
|
logging.warning("get_conf_files: %s directory does not exist" %(fkey))
|
||||||
|
return
|
||||||
lock = flock.FLock('/tmp/timmy-files.lock')
|
lock = flock.FLock('/tmp/timmy-files.lock')
|
||||||
if not lock.lock():
|
if not lock.lock():
|
||||||
logging.warning('Unable to obtain lock, skipping "files"-part')
|
logging.warning('Unable to obtain lock, skipping "files"-part')
|
||||||
@ -461,7 +468,7 @@ class Nodes(object):
|
|||||||
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
||||||
node.cluster != 0):
|
node.cluster != 0):
|
||||||
continue
|
continue
|
||||||
if node.status in ['ready', 'discover'] and node.online:
|
if node.status in self.conf['node-status'] and node.online:
|
||||||
t = threading.Thread(target=node.get_files,
|
t = threading.Thread(target=node.get_files,
|
||||||
args=(label,
|
args=(label,
|
||||||
self.logdir,
|
self.logdir,
|
||||||
@ -474,18 +481,21 @@ class Nodes(object):
|
|||||||
t.join()
|
t.join()
|
||||||
lock.unlock()
|
lock.unlock()
|
||||||
|
|
||||||
def get_log_files(self, odir='logfiles', timeout=15):
|
def get_log_files(self, odir=lkey, timeout=15):
|
||||||
# lock = flock.FLock('/tmp/timmy-logs.lock')
|
# lock = flock.FLock('/tmp/timmy-logs.lock')
|
||||||
# if not lock.lock():
|
# if not lock.lock():
|
||||||
# logging.warning('Unable to obtain lock, skipping "logs"-part')
|
# logging.warning('Unable to obtain lock, skipping "logs"-part')
|
||||||
# return ''
|
# return ''
|
||||||
|
if lkey not in self.files:
|
||||||
|
logging.warning("get_log_files: %s directory does not exist" %(lkey))
|
||||||
|
return
|
||||||
label = lkey
|
label = lkey
|
||||||
threads = []
|
threads = []
|
||||||
for node in self.nodes.values():
|
for node in self.nodes.values():
|
||||||
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
if (self.cluster and str(self.cluster) != str(node.cluster) and
|
||||||
node.cluster != 0):
|
node.cluster != 0):
|
||||||
continue
|
continue
|
||||||
if (node.status in ['ready', 'discover'] and
|
if (node.status in self.conf['node-status'] and
|
||||||
node.online and str(node.node_id) != '0'):
|
node.online and str(node.node_id) != '0'):
|
||||||
t = threading.Thread(target=node.get_files,
|
t = threading.Thread(target=node.get_files,
|
||||||
args=(label,
|
args=(label,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user