def get_configuration(key): url = "http://{}:{}/v1/kv/{}".format(CONSUL_HOST, CONSUL_PORT, key) req = requests.get(url) if req.status_code != 200: logger.error("url={}".format(url)) raise exceptions.ConsulComponentNotFound("error={}: {}".format( req.status_code, req.text)) data = req.json() if len(data) == 1: data = data[0] if all(k in data for k in ("Key", "Value")): return { data["Key"]: json.loads(base64.b64decode(data["Value"]).decode("utf-8")) } raise exceptions.ConsulComponentContentError("error={}".format(data)) else: for item in data: if not all(k in item for k in ("Key", "Value")): logger.warning("invalidate content {}".format(item)) raise exceptions.ConsulComponentContentError( "error={}".format(data)) return [{ item["Key"]: json.loads(base64.b64decode(item["Value"]).decode("utf-8")) } for item in data]
def get_components(): url = "http://{}:{}/v1/kv/components?recurse=true".format( CONSUL_HOST, CONSUL_PORT) req = requests.get(url) if req.status_code != 200: logger.info("url={}".format(url)) raise exceptions.ConsulError data = req.json() if len(data) == 1: data = data[0] if all(k in data for k in ("Key", "Value")): return { data["Key"].replace("components/", ""): json.loads(base64.b64decode(data["Value"]).decode("utf-8")) } raise exceptions.ConsulComponentContentError("error={}".format(data)) else: for item in data: if not all(k in item for k in ("Key", "Value")): logger.warning("invalidate content {}".format(item)) raise exceptions.ConsulComponentContentError( "error={}".format(data)) return { item["Key"].replace("components/", ""): json.loads(base64.b64decode(item["Value"]).decode("utf-8")) for item in data }
def get_plugins(): pipeline = get_configuration("components/pipeline") logger.debug("pipeline={}".format(pipeline)) components = pipeline.get("components/pipeline") if 'interface' in components: components.pop('interface') else: raise exceptions.ConsulComponentContentError( "error= Components pipeline has no interface") return components
def increment_port(): components_object = get_configuration("components/port_start") if 'components/port_start' in components_object: components_port_start = int(components_object['components/port_start']) components_port_start += 1 else: raise exceptions.ConsulComponentContentError( "error={}".format(components_object)) url = "http://{}:{}/v1/kv/components/port_start".format( CONSUL_HOST, CONSUL_PORT) req = requests.put(url, json=str(components_port_start)) if req.status_code != 200: logger.info("url={}".format(url)) raise exceptions.ConsulError return components_port_start