added: fuelclient library by default

version bump
fix: get_release function
This commit is contained in:
adobdin 2016-06-14 14:04:48 +00:00
parent e3d5bef013
commit 2f26e98d8a
5 changed files with 50 additions and 11 deletions

View File

@ -135,6 +135,9 @@ def parse_args():
'selected if more -v are provided it will '
'step to INFO and DEBUG unless the option '
'-q(--quiet) is specified'))
parser.add_argument('--fuel-cli', action='store_true',
help=('Use fuel command line client instead of '
'fuelclient library'))
return parser
@ -201,6 +204,8 @@ def main(argv=None):
if args.dest_file:
conf['archive_dir'] = os.path.split(args.dest_file)[0]
conf['archive_name'] = os.path.split(args.dest_file)[1]
if args.fuel_cli:
conf['fuelclient'] = False
logger.info('Using rqdir: %s, rqfile: %s' %
(conf['rqdir'], conf['rqfile']))
nm = pretty_run(args.quiet, 'Initializing node data',

View File

@ -15,6 +15,8 @@ def load_conf(filename):
conf['fuel_ip'] = '127.0.0.1'
conf['fuel_user'] = 'admin'
conf['fuel_pass'] = 'admin'
conf['fuel_tenant'] = 'admin'
conf['fuelclient'] = True # use fuelclient library by default
conf['timeout'] = 15
conf['prefix'] = 'nice -n 19 ionice -c 3'
rqdir = 'rq'

View File

@ -1,5 +1,5 @@
project_name = 'timmy'
version = '1.5.1'
version = '1.6.0'
if __name__ == '__main__':
exit(0)

View File

@ -29,6 +29,12 @@ from datetime import datetime
import tools
from tools import w_list, run_with_lock
from copy import deepcopy
try:
from fuelclient.client import Client
from fuelclient.client import logger
logger.handlers = []
except:
Client = None
class Node(object):
@ -167,10 +173,10 @@ class Node(object):
self.logger.warning('node: %s: could not determine'
' MOS release' % self.id)
else:
self.release = release.strip('\n "\'')
release = release.strip('\n "\'')
self.logger.info('node: %s, MOS release: %s' %
(self.id, self.release))
return self.release
(self.id, release))
return release
def exec_cmd(self, fake=False, ok_codes=None):
sn = 'node-%s' % self.id
@ -391,7 +397,13 @@ class NodeManager(object):
if nodes_json:
self.nodes_json = tools.load_json_file(nodes_json)
else:
self.nodes_json = json.loads(self.get_nodes_json())
if Client and conf['fuelclient']:
if ((not self.get_nodes_fuelclient()) and
(not self.get_nodes_cli())):
sys.exit(4)
else:
if not self.get_nodes_cli():
sys.exit(4)
self.nodes_init()
# apply soft-filter on all nodes
for node in self.nodes.values():
@ -505,7 +517,25 @@ class NodeManager(object):
fuelnode.filtered_out = True
self.nodes[self.conf['fuel_ip']] = fuelnode
def get_nodes_json(self):
def get_nodes_fuelclient(self):
try:
self.logger.info('Setup fuelclient instance')
c = Client()
c.username = self.conf['fuel_user']
c.password = self.conf['fuel_pass']
c.tenant_name = self.conf['fuel_tenant']
# c.debug_mode(True)
self.nodes_json = c.get_request('nodes')
self.logger.debug(self.nodes_json)
return True
except Exception as e:
self.logger.warning(("NodeManager: can't "
"get node list from fuel client:\n%s" % (e)),
exc_info=True)
return False
def get_nodes_cli(self):
self.logger.info('use CLI for getting node information')
fuelnode = self.nodes[self.conf['fuel_ip']]
fuel_node_cmd = ('fuel node list --json --user %s --password %s' %
(self.conf['fuel_user'],
@ -516,10 +546,12 @@ class NodeManager(object):
timeout=fuelnode.timeout,
prefix=fuelnode.prefix)
if code != 0:
self.logger.critical(('NodeManager: cannot get '
'fuel node list: %s') % err)
sys.exit(4)
return nodes_json
self.logger.warning(('NodeManager: cannot get '
'fuel node list from CLI: %s') % err)
self.nodes_json = None
return False
self.nodes_json = json.loads(nodes_json)
return True
def nodes_init(self):
for node_data in self.nodes_json:

View File

@ -31,7 +31,6 @@ from flock import FLock
from tempfile import gettempdir
from pipes import quote
logger = logging.getLogger(__name__)
slowpipe = '''
import sys
@ -343,5 +342,6 @@ def free_space(destdir, timeout):
def w_list(value):
return value if type(value) == list else [value]
if __name__ == '__main__':
exit(0)