mirror of
https://github.com/puppetlabs/infinitory.git
synced 2026-01-26 10:18:41 -05:00
(DIO-834) Adds infinitory-flask component
This commit is contained in:
parent
fd1ad61fce
commit
79fc53cacc
4 changed files with 110 additions and 1 deletions
9
infinitory-flask/Dockerfile
Normal file
9
infinitory-flask/Dockerfile
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
FROM python:3
|
||||
ADD app.py /
|
||||
ENV GOOGLE_APPLICATION_CREDENTIALS $GOOGLE_APPLICATION_CREDENTIALS
|
||||
ENV TZ=America/Los_Angeles
|
||||
ENV BUCKET $BUCKET
|
||||
RUN pip install --upgrade pip
|
||||
RUN pip install flask google-cloud-storage
|
||||
EXPOSE 5000
|
||||
ENTRYPOINT python app.py ${BUCKET}
|
||||
64
infinitory-flask/app.py
Normal file
64
infinitory-flask/app.py
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import os
|
||||
import logging
|
||||
import shutil
|
||||
import sys
|
||||
from flask import Flask, send_file, Response
|
||||
from google.cloud import storage
|
||||
import tempfile
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['root_path'] = '/'
|
||||
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
|
||||
app.config['static_url_path'] = '/static'
|
||||
app.config['static_folder'] = 'static'
|
||||
|
||||
bucket = sys.argv[1]
|
||||
|
||||
if os.path.isdir('templates'):
|
||||
shutil.rmtree('templates')
|
||||
os.mkdir('templates', 0o755)
|
||||
|
||||
if os.path.isdir('static'):
|
||||
shutil.rmtree('static')
|
||||
os.mkdir('static', 0o755)
|
||||
|
||||
client = storage.Client()
|
||||
bucket = client.get_bucket(bucket)
|
||||
|
||||
css = bucket.get_blob('pygments.css')
|
||||
css.download_to_filename("templates/pygments.css")
|
||||
|
||||
static = bucket.list_blobs(prefix='static')
|
||||
for b in static:
|
||||
destination_uri = '{}'.format(b.name)
|
||||
b.download_to_filename(destination_uri)
|
||||
|
||||
@app.route('/nodes/<string:page_name>/')
|
||||
def render_static_node_page(page_name):
|
||||
return fetch_bucket_resource("nodes/"+page_name)
|
||||
|
||||
@app.route('/roles/<string:page_name>/')
|
||||
def render_static_roles_page(page_name):
|
||||
return fetch_bucket_resource("roles/"+page_name)
|
||||
|
||||
@app.route('/services/<string:page_name>/')
|
||||
def render_static_services_page(page_name):
|
||||
return fetch_bucket_resource("services/"+page_name)
|
||||
|
||||
@app.route('/errors/<string:page_name>/')
|
||||
def render_static_errors_page(page_name):
|
||||
return fetch_bucket_resource("errors/"+page_name)
|
||||
|
||||
@app.route('/')
|
||||
@app.route('/index.html/')
|
||||
def render_index():
|
||||
return fetch_bucket_resource('index.html')
|
||||
|
||||
def fetch_bucket_resource(blob_path):
|
||||
blob = bucket.get_blob(blob_path)
|
||||
with tempfile.NamedTemporaryFile() as temp:
|
||||
blob.download_to_filename(temp.name)
|
||||
return send_file(temp.name, mimetype='html')
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host="0.0.0.0", port=5000)
|
||||
Loading…
Add table
Add a link
Reference in a new issue