added: fuelclient library by default
version bump fix: get_release function
This commit is contained in:
parent
e3d5bef013
commit
2f26e98d8a
@ -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',
|
||||
|
@ -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'
|
||||
|
@ -1,5 +1,5 @@
|
||||
project_name = 'timmy'
|
||||
version = '1.5.1'
|
||||
version = '1.6.0'
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(0)
|
||||
|
@ -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:
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user