Пример #1
0
def _deregister_not_running_services():
    try:
        ship = get_ship_name()
    except:
        ship = get_ship_ip()
    services = _get_local_services()
    running_containers_ids = _get_running_container_ids()
    for service_id in services.keys():
        container_id, is_subservice = _get_container_id_with_subservice(
            service_id)
        if container_id in running_containers_ids:
            continue
        if not is_subservice:
            name = services[service_id]['Service']
            kv.update_container_status('crashed',
                                       ship=ship,
                                       name=name,
                                       container_id=container_id)
        deregister_services(container_id)

    services_keys = kv.kv_list('ships/{}/service/'.format(ship)) or []
    for service_key in services_keys:
        container_id = service_key.split('/')[-1]
        if container_id not in running_containers_ids:
            kv.update_container_status('crashed', key=service_key)
            deregister_services(container_id)
Пример #2
0
def _deregister_not_running_services():
    try:
        ship = get_ship_name()
    except:
        ship = get_ship_ip()
    services = _get_local_services()
    running_containers_ids = _get_running_container_ids()
    for service_id in services.keys():
        container_id, is_subservice = _get_container_id_with_subservice(service_id)
        if container_id in running_containers_ids:
            continue
        if not is_subservice:
            name = services[service_id]['Service']
            kv.update_container_status('crashed', ship=ship, name=name, container_id=container_id)
        deregister_services(container_id)

    services_keys = kv.kv_list('ships/{}/service/'.format(ship)) or []
    for service_key in services_keys:
        container_id = service_key.split('/')[-1]
        if container_id not in running_containers_ids:
            kv.update_container_status('crashed', key=service_key)
            deregister_services(container_id)
Пример #3
0
    def GET(self):
        try:
            catalog_nodes_dict = consul_query('catalog/nodes')

            result = []
            running_armada_services = _get_running_armada_services()
            ship_ip_to_armada = _create_ip_to_service(running_armada_services)
            current_ship_ip = get_ship_ip()
            for consul_node in catalog_nodes_dict:
                ship_ip = consul_node['Address']
                ship_name = get_ship_name(ship_ip)
                armada_service = ship_ip_to_armada.get(ship_ip, {})

                service_armada_address = armada_service.get('address', ship_ip)
                service_armada_status = armada_service.get('status', '?')
                service_armada_version = get_armada_version(
                    service_armada_address)
                try:
                    ship_role = get_ship_role(ship_ip)
                except:
                    ship_role = '?'

                is_current = (ship_ip == current_ship_ip)

                armada_instance = {
                    'name': ship_name,
                    'role': ship_role,
                    'address': service_armada_address,
                    'status': service_armada_status,
                    'version': service_armada_version,
                    'microservice_id': armada_service.get('microservice_id'),
                    'is_current': is_current
                }
                result.append(armada_instance)
        except Exception as e:
            return self.status_exception('Could not get armada info.', e)
        return self.status_ok({'result': result})
Пример #4
0
    def GET(self):
        try:
            catalog_nodes_dict = consul_query("catalog/nodes")

            result = []
            running_armada_services = _get_running_armada_services()
            ship_ip_to_armada = _create_ip_to_service(running_armada_services)
            current_ship_ip = get_ship_ip()
            for consul_node in catalog_nodes_dict:
                ship_ip = consul_node["Address"]
                ship_name = get_ship_name(ship_ip)
                armada_service = ship_ip_to_armada.get(ship_ip, {})

                service_armada_address = armada_service.get("address", ship_ip)
                service_armada_status = armada_service.get("status", "?")
                service_armada_version = get_armada_version(service_armada_address)
                try:
                    ship_role = get_ship_role(ship_ip)
                except:
                    ship_role = "?"

                is_current = ship_ip == current_ship_ip

                armada_instance = {
                    "name": ship_name,
                    "role": ship_role,
                    "address": service_armada_address,
                    "status": service_armada_status,
                    "version": service_armada_version,
                    "microservice_id": armada_service.get("microservice_id"),
                    "is_current": is_current,
                }
                result.append(armada_instance)
        except Exception as e:
            return self.status_exception("Could not get armada info.", e)
        return self.status_ok({"result": result})
Пример #5
0
    def GET(self):
        try:
            catalog_nodes_dict = consul_query('catalog/nodes')

            result = []
            running_armada_services = _get_running_armada_services()
            ship_ip_to_armada = _create_ip_to_service(running_armada_services)
            current_ship_ip = get_ship_ip()
            for consul_node in catalog_nodes_dict:
                ship_ip = consul_node['Address']
                ship_name = get_ship_name(ship_ip)
                armada_service = ship_ip_to_armada.get(ship_ip, {})

                service_armada_address = armada_service.get('address', ship_ip)
                service_armada_status = armada_service.get('status', '?')
                service_armada_version = get_armada_version(service_armada_address)
                try:
                    ship_role = get_ship_role(ship_ip)
                except:
                    ship_role = '?'

                is_current = (ship_ip == current_ship_ip)

                armada_instance = {
                    'name': ship_name,
                    'role': ship_role,
                    'address': service_armada_address,
                    'status': service_armada_status,
                    'version': service_armada_version,
                    'microservice_id': armada_service.get('microservice_id'),
                    'is_current': is_current
                }
                result.append(armada_instance)
        except Exception as e:
            return self.status_exception('Could not get armada info.', e)
        return self.status_ok({'result': result})