aboutsummaryrefslogtreecommitdiffstats
path: root/app/app/config_binding_service
diff options
context:
space:
mode:
Diffstat (limited to 'app/app/config_binding_service')
-rw-r--r--app/app/config_binding_service/__init__.py8
-rw-r--r--app/app/config_binding_service/openapi.yaml112
2 files changed, 119 insertions, 1 deletions
diff --git a/app/app/config_binding_service/__init__.py b/app/app/config_binding_service/__init__.py
index 5a6b081..306a762 100644
--- a/app/app/config_binding_service/__init__.py
+++ b/app/app/config_binding_service/__init__.py
@@ -1,5 +1,5 @@
# ============LICENSE_START=======================================================
-# Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import os
+import connexion
class BadEnviornmentENVNotFound(Exception):
@@ -38,3 +39,8 @@ def get_consul_uri():
return "http://{0}:{1}".format(os.environ["CONSUL_HOST"], 8500)
else:
raise BadEnviornmentENVNotFound("CONSUL_HOST")
+
+
+# this has to be here due to circular dependency
+app = connexion.App(__name__, specification_dir='.')
+app.add_api('openapi.yaml', arguments={'title': 'Config Binding Service'})
diff --git a/app/app/config_binding_service/openapi.yaml b/app/app/config_binding_service/openapi.yaml
new file mode 100644
index 0000000..bc4dd49
--- /dev/null
+++ b/app/app/config_binding_service/openapi.yaml
@@ -0,0 +1,112 @@
+openapi: 3.0.0
+info:
+ version: 2.3.0
+ title: Config Binding Service
+paths:
+ '/service_component/{service_component_name}':
+ parameters:
+ - name: service_component_name
+ in: path
+ description: >-
+ Service Component Name. service_component_name must be a key in
+ consul.
+ required: true
+ schema:
+ type: string
+ get:
+ description: >-
+ Binds the configuration for service_component_name and returns the bound
+ configuration as a JSON
+ operationId: config_binding_service.controller.bind_config_for_scn
+ responses:
+ '200':
+ description: OK; the bound config is returned as an object
+ content:
+ '*/*':
+ schema:
+ type: object
+ '404':
+ description: there is no configuration in Consul for this component
+ '/service_component_all/{service_component_name}':
+ parameters:
+ - name: service_component_name
+ in: path
+ description: >-
+ Service Component Name. service_component_name must be a key in
+ consul.
+ required: true
+ schema:
+ type: string
+ get:
+ description: >-
+ Binds the configuration for service_component_name and returns the bound
+ configuration, policies, and any other keys that are in Consul
+ operationId: config_binding_service.controller.bind_all
+ responses:
+ '200':
+ description: >-
+ OK; returns {config : ..., policies : ....., k : ...} for all other
+ k in Consul
+ content:
+ '*/*':
+ schema:
+ type: object
+ '404':
+ description: there is no configuration in Consul for this component
+ '/{key}/{service_component_name}':
+ parameters:
+ - name: key
+ in: path
+ description: >-
+ this endpoint tries to pull service_component_name:key; key is the key
+ after the colon
+ required: true
+ schema:
+ type: string
+ - name: service_component_name
+ in: path
+ description: Service Component Name.
+ required: true
+ schema:
+ type: string
+ get:
+ description: >-
+ this is an endpoint that fetches a generic service_component_name:key
+ out of Consul. The idea is that we don't want to tie components to
+ Consul directly in case we swap out the backend some day, so the CBS
+ abstracts Consul from clients. The structuring and weird collision of
+ this new API with the above is unfortunate but due to legacy concerns.
+ operationId: config_binding_service.controller.get_key
+ responses:
+ '200':
+ description: 'OK; returns service_component_name:key'
+ content:
+ '*/*':
+ schema:
+ type: object
+ '400':
+ description: >-
+ bad request. Currently this is only returned on :policies, which is
+ a complex object, and should be gotten through service_component_all
+ content:
+ '*/*':
+ schema:
+ type: string
+ '404':
+ description: key does not exist
+ content:
+ '*/*':
+ schema:
+ type: string
+ /healthcheck:
+ get:
+ description: >-
+ This is the health check endpoint. If this returns a 200, the server is
+ alive and consul can be reached. If not a 200, either dead, or no
+ connection to consul
+ operationId: config_binding_service.controller.healthcheck
+ responses:
+ '200':
+ description: Successful response
+ '503':
+ description: the config binding service cannot reach Consul