From: Kendall Nelson Date: Fri, 4 Dec 2015 00:10:39 +0000 (-0600) Subject: Dynamically Pull Out Option Sections X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=63600a34fb3d771b7e57eff9bde33c8b1072b3c4;p=openstack-build%2Fcinder-build.git Dynamically Pull Out Option Sections Previously in the generation of the opts.py file, the option groups were hard coded. Now, they are pulled out as the lines are parsed. If a group doesn't already exist in the dictionary it gets added and then the options are added to the section. If the group already exists, the options are added to the proper section as you would expect, and if the options being registered don't have a group, they are added to the default section. This patch also moves the check for a non-zero exit code from oslo-config-generator to the right location in the file. This logic had been put too late in the file and was not catching oslo-config-generator failures as it should have been. Change-Id: I59c8067e8091d8bb212e3609f3a174ddc287707e --- diff --git a/cinder/config/generate_cinder_opts.py b/cinder/config/generate_cinder_opts.py index d26082986..7f1922947 100644 --- a/cinder/config/generate_cinder_opts.py +++ b/cinder/config/generate_cinder_opts.py @@ -114,13 +114,7 @@ if __name__ == "__main__": flag = False - registered_opts_dict = {'fc-zone-manager': [], - 'keymgr': [], - 'BRCD_FABRIC_EXAMPLE': [], - 'CISCO_FABRIC_EXAMPLE': [], - 'profiler': [], - 'backend': [], - 'DEFAULT': [], } + registered_opts_dict = {'DEFAULT': [], } def _write_item(opts): list_name = opts[-3:] @@ -177,113 +171,36 @@ if __name__ == "__main__": if (exists != -1) or (key == 'cinder_volume_configuration'): continue - if aline.find("fc-zone-manager") != -1: - fc_zm_list = _retrieve_name(aline) - replace_string = ", group='fc-zone-manager')" - fc_zm_list = fc_zm_list.replace(replace_string, '') - fc_zm_list = fc_zm_list.strip() - line = key + "." + fc_zm_list - registered_opts_dict['fc-zone-manager'].append(line) - elif aline.find("keymgr") != -1: - keymgr_list = _retrieve_name(aline) - keymgr_list = keymgr_list.replace(", group='keymgr')", '') - keymgr_list = keymgr_list.strip() - line = key + "." + keymgr_list - registered_opts_dict['keymgr'].append(line) - elif aline.find("BRCD_FABRIC_EXAMPLE") != -1: - brcd_list = _retrieve_name(aline) - replace_string = ", group='BRCD_FABRIC_EXAMPLE')" - brcd_list = brcd_list.replace(replace_string, '') - brcd_list = brcd_list.strip() - line = key + "." + brcd_list - registered_opts_dict['BRCD_FABRIC_EXAMPLE'].append(line) - elif aline.find("CISCO_FABRIC_EXAMPLE") != -1: - cisco_list = _retrieve_name(aline) - replace_string = ", group='CISCO_FABRIC_EXAMPLE')" - cisco_list = cisco_list.replace(replace_string, '') - cisco_list = cisco_list.strip() - line = key + "." + cisco_list - registered_opts_dict['CISCO_FABRIC_EXAMPLE'].append(line) - elif aline.find("profiler") != -1: - profiler_list = _retrieve_name(aline) - replace_string = ', group="profiler")' - profiler_list = profiler_list.replace(replace_string, '') - profiler_list = profiler_list.strip() - line = key + "." + profiler_list - registered_opts_dict['profiler'].append(line) - elif aline.find("backend") != -1: - backend_list = _retrieve_name(aline) - replace_string = ', group=backend)' - backend_list = backend_list.replace(replace_string, '') - backend_list = backend_list.strip() - line = key + "." + backend_list - registered_opts_dict['backend'].append(line) + group_exists = aline.find(', group=') + formatted_opt = _retrieve_name(aline[: group_exists]) + formatted_opt = formatted_opt.replace(')', '').strip() + if group_exists != -1: + group_name = aline[group_exists:-1].replace(', group=\"\'', '').\ + replace(', group=', '').strip("\'\")").upper() + if group_name in registered_opts_dict: + line = key + "." + formatted_opt + registered_opts_dict[group_name].append(line) + else: + line = key + "." + formatted_opt + registered_opts_dict[group_name] = [line] else: - default_list = _retrieve_name(aline) - default_list = default_list.replace(')', '').strip() - line = key + "." + default_list + line = key + "." + formatted_opt registered_opts_dict['DEFAULT'].append(line) - opt_dict[key] = registered_opts_dict - - list_str = ("\n\n" - "def list_opts():\n" - " return [\n" - " ('DEFAULT',\n" - " itertools.chain(\n") - opt_file.write(list_str) - - for item in registered_opts_dict["DEFAULT"]: - _write_item(item) - - profiler_str = (" )),\n" - " ('profiler',\n" - " itertools.chain(\n") - opt_file.write(profiler_str) - - for item in registered_opts_dict["profiler"]: - _write_item(item) - - backend_str = (" )),\n" - " ('backend',\n" - " itertools.chain(\n") - opt_file.write(backend_str) - - for item in registered_opts_dict["backend"]: - _write_item(item) - - cisco_str = (" )),\n" - " ('CISCO_FABRIC_EXAMPLE',\n" - " itertools.chain(\n") - opt_file.write(cisco_str) - - for item in registered_opts_dict["CISCO_FABRIC_EXAMPLE"]: - _write_item(item) - - brcd_str = (" )),\n" - " ('BRCD_FABRIC_EXAMPLE',\n" - " itertools.chain(\n") - opt_file.write(brcd_str) - - for item in registered_opts_dict["BRCD_FABRIC_EXAMPLE"]: - _write_item(item) - - keymgr_str = (" )),\n" - " ('keymgr',\n" - " itertools.chain(\n") - opt_file.write(keymgr_str) - - for item in registered_opts_dict["keymgr"]: - _write_item(item) - fczm_str = (" )),\n" - " ('fc-zone-manager',\n" - " itertools.chain(\n") - opt_file.write(fczm_str) +setup_str = ("\n\n" + "def list_opts():\n" + " return [\n") +opt_file.write(setup_str) - for item in registered_opts_dict["fc-zone-manager"]: +for key in registered_opts_dict: + section_start_str = (" ('" + key + "',\n" + " itertools.chain(\n") + opt_file.write(section_start_str) + for item in registered_opts_dict[key]: _write_item(item) + section_end_str = " )),\n" + opt_file.write(section_end_str) - closing_str = (" )),\n" - " ]\n") - opt_file.write(closing_str) - opt_file.close() +closing_str = (" ]\n") +opt_file.write(closing_str) +opt_file.close() diff --git a/cinder/opts.py b/cinder/opts.py index 9f65dca10..ec05055ef 100644 --- a/cinder/opts.py +++ b/cinder/opts.py @@ -169,6 +169,18 @@ from cinder.zonemanager import fc_zone_manager as \ def list_opts(): return [ + ('FC-ZONE-MANAGER', + itertools.chain( + cinder_zonemanager_fczonemanager.zone_manager_opts, + cinder_zonemanager_drivers_brocade_brcdfczonedriver.brcd_opts, + cinder_zonemanager_drivers_cisco_ciscofczonedriver.cisco_opts, + )), + ('KEYMGR', + itertools.chain( + cinder_keymgr_keymgr.encryption_opts, + cinder.keymgr.keymgr_opts, + cinder_keymgr_confkeymgr.key_mgr_opts, + )), ('DEFAULT', itertools.chain( cinder_backup_driver.service_opts, @@ -305,15 +317,10 @@ def list_opts(): cinder_volume_drivers_vzstorage.vzstorage_opts, cinder_volume_drivers_nfs.nfs_opts, )), - ('profiler', + ('PROFILER', itertools.chain( cinder_service.profiler_opts, )), - ('backend', - itertools.chain( - [cinder_cmd_volume.host_opt], - [cinder_cmd_all.volume_cmd.host_opt], - )), ('CISCO_FABRIC_EXAMPLE', itertools.chain( cinder_zonemanager_drivers_cisco_ciscofabricopts. @@ -324,16 +331,9 @@ def list_opts(): cinder_zonemanager_drivers_brocade_brcdfabricopts. brcd_zone_opts, )), - ('keymgr', - itertools.chain( - cinder_keymgr_keymgr.encryption_opts, - cinder.keymgr.keymgr_opts, - cinder_keymgr_confkeymgr.key_mgr_opts, - )), - ('fc-zone-manager', + ('BACKEND', itertools.chain( - cinder_zonemanager_fczonemanager.zone_manager_opts, - cinder_zonemanager_drivers_brocade_brcdfczonedriver.brcd_opts, - cinder_zonemanager_drivers_cisco_ciscofczonedriver.cisco_opts, + [cinder_cmd_volume.host_opt], + [cinder_cmd_all.volume_cmd.host_opt], )), ] diff --git a/tools/config/generate_sample.sh b/tools/config/generate_sample.sh index 95a35924d..e53a7be6e 100755 --- a/tools/config/generate_sample.sh +++ b/tools/config/generate_sample.sh @@ -76,20 +76,23 @@ fi if [ $NOSAMPLE -eq 0 ] ; then oslo-config-generator --config-file=cinder/config/cinder-config-generator.conf - diff $TARGETDIR/opts.py $TARGETDIR/opts.py.bak &> /dev/null - if [ $? -ne 0 ] ; then - mv $TARGETDIR/opts.py.bak $TARGETDIR/opts.py - else - rm -f $TARGETDIR/opts.py.bak - fi - if [ $? -ne 0 ] ; then echo -en "\n\n#################################################" echo -en "\nERROR: Non-zero exit from oslo-config-generator." echo -en "\n See output above for details.\n" echo -en "#################################################\n" + mv $TARGETDIR/opts.py.bak $TARGETDIR/opts.py exit 1 fi + + diff $TARGETDIR/opts.py $TARGETDIR/opts.py.bak &> /dev/null + + if [ $? -ne 0 ] ; then + mv $TARGETDIR/opts.py.bak $TARGETDIR/opts.py + else + rm -f $TARGETDIR/opts.py.bak + fi + if [ ! -s ./etc/cinder/cinder.conf.sample ] ; then echo -en "\n\n#########################################################" echo -en "\nERROR: etc/cinder/cinder.sample.conf not created properly."