# 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)