Commit 929b5263 authored by carignani's avatar carignani
Browse files

Prepare for release

parent 680e0ed8
# Tosca Import/Export # Tosca Import/Export
## Create `env` file
cp env_example env
$EDITOR env # Customize SECRET
## Run with docker ## Run with docker
...@@ -20,3 +24,7 @@ Install prerequisites ...@@ -20,3 +24,7 @@ Install prerequisites
Run the web_app Run the web_app
python src/web_app.py python src/web_app.py
## Licensing
See LICENSE file.
\ No newline at end of file
#!/bin/bash
CNT=$(docker ps | grep tosca-ie | cut -d " " -f1) CNT=$(docker ps | grep tosca-ie | cut -d " " -f1)
if [ "$CNT" != "" ] ; then if [ "$CNT" != "" ] ; then
...@@ -10,5 +11,5 @@ fi ...@@ -10,5 +11,5 @@ fi
docker build -t tosca-ie-sample:latest . docker build -t tosca-ie-sample:latest .
docker run -d -t -p 5000:5000 tosca-ie-sample docker run -d --restart unless-stopped -t -p 5000:5000 --env-file ./env tosca-ie-sample
'''
Configuration values
'''
import os
def env_or_false(key):
'''
Lookup environment key, returns False is not present
'''
try:
return os.environ[key]
except KeyError:
return False
VERSION = "0.0.4" VERSION = "0.0.4"
SECRET = env_or_false("TOSCAIE_SECRET") or 'super_secret_key'
#!/bin/python3 #!/bin/python3
'''
Web app to offer a frontend to the doc2tosca and tosca2doc tools
'''
import os import os
import shutil import shutil
...@@ -15,8 +19,8 @@ import doc2tosca ...@@ -15,8 +19,8 @@ import doc2tosca
class ReverseProxied(object): class ReverseProxied(object):
def __init__(self, app, script_name=None, scheme=None, server=None): def __init__(self, the_app, script_name=None, scheme=None, server=None):
self.app = app self.app = the_app
self.script_name = script_name self.script_name = script_name
self.scheme = scheme self.scheme = scheme
self.server = server self.server = server
...@@ -36,7 +40,6 @@ class ReverseProxied(object): ...@@ -36,7 +40,6 @@ class ReverseProxied(object):
environ['HTTP_HOST'] = server environ['HTTP_HOST'] = server
return self.app(environ, start_response) return self.app(environ, start_response)
app = Flask(__name__) app = Flask(__name__)
app.wsgi_app = ReverseProxied(app.wsgi_app, script_name='/tosca-ie') app.wsgi_app = ReverseProxied(app.wsgi_app, script_name='/tosca-ie')
...@@ -45,11 +48,15 @@ UPLOAD_FOLDER = '/tmp/upload' ...@@ -45,11 +48,15 @@ UPLOAD_FOLDER = '/tmp/upload'
ALLOWED_EXTENSIONS = set(['txt', 'yaml', 'docx']) ALLOWED_EXTENSIONS = set(['txt', 'yaml', 'docx'])
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.secret_key = 'super secret key' app.secret_key = config.SECRET
app.config['SESSION_TYPE'] = 'filesystem' app.config['SESSION_TYPE'] = 'filesystem'
TOSCA_DEFS = ['VNFD', 'NSD', 'PNFD'] TOSCA_DEFS = ['VNFD', 'NSD', 'PNFD']
MISSING_MODULE_ERR_MSG = \
'Error: some TOSCA module missing. Make sure to \
upload definitions for NSD, VNFD, PNFD.'
def allowed_file(filename): def allowed_file(filename):
''' '''
Check filename is in the list of allowed extensions Check filename is in the list of allowed extensions
...@@ -57,13 +64,16 @@ def allowed_file(filename): ...@@ -57,13 +64,16 @@ def allowed_file(filename):
return '.' in filename and \ return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route("/") @app.route("/")
def hello(): def hello():
''' '''
Render home page Render home page
''' '''
return render_template("./home.html", VERSION=config.VERSION, doc_allowed_versions=doc2tosca.allowed_versions) return render_template(
"./home.html",
VERSION=config.VERSION,
doc_allowed_versions=doc2tosca.allowed_versions
)
@app.route("/doc2tosca-info") @app.route("/doc2tosca-info")
def doc2tosca_info(): def doc2tosca_info():
...@@ -81,6 +91,9 @@ def tosca2doc_info(): ...@@ -81,6 +91,9 @@ def tosca2doc_info():
@app.route("/tosca2doc", methods=['POST']) @app.route("/tosca2doc", methods=['POST'])
def mk_tosca2doc(): def mk_tosca2doc():
'''
Execute tosca2doc on the uploaded files
'''
if 'file' not in request.files: if 'file' not in request.files:
flash('Error: No file uploaded.') flash('Error: No file uploaded.')
...@@ -94,12 +107,8 @@ def mk_tosca2doc(): ...@@ -94,12 +107,8 @@ def mk_tosca2doc():
if tosca_def in uploaded_file.filename or \ if tosca_def in uploaded_file.filename or \
tosca_def.lower() in uploaded_file.filename: tosca_def.lower() in uploaded_file.filename:
found=True found=True
#if uploaded_file:
# print "-------------------"
# print uploaded_file.read()
# print "-------------------"
if not found: if not found:
flash('Error: some TOSCA module missing. Make sure to upload definitions for NSD, VNFD, PNFD.') flash(MISSING_MODULE_ERR_MSG)
print('Error: TOSCA module missing.') print('Error: TOSCA module missing.')
return redirect("/tosca-ie") return redirect("/tosca-ie")
...@@ -133,27 +142,29 @@ def mk_tosca2doc(): ...@@ -133,27 +142,29 @@ def mk_tosca2doc():
#return ("No content found") #return ("No content found")
def get_all_yaml_file_paths(directory): def get_all_yaml_file_paths(directory):
'''
Finds yaml files within a directory and sub directories and
returns the list of paths
'''
# initializing empty file paths list
file_paths = [] file_paths = []
# crawling through directory and subdirectories for root, _, files in os.walk(directory):
for root, directories, files in os.walk(directory):
for filename in files: for filename in files:
if ".yaml" in filename: if ".yaml" in filename:
# join the two strings in order to form the full filepath.
filepath = os.path.join(root, filename) filepath = os.path.join(root, filename)
file_paths.append(filepath) file_paths.append(filepath)
print(filepath)
# returning all file paths
return file_paths return file_paths
@app.after_request @app.after_request
def after_request(response): def after_request(response):
'''
Clean up files created by doc2tosca
'''
if request.path != '/doc2tosca': if request.path != '/doc2tosca':
return response return response
if g.get('tmp_dir') == None: if g.get('tmp_dir') is None:
return response return response
shutil.rmtree(g.tmp_dir, ignore_errors=True) shutil.rmtree(g.tmp_dir, ignore_errors=True)
print("Deleted {}\n\n".format(g.tmp_dir)) print("Deleted {}\n\n".format(g.tmp_dir))
...@@ -161,6 +172,9 @@ def after_request(response): ...@@ -161,6 +172,9 @@ def after_request(response):
@app.route("/doc2tosca", methods=['POST']) @app.route("/doc2tosca", methods=['POST'])
def mk_doc2tosca(): def mk_doc2tosca():
'''
Executes doc2tosca on the uploaded file
'''
zip_fn = "tosca_defs.zip" zip_fn = "tosca_defs.zip"
......
Markdown is supported
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