Added schema for nova and generator without type detection

This commit is contained in:
Peter Lomakin 2013-09-17 16:02:01 +04:00
parent 1cfef3b9a6
commit cbfac3c102
2 changed files with 2263 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,70 @@
import argparse
import sys
class SchemaParser(object):
def parse_args(self, argv):
parser = argparse.ArgumentParser()
parser.add_argument('--conf', dest='conf_file', default=None,
help='Path to configuration file sample')
parser.add_argument('--project_name', dest='prj_name', default='nova',
help='Name of the configurations project')
parser.add_argument('--config_version', dest='conf_ver',
default='2013.1', help='Version of the package')
args = parser.parse_args(argv[1:])
return args
def variable_type_detection(self, variable):
return basestring
def generate_schema(self, file_to_open, file_to_generate='/tmp/sample.py'):
with open(file_to_open, 'r') as f:
content = f.readlines()
with open(file_to_generate, 'w') as f:
f.write("""from ostack_validator.schema import ConfigSchemaRegistry
nova = ConfigSchemaRegistry.register_schema(project='%s')
nova.version('%s')
""" % (self.prj_name, self.conf_ver)
)
for index, line in enumerate(content):
print line
if str(line).startswith('['):
f.write("nova.section('%s')\n\n" % str(line).strip('[]\n'))
continue
if str(line).startswith('# ') or str(line).startswith(
'\n') or str(line).startswith('#\n'):
continue
else:
revers_list = content[0:index]
revers_list.reverse()
comments = []
for comment in revers_list:
if str(comment).startswith('# '):
comments.append(comment)
else:
break
comments.reverse()
for comment in comments:
f.write(comment)
wrk_str = str(line).strip('#[]\n')
f.write(
"nova.param('%s', type='string', default='%s')\n\n" % (
wrk_str.split('=')[0], wrk_str.split('=')[1]))
continue
def run(self, argv):
args = self.parse_args(argv)
params = vars(args)
self.conf_file = params.pop('conf_file')
self.prj_name = params.pop('prj_name')
self.conf_ver = params.pop('conf_ver')
self.generate_schema(self.conf_file)
if __name__ == '__main__':
runner = SchemaParser()
runner.run(sys.argv)