F release step 1 of 2
[ric-plt/a1.git] / a1 / __init__.py
index 6212289..f7155a0 100644 (file)
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 # ==================================================================================
-import logging
+"""
+contains the app; broken out here for ease of unit testing
+"""
 import connexion
+from prometheus_client import CollectorRegistry, generate_latest, multiprocess
 
 
-def get_module_logger(mod_name):
-    """
-    To use this, do logger = get_module_logger(__name__)
-    """
-    logger = logging.getLogger(mod_name)
-    handler = logging.StreamHandler()
-    formatter = logging.Formatter(
-        '%(asctime)s [%(name)-12s] %(levelname)-8s %(message)s')
-    handler.setFormatter(formatter)
-    logger.addHandler(handler)
-    logger.setLevel(logging.DEBUG)
-    return logger
+app = connexion.App(__name__, specification_dir=".")
+app.add_api("openapi.yaml", arguments={"title": "My Title"})
 
 
-app = connexion.App(__name__, specification_dir='.')
-app.add_api('openapi.yaml', arguments={'title': 'My Title'})
+# python decorators feel like black magic to me
+@app.app.route('/a1-p/metrics', methods=['GET'])
+def metrics():  # pylint: disable=unused-variable
+    # /metrics API shouldn't be visible in the API documentation,
+    # hence it's added here in the create_app step
+    # requires environment variable prometheus_multiproc_dir
+    registry = CollectorRegistry()
+    multiprocess.MultiProcessCollector(registry)
+    return generate_latest(registry)