Commit bfe25516 authored by carignani's avatar carignani
Browse files

Parametrized version in doc2tosca

parent acccb51e
VERSION = "0.0.1"
\ No newline at end of file
VERSION = "0.0.2"
......@@ -16,6 +16,8 @@ BASE_FILENAME = "generated_etsi_nfv_sol001_{}_types.yaml"
TOSCA_VERSION = "tosca_simple_yaml_1_2"
SPEC_VERSION = "2.6.1"
allowed_versions = ["2.6.1","2.7.1"]
MODEL_NAMES = ['vnfd', 'nsd', 'pnfd', 'common']
HDR = '''tosca_definitions_version: {tosca_version}
......@@ -141,36 +143,39 @@ def generate_tables_between(a_id, b_id, content, buf):
print(" Regex != 1 ")
return definitions_count
def dump_header(model_name, buf, imports=None):
def dump_header(model_name, buf, spec_version=SPEC_VERSION, imports=None):
'''
Writes the header to the file for a specific model
'''
buf.write(HDR.format(
tosca_version=TOSCA_VERSION,
model=model_name,
spec_version=SPEC_VERSION,
spec_version=spec_version,
imports=imports))
MODELS = {}
for mn in MODEL_NAMES:
MODELS[mn] = tosca_model_info(
mn,
'- https://forge.etsi.org/rep/nfv/SOL001/raw/v{}/etsi_nfv_sol001_common_types.yaml'.format(SPEC_VERSION)
)
def generate_templates(filename):
def generate_templates(filename, spec_version=SPEC_VERSION):
'''
Takes a filename or file object and loads the definition into the MODELS dictionary
'''
if isinstance(filename, str):
print("Opening " + filename)
for mn in MODEL_NAMES:
MODELS[mn] = tosca_model_info(
mn,
'- https://forge.etsi.org/rep/nfv/SOL001/raw/v{}/etsi_nfv_sol001_common_types.yaml'.format(spec_version)
)
sol_001 = docx.Document(filename)
for m in MODELS:
dump_header(MODELS[m]['name'], MODELS[m]['buf'], MODELS[m]['imports'])
dump_header(
MODELS[m]['name'],
MODELS[m]['buf'],
spec_version,
MODELS[m]['imports'])
p_id = 0
......@@ -211,7 +216,6 @@ def print_to_files(prefix=None):
Prefix is a path to a folder to work into
'''
for m in MODELS:
if prefix != None:
MODELS[m]['fn'] = os.path.join(prefix, MODELS[m]['fn'])
......
......@@ -74,9 +74,16 @@ For any other inquiry, contact <a href="mailto:cti_support@etsi.org">ETSI CTI</a
<center>
<a href="doc2tosca-info">Details</a>
</center>
<form action="doc2tosca" method="post" enctype="multipart/form-data">
<form action="doc2tosca" id="doc2tosca-form" name="doc2tosca-form" method="post" enctype="multipart/form-data">
Docx file:<br />
<input type="file" name="file" /><br /><br />
<input type="file" name="file" /></br></br>
Version:
<select class="form-control form-control-sm" form="doc2tosca-form" name="doc-version">
{% for version in doc_allowed_versions %}
<option value="{{version}}">{{version}}</option>
{% endfor %}
</select>
<br /><br />
<center>
<input type="submit" class="btn btn-primary" value="Upload" />
</center>
......
......@@ -20,10 +20,8 @@ class ReverseProxied(object):
self.script_name = script_name
self.scheme = scheme
self.server = server
print("Reverse Proxy set up")
def __call__(self, environ, start_response):
print("ReverseProxy called")
script_name = environ.get('HTTP_X_SCRIPT_NAME', '') or self.script_name
if script_name:
environ['SCRIPT_NAME'] = script_name
......@@ -34,9 +32,6 @@ class ReverseProxied(object):
if scheme:
environ['wsgi.url_scheme'] = scheme
server = environ.get('HTTP_X_FORWARDED_HOST', '') or self.server
print('HTTP_X_FORWARDED_SERVER ' + environ.get('HTTP_X_FORWARDED_SERVER'))
print('HTTP_X_FORWARDED_FOR ' + environ.get('HTTP_X_FORWARDED_FOR'))
print('HTTP_X_FORWARDED_HOST ' + environ.get('HTTP_X_FORWARDED_HOST'))
if server:
environ['HTTP_HOST'] = server
return self.app(environ, start_response)
......@@ -68,7 +63,7 @@ def hello():
'''
Render home page
'''
return render_template("./home.html", VERSION=config.VERSION)
return render_template("./home.html", VERSION=config.VERSION, doc_allowed_versions=doc2tosca.allowed_versions)
@app.route("/doc2tosca-info")
def doc2tosca_info():
......@@ -158,6 +153,8 @@ def get_all_yaml_file_paths(directory):
def after_request(response):
if request.path != '/doc2tosca':
return response
if g.get('tmp_dir') == None:
return response
shutil.rmtree(g.tmp_dir, ignore_errors=True)
print("Deleted {}\n\n".format(g.tmp_dir))
return response
......@@ -168,14 +165,25 @@ def mk_doc2tosca():
zip_fn = "tosca_defs.zip"
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
flash('No file uploaded')
return redirect("/tosca-ie")
ufiles = request.files.getlist("file")
try:
print(request.form)
doc_version = request.form.get('doc-version')
except:
flash("Something went wrong :/")
return redirect("/tosca-ie")
if doc_version not in doc2tosca.allowed_versions:
flash('Incorrect doc version selected')
return redirect("/tosca-ie")
sol001_file = ufiles[0]
doc2tosca.generate_templates(sol001_file)
doc2tosca.generate_templates(sol001_file, doc_version)
tmp_dir = tempfile.mkdtemp()
print("TMP DIR: " + tmp_dir)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment