Skip to content
Snippets Groups Projects
Unverified Commit 063397a1 authored by Jeremy M Fee's avatar Jeremy M Fee Committed by GitHub
Browse files

Merge pull request #172 from hschovanec-usgs/hschovanec-ws-container

Build web service app as container
parents 25458e5d bc9c41ae
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,7 @@ if __name__ == '__main__': ...@@ -22,6 +22,7 @@ if __name__ == '__main__':
factory_type = os.getenv('GEOMAG_FACTORY_TYPE', 'edge') factory_type = os.getenv('GEOMAG_FACTORY_TYPE', 'edge')
webservice_host = os.getenv('GEOMAG_WEBSERVICE_HOST', '') webservice_host = os.getenv('GEOMAG_WEBSERVICE_HOST', '')
webservice_port = int(os.getenv('GEOMAG_WEBSERVICE_PORT', '7981')) webservice_port = int(os.getenv('GEOMAG_WEBSERVICE_PORT', '7981'))
version = os.getenv('GEOMAG_VERSION', None)
# configure factory # configure factory
if factory_type == 'edge': if factory_type == 'edge':
...@@ -30,6 +31,6 @@ if __name__ == '__main__': ...@@ -30,6 +31,6 @@ if __name__ == '__main__':
raise "Unknown factory type '%s'" % factory_type raise "Unknown factory type '%s'" % factory_type
print("Starting webservice on %s:%d" % (webservice_host, webservice_port)) print("Starting webservice on %s:%d" % (webservice_host, webservice_port))
app = geomagio.WebService(factory) app = geomagio.WebService(factory, version)
httpd = make_server(webservice_host, webservice_port, app) httpd = make_server(webservice_host, webservice_port, app)
httpd.serve_forever() httpd.serve_forever()
version: "3"
services:
web:
image: usgs/geomag-algorithms:latest
environment:
- EDGE_HOST=cwbpub.cr.usgs.gov
- EDGE_PORT=2060
- GEOMAG_WEBSERVICE_PORT=8000
- GEOMAG_VERSION=0.3.1
ports:
- "8000:8000"
entrypoint: /geomag-algorithms/bin/geomag_webservice.py
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
from __future__ import print_function from __future__ import print_function
from cgi import parse_qs, escape from cgi import parse_qs, escape
from datetime import datetime from datetime import datetime
from json import load
import os.path
import sys import sys
from geomagio.edge import EdgeFactory from geomagio.edge import EdgeFactory
...@@ -74,14 +72,10 @@ def _get_param(params, key, required=False): ...@@ -74,14 +72,10 @@ def _get_param(params, key, required=False):
class WebService(object): class WebService(object):
def __init__(self, factory=None, metadata=None): def __init__(self, factory=None, version=None, metadata=None):
self.factory = factory or EdgeFactory() self.factory = factory or EdgeFactory()
self.metadata = metadata or ObservatoryMetadata().metadata self.metadata = metadata or ObservatoryMetadata().metadata
base = os.path.dirname(__file__) self.version = version
filepath = os.path.abspath(os.path.join(base, '..', 'package.json'))
with open(filepath) as package:
specifications = load(package)
self.version = specifications['version']
def __call__(self, environ, start_response): def __call__(self, environ, start_response):
"""Implement WSGI interface""" """Implement WSGI interface"""
...@@ -185,9 +179,10 @@ class WebService(object): ...@@ -185,9 +179,10 @@ class WebService(object):
'Request:\n' + \ 'Request:\n' + \
environ['PATH_INFO'] + '?' + environ['QUERY_STRING'] + \ environ['PATH_INFO'] + '?' + environ['QUERY_STRING'] + \
'\n\n' + 'Request Submitted:\n' + \ '\n\n' + 'Request Submitted:\n' + \
datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ") + '\n\n' + \ datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ") + '\n\n'
'Service version:\n' + \ # Check if there is version information available
str(self.version) if self.version is not None:
http_error_body += 'Service version:\n' + str(self.version)
return http_error_body return http_error_body
def parse(self, params): def parse(self, params):
......
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