def main(): cli_opts = [ cfg.StrOpt("config", short="c", default=None, help="Override default values with a config file"), cfg.StrOpt("topology", short="t", default=None, help="Topology files for compute hosts"), cfg.StrOpt("tenants-list", short="l", default=None, help="Existing tenant and user lists for reusing"), cfg.StrOpt("tested-rc", default=None, help="Tested cloud openrc credentials file"), cfg.StrOpt("testing-rc", default=None, help="Testing cloud openrc credentials file"), cfg.StrOpt("tested-passwd", default=None, secret=True, help="Tested cloud password"), cfg.StrOpt("testing-passwd", default=None, secret=True, help="Testing cloud password"), cfg.StrOpt("json", default=None, help='store results in JSON format file'), cfg.BoolOpt("no-env", default=False, help="Do not read env variables"), cfg.BoolOpt("show-config", default=False, help="Show the default configuration") ] CONF.register_cli_opts(cli_opts) CONF.set_default("verbose", True) full_version = __version__ + ', VM image: ' + kb_vm_agent.get_image_name() CONF(sys.argv[1:], project="kloudbuster", version=full_version) if CONF.show_config: print resource_string(__name__, "cfg.scale.yaml") sys.exit(0) logging.setup("kloudbuster") try: kb_config = KBConfig() kb_config.init_with_cli() except TypeError: LOG.error('Error parsing the configuration file') sys.exit(1) # The KloudBuster class is just a wrapper class # levarages tenant and user class for resource creations and deletion kloudbuster = KloudBuster( kb_config.cred_tested, kb_config.cred_testing, kb_config.server_cfg, kb_config.client_cfg, kb_config.topo_cfg, kb_config.tenants_list) if kloudbuster.check_and_upload_images(): kloudbuster.run() if CONF.json: '''Save results in JSON format file.''' LOG.info('Saving results in json file: ' + CONF.json + "...") with open(CONF.json, 'w') as jfp: json.dump(kloudbuster.final_result, jfp, indent=4, sort_keys=True)
def main(): cli_opts = [ cfg.StrOpt("config", short="c", default=None, help="Override default values with a config file", metavar="<config file>"), cfg.BoolOpt("storage", default=False, help="Running KloudBuster to test storage performance"), cfg.BoolOpt("multicast", default=False, help="Running KloudBuster to test multicast performance"), cfg.StrOpt("topology", short="t", default=None, help="Topology file for compute hosts", metavar="<topology file>"), cfg.StrOpt("tenants-list", short="l", default=None, help="Existing tenant and user lists for reusing", metavar="<tenants file>"), cfg.StrOpt("rc", default=None, help="Tested cloud openrc credentials file (same as --tested-rc)", metavar="<rc file>"), cfg.StrOpt("tested-rc", default=None, help="Tested cloud openrc credentials file", metavar="<rc file>"), cfg.StrOpt("testing-rc", default=None, help="Testing cloud openrc credentials file", metavar="<rc file>"), cfg.StrOpt("passwd", default=None, secret=True, help="Tested cloud password (same as --tested-pwd)", metavar="<password>"), cfg.StrOpt("tested-passwd", default=None, secret=True, help="Tested cloud password", metavar="<password>"), cfg.StrOpt("testing-passwd", default=None, secret=True, help="Testing cloud password", metavar="<password>"), cfg.StrOpt("html", default=None, help='store results in HTML file', metavar="<dest html file>"), cfg.StrOpt("label", default=None, help='label for the title in HTML file', metavar="<title>"), cfg.BoolOpt("headless", default=False, help="do not show chart in the browser (default=False, only used if --html)"), cfg.StrOpt("json", default=None, help='store results in JSON format file', metavar="<dest json file>"), cfg.StrOpt("csv", default=None, help='store results in CSV format, multicast only.', metavar="<csv file>"), cfg.BoolOpt("no-env", default=False, help="Do not read env variables"), cfg.BoolOpt("show-config", default=False, help="Show the default configuration"), cfg.StrOpt("charts-from-json", default=None, help='create charts from json results and exit (requires --html)', metavar="<source json file>"), ] CONF.register_cli_opts(cli_opts) CONF.set_default("verbose", True) full_version = __version__ + ', VM image: ' + kb_vm_agent.get_image_name() CONF(sys.argv[1:], project="kloudbuster", version=full_version) logging.setup("kloudbuster") if CONF.rc and not CONF.tested_rc: CONF.tested_rc = CONF.rc if CONF.passwd and not CONF.tested_passwd: CONF.tested_passwd = CONF.passwd if CONF.charts_from_json: if not CONF.html: LOG.error('Destination html filename must be specified using --html.') sys.exit(1) with open(CONF.charts_from_json, 'r') as jfp: json_results = json.load(jfp) generate_charts(json_results, CONF.html, None) sys.exit(0) if CONF.show_config: print resource_string(__name__, "cfg.scale.yaml") sys.exit(0) if CONF.multicast and CONF.storage: LOG.error('--multicast and --storage can not both be chosen.') sys.exit(1) try: kb_config = KBConfig() kb_config.init_with_cli() except TypeError: LOG.error('Error parsing the configuration file') sys.exit(1) # The KloudBuster class is just a wrapper class # levarages tenant and user class for resource creations and deletion kloudbuster = KloudBuster( kb_config.cred_tested, kb_config.cred_testing, kb_config.server_cfg, kb_config.client_cfg, kb_config.topo_cfg, kb_config.tenants_list, storage_mode=CONF.storage, multicast_mode=CONF.multicast) if kloudbuster.check_and_upload_images(): kloudbuster.run() if CONF.json: '''Save results in JSON format file.''' LOG.info('Saving results in json file: ' + CONF.json + "...") with open(CONF.json, 'w') as jfp: json.dump(kloudbuster.final_result, jfp, indent=4, sort_keys=True) if CONF.multicast and CONF.csv and 'kb_result' in kloudbuster.final_result: '''Save results in JSON format file.''' if len(kloudbuster.final_result['kb_result']) > 0: LOG.info('Saving results in csv file: ' + CONF.csv + "...") with open(CONF.csv, 'w') as jfp: jfp.write(KBRunner_Multicast.json_to_csv(kloudbuster.final_result['kb_result'][0])) if CONF.html: generate_charts(kloudbuster.final_result, CONF.html, kb_config.config_scale)
def main(): cli_opts = [ cfg.StrOpt("config", short="c", default=None, help="Override default values with a config file", metavar="<config file>"), cfg.BoolOpt("storage", default=False, help="Running KloudBuster to test storage performance"), cfg.BoolOpt("multicast", default=False, help="Running KloudBuster to test multicast performance"), cfg.StrOpt("topology", short="t", default=None, help="Topology file for compute hosts", metavar="<topology file>"), cfg.StrOpt("tenants-list", short="l", default=None, help="Existing tenant and user lists for reusing", metavar="<tenants file>"), cfg.StrOpt( "rc", default=None, help="Tested cloud openrc credentials file (same as --tested-rc)", metavar="<rc file>"), cfg.StrOpt("tested-rc", default=None, help="Tested cloud openrc credentials file", metavar="<rc file>"), cfg.StrOpt("testing-rc", default=None, help="Testing cloud openrc credentials file", metavar="<rc file>"), cfg.StrOpt("passwd", default=None, secret=True, help="Tested cloud password (same as --tested-pwd)", metavar="<password>"), cfg.StrOpt("tested-passwd", default=None, secret=True, help="Tested cloud password", metavar="<password>"), cfg.StrOpt("testing-passwd", default=None, secret=True, help="Testing cloud password", metavar="<password>"), cfg.StrOpt("html", default=None, help='store results in HTML file', metavar="<dest html file>"), cfg.StrOpt("label", default=None, help='label for the title in HTML file', metavar="<title>"), cfg.BoolOpt( "headless", default=False, help= "do not show chart in the browser (default=False, only used if --html)" ), cfg.StrOpt("json", default=None, help='store results in JSON format file', metavar="<dest json file>"), cfg.StrOpt("csv", default=None, help='store results in CSV format, multicast only.', metavar="<csv file>"), cfg.BoolOpt("no-env", default=False, help="Do not read env variables"), cfg.BoolOpt("show-config", default=False, help="Show the default configuration"), cfg.StrOpt( "charts-from-json", default=None, help='create charts from json results and exit (requires --html)', metavar="<source json file>"), ] CONF.register_cli_opts(cli_opts) CONF(sys.argv[1:], project="kloudbuster", version=__version__) logging.setup("kloudbuster") if CONF.rc and not CONF.tested_rc: CONF.tested_rc = CONF.rc if CONF.passwd and not CONF.tested_passwd: CONF.tested_passwd = CONF.passwd if CONF.charts_from_json: if not CONF.html: LOG.error( 'Destination html filename must be specified using --html.') sys.exit(1) with open(CONF.charts_from_json, 'r') as jfp: json_results = json.load(jfp) generate_charts(json_results, CONF.html, None) sys.exit(0) if CONF.show_config: print resource_string(__name__, "cfg.scale.yaml") sys.exit(0) if CONF.multicast and CONF.storage: LOG.error('--multicast and --storage can not both be chosen.') sys.exit(1) try: kb_config = KBConfig() kb_config.init_with_cli() except TypeError: LOG.exception('Error parsing the configuration file') sys.exit(1) # The KloudBuster class is just a wrapper class # levarages tenant and user class for resource creations and deletion kloudbuster = KloudBuster(kb_config.cred_tested, kb_config.cred_testing, kb_config.server_cfg, kb_config.client_cfg, kb_config.topo_cfg, kb_config.tenants_list, storage_mode=CONF.storage, multicast_mode=CONF.multicast) if kloudbuster.check_and_upload_images(): kloudbuster.run() if CONF.json: '''Save results in JSON format file.''' LOG.info('Saving results in json file: ' + CONF.json + "...") with open(CONF.json, 'w') as jfp: json.dump(kloudbuster.final_result, jfp, indent=4, sort_keys=True) if CONF.multicast and CONF.csv and 'kb_result' in kloudbuster.final_result: '''Save results in JSON format file.''' if len(kloudbuster.final_result['kb_result']) > 0: LOG.info('Saving results in csv file: ' + CONF.csv + "...") with open(CONF.csv, 'w') as jfp: jfp.write( KBRunner_Multicast.json_to_csv( kloudbuster.final_result['kb_result'][0])) if CONF.html: generate_charts(kloudbuster.final_result, CONF.html, kb_config.config_scale)