Beispiel #1
0
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]
Beispiel #2
0
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
        }
Beispiel #3
0
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
Beispiel #4
0
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