| #Author: Shu Shi |
| #emaiL: shushi@research.att.com |
| |
| from toscalib.tosca_workbook import ToscaWorkBook |
| from toscalib.tosca_builder import ToscaBuilder |
| |
| import getopt, sys, json, os, logging |
| |
| def usage(): |
| print('OPTIONS:') |
| print('\t-h|--help: print this help message') |
| print('\t-i|--input: The PATH to spec file') |
| print('\t-o|--output: the output file name') |
| print('\t-n|--name: the name of the service') |
| |
| |
| def main(): |
| try: |
| opts, args = getopt.getopt(sys.argv[1:], "hi:o:n:", ["help", "input=", "output=", "name="]) |
| except getopt.GetoptError as err: |
| logging.error( str(err)) # will print something like "option -a not recognized" |
| usage() |
| sys.exit(2) |
| |
| spec_file = None |
| output_file = None |
| name = None |
| |
| for o, a in opts: |
| if o in ("-h", "--help"): |
| usage() |
| sys.exit() |
| elif o in ("-i", "--input"): |
| spec_file = a |
| elif o in ("-o", "--output"): |
| output_file = a |
| elif o in ("-n", "--name"): |
| name = a |
| else: |
| logging.error( 'Unrecognized option: ' + o) |
| usage() |
| sys.exit(2) |
| |
| if spec_file is None or output_file is None: |
| logging.error( 'Incorrect arguments!') |
| usage() |
| sys.exit(2) |
| |
| dirname = os.path.dirname(output_file) |
| |
| if dirname is not None and len(dirname) > 0: |
| try: |
| os.stat(dirname) |
| except: |
| os.mkdir(dirname) |
| |
| meta_model = './data/meta_model/meta_policy_schema.yaml' |
| |
| builder = ToscaBuilder() |
| |
| builder.import_schema(meta_model) |
| builder.import_spec(spec_file) |
| if name is None: |
| name = builder.spec_import.name |
| if builder._using_policy() is False: |
| logging.warning( 'NO policy is defined in the spec') |
| return |
| builder.create_policy() |
| builder.export_policy(output_file) |
| |
| if __name__ == "__main__": |
| main() |