From c7a3ba8795e3a3fcf22bd5b49697aa930b9bd2ed Mon Sep 17 00:00:00 2001 From: adobdin Date: Wed, 10 Feb 2016 14:04:37 +0000 Subject: [PATCH] some parameters are reviewed\nadded: cli --- timmy.py | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100755 timmy.py diff --git a/timmy.py b/timmy.py new file mode 100755 index 0000000..d24f7c4 --- /dev/null +++ b/timmy.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- + +# Copyright 2015 Mirantis, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import argparse +import nodes +import logging +import sys +import loadconf +import flock + +def main(argv=None): + if argv is None: + argv = sys.argv + + parser = argparse.ArgumentParser(description='need to add description') + parser.add_argument('--config', default='config.yaml', + help='Config file') + parser.add_argument('-o', '--dest-file', default='/tmp/', + help='output archive file') + # The following parameter has not been implemented yet. + parser.add_argument('-f', '--nodes', + help='nodes file', default='nodes.json') + parser.add_argument('-e', '--extended', default="0", + help='exec once by role cmdfiles') + parser.add_argument('-c', '--cluster', help='cluster id') + parser.add_argument('-l', '--logs', + help='Collect logs from fuel-node', + action="store_const", dest='getlogs', + const=True, default=False) + parser.add_argument('--only-logs', + action="store_const", dest="only_logs", + const=True, default=False, + help='Collect only logs from fuel-node') + parser.add_argument('-d', '--debug', + help="Print lots of debugging statements", + action="store_const", dest="loglevel", + const=logging.DEBUG, + default=logging.WARNING,) + parser.add_argument('-v', '--verbose', + help="Be verbose", + action="store_const", dest="loglevel", + const=logging.INFO,) + + args = parser.parse_args(argv[1:]) + logging.basicConfig(level=args.loglevel, + format='%(asctime)s %(levelname)s %(message)s') + args.extended = args.extended == "1" + conf = loadconf.load_conf(args.config) + n = nodes.Nodes(conf=conf, + extended=args.extended, + cluster=args.cluster, + destdir=args.dest_file) + # nodes.print_nodes() + if not args.only_logs: + n.get_node_file_list() + n.launch_ssh(conf['out-dir']) + n.get_conf_files(conf['out-dir']) + n.create_archive_general(conf['out-dir'], '/tmp/timmy-gen.tar.bz2', 60) + if args.only_logs or args.getlogs: + lock = flock.FLock('/tmp/timmy-logs.lock') + if not lock.lock(): + logging.warning('Unable to obtain lock, skipping "logs"-part') + return 1 + n.get_node_file_list() + n.calculate_log_size(conf['find']['template']) + if n.is_enough_space(): + n.get_log_files(conf['out-dir']) + n.create_archive_logs(conf['find']['template'], + conf['logs-archive'], + conf['compress-timeout']) + n.add_logs_archive(conf['out-dir'], nodes.lkey, + conf['logs-archive'], 120) + n.compress_archive(conf['logs-archive'], conf['compress-timeout']) + + n.print_nodes() + return 0 + +if __name__ == '__main__': + exit(main(sys.argv))