There have been 2 recent heat regressions (one which is still ongoing) which result in an empty string '' being set as the structured config instead of an empty dict {}
os-apply-config should be better at handling this case, instead it raises this error:
http://logs.openstack.org/90/159490/1/check-tripleo/check-tripleo-ironic-overcloud-f20-nonha/963c652/logs/ov-osp2xvg5ed4-0-5k2zhft6s4ag-Controller_logs/os-collect-config.txt.gz#_Feb_26_15_51_33
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: [2015-02-26 15:51:33,096] (os-refresh-config) [INFO] Starting phase pre-configure
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: dib-run-parts Thu Feb 26 15:51:33 UTC 2015 Running /usr/libexec/os-refresh-config/pre-configure.d/00-fix-ephemeral-mount
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: ++ os-apply-config --key block-device-mapping.ephemeral0 --type raw --key-default ''
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: Traceback (most recent call last):
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: File "/usr/local/bin/os-apply-config", line 11, in <module>
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: sys.exit(main())
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: File "/opt/stack/venvs/openstack/lib/python2.7/site-packages/os_apply_config/apply_config.py", line 327, in main
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: opts.fallback_metadata)
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: File "/opt/stack/venvs/openstack/lib/python2.7/site-packages/os_apply_config/apply_config.py", line 84, in print_key
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: config = collect_config.collect_config(config_path, fallback_metadata)
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: File "/opt/stack/venvs/openstack/lib/python2.7/site-packages/os_apply_config/collect_config.py", line 69, in collect_config
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: return merge_configs(parse_configs(read_configs(os_config_files)))
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: File "/opt/stack/venvs/openstack/lib/python2.7/site-packages/os_apply_config/collect_config.py", line 61, in merge_configs
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: final_conf = _deep_merge_dict(final_conf, conf)
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: File "/opt/stack/venvs/openstack/lib/python2.7/site-packages/os_apply_config/collect_config.py", line 53, in _deep_merge_dict
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: new_dict[k] = copy.deepcopy(v)
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: TypeError: 'unicode' object does not support item assignment
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: + ephemeraldisk=
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: [2015-02-26 15:51:33,403] (os-refresh-config) [ERROR] during pre-configure phase. [Command '['dib-run-parts', '/usr/libexec/os-refresh-config/pre-configure.d']' returned non-zero exit status 1]
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: [2015-02-26 15:51:33,404] (os-refresh-config) [ERROR] Aborting...
Feb 26 15:51:33 ov-osp2xvg5ed4-0-5k2zhft6s4ag-controller-jm2wffxacbq2 os-collect-config[791]: 2015-02-26 15:51:33.408 791 ERROR os-collect-config [-] Command failed, will not cache new data. Command 'os-refresh-config' returned non-zero exit status 1
Fix proposed to branch: master /review. openstack. org/159604
Review: https:/