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

Prepare for release

parent 680e0ed8
No related branches found
No related tags found
No related merge requests found
*.pyc *.pyc
env
# 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"
......
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