Skip to content
Snippets Groups Projects
Commit bfe25516 authored by carignani's avatar carignani
Browse files

Parametrized version in doc2tosca

parent acccb51e
No related branches found
No related tags found
No related merge requests found
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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment