ec2-api/tools/config/analyze_opts.py

82 lines
2.8 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright (c) 2012, Cloudscaling
# All Rights Reserved.
#
# 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.
'''
find_unused_options.py
Compare the ec2api.conf file with the ec2api.conf.sample file to find any
unused options or default values in ec2api.conf
'''
from __future__ import print_function
import argparse
import os
import sys
from oslo_config import iniparser
sys.path.append(os.getcwd())
class PropertyCollecter(iniparser.BaseParser):
def __init__(self):
super(PropertyCollecter, self).__init__()
self.key_value_pairs = {}
def assignment(self, key, value):
self.key_value_pairs[key] = value
def new_section(self, section):
pass
@classmethod
def collect_properties(cls, lineiter, sample_format=False):
def clean_sample(f):
for line in f:
if line.startswith("#") and not line.startswith("# "):
line = line[1:]
yield line
pc = cls()
if sample_format:
lineiter = clean_sample(lineiter)
pc.parse(lineiter)
return pc.key_value_pairs
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='''Compare the ec2api.conf
file with the ec2api.conf.sample file to find any unused options or
default values in ec2api.conf''')
parser.add_argument('-c', action='store',
default='/etc/ec2api/ec2api.conf',
help='path to ec2api.conf\
(defaults to /etc/ec2api/ec2api.conf)')
parser.add_argument('-s', default='./etc/ec2api/ec2api.conf.sample',
help='path to ec2api.conf.sample\
(defaults to ./etc/ec2api/ec2api.conf.sample')
options = parser.parse_args()
conf_file_options = PropertyCollecter.collect_properties(open(options.c))
sample_conf_file_options = PropertyCollecter.collect_properties(
open(options.s), sample_format=True)
for k, v in sorted(conf_file_options.items()):
if k not in sample_conf_file_options:
print("Unused:", k)
for k, v in sorted(conf_file_options.items()):
if k in sample_conf_file_options and v == sample_conf_file_options[k]:
print("Default valued:", k)