heat-agents/heat-config-json-file/install.d/hook-json-file.py
Martin André 9ce538b6ff Prevent trailing whitespace in rendered JSON
On python <3.4 the separator for json.dump() defaulted to (', ', ': ')
which may cause trailing whitespaces in rendered JSON files when used
with indent. This change sets the separator to (',', ': ') to prevent
trailing whitespaces with older versions of python.

See https://docs.python.org/2/library/json.html#basic-usage

Change-Id: I81fabd54659bdb28da43fb4900f19dd94a70336c
2017-01-13 12:07:51 +01:00

54 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python
#
# 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 json
import logging
import os
import sys
def prepare_dir(path):
if not os.path.isdir(path):
os.makedirs(path, 0o700)
def main(argv=sys.argv):
log = logging.getLogger('heat-config')
handler = logging.StreamHandler(sys.stderr)
handler.setFormatter(
logging.Formatter(
'[%(asctime)s] (%(name)s) [%(levelname)s] %(message)s'))
log.addHandler(handler)
log.setLevel('DEBUG')
c = json.load(sys.stdin)['config']
for fname in c.keys():
prepare_dir(os.path.dirname(fname))
data = c.get(fname)
with open(fname, 'w') as json_data_file:
json.dump(data, json_data_file, indent=4, sort_keys=True,
separators=(',', ': '))
response = {
'deploy_stdout': '',
'deploy_stderr': '',
'deploy_status_code': 0,
}
json.dump(response, sys.stdout)
if __name__ == '__main__':
sys.exit(main(sys.argv))