Пример #1
0
def container_retomar():
    container_id = None

    json = request.get_json()

    if not json:
        return jsonify({
            "status": 0,
            "mensagem": "Não foi possível retomar o container"
        })

    try:
        container_id = json['container_id']
    except:
        return jsonify({
            "status": 0,
            "mensagem": 'O json deve possuir o campo "container_id"'
        })

    container = Container()
    container.id = container_id
    container_retomado = container.retomar()

    if container_retomado == 1:
        mensagem = "Container retomado"
    else:
        mensagem = "Não foi possível retomar o container"

    return jsonify({"status": container_retomado, "mensagem": mensagem})
Пример #2
0
def containers():
    containers_raw = app.config['CONTAINERS_COLLECTION'].find({"user_id": ObjectId(g.user.get_id())})

    return render_template(
        'user/containers_list.html',
        title='Containers',
        containers=Container.get_containers_list(containers_raw)
    )
Пример #3
0
def containers():
    containers_raw = app.config['CONTAINERS_COLLECTION'].find(
        {"user_id": ObjectId(g.user.get_id())})

    return render_template(
        'user/containers_list.html',
        title='Containers',
        containers=Container.get_containers_list(containers_raw))
Пример #4
0
def container_consultar(container_id):
    container = Container()
    container.id = container_id
    container_informacoes = container.consultar()
    list_container_informacoes = container_informacoes.split(" ")
    return jsonify({
        "status": 1,
        "mensagem": "Informações localizadas",
        "cpu": list_container_informacoes[1],
        "ram": list_container_informacoes[2]
    })
Пример #5
0
def container_iniciar():
    nome = None
    distro = None
    versao = None
    network = None

    json = request.get_json()

    if not json:
        return jsonify({"status": 0, "mensagem": "Nenhum informação recebida"})

    try:
        nome = json['nome']
        distro = json['distro']
        versao = json['versao']
        network = json['network']
    except:
        return jsonify({
            "status":
            0,
            "mensagem":
            'O json deve possuir os campos "distro", "versão" e "network"'
        })

    container = Container()
    container.nome = nome
    container.distro = distro
    container.versao = versao
    container.network = network
    container_id = container.iniciar()

    if container_id:
        return jsonify({
            "status": 1,
            "mensagem": "Container iniciado",
            "container_id": container_id
        })

    return jsonify({"status": 0, "mensagem": "Falha ao iniciar o container"})
Пример #6
0
def container_consultar_network(network_id):
    # Status:
    # 0 -> parado
    # 1 -> normal
    # 2 -> falho

    global states
    network = Network()
    network.id = network_id
    containers = []
    json_infos_network = network.consultar()
    json_containers = json_infos_network[0]['Containers']
    for container_id in json_containers:
        atributos = json_containers[container_id]
        container = Container()
        container.id = container_id
        container_informacoes = container.consultar()

        if not container_informacoes:
            continue

        list_container_informacoes = container_informacoes.split(" ")
        container_inpecionado = container.inspecionar()

        if not container_inpecionado:
            continue

        estados_do_container = container_inpecionado["State"]
        status_atual = 0 if estados_do_container["Paused"] else 1

        # sobrescrever o status atual se ele estiver rodando
        # print(states)
        if status_atual > 0:  # rodando
            for s in range(len(states)):
                state = states[s]
                if state["container_id"] == container_id:
                    if state["status"] == "FALHO":
                        status_atual = 2
                        if state["notificar"] == 1:
                            notificacao_falha = Notificacao(
                                "[%s]" % atributos['Name'],
                                "Uma falha inesperada foi detectada.")
                            if notificacao_falha.enviar():
                                states[s]["notificar"] = 0

        # if float(list_container_informacoes[1][:list_container_informacoes[1].index('%')]) >= 90: # cpu
        #     notificacao_cpu = Notificacao("Excesso de consumo de processamento", "O container está consumindo uma quantidade alta de CPU.")
        #     notificacao_cpu.enviar()

        # if float(list_container_informacoes[2][:list_container_informacoes[2].index('MiB')]) >= 90: # ram
        #     notificacao_ram = Notificacao("Excesso de consumo de memória", "O container está consumindo uma quantidade alta de RAM.")
        #     notificacao_ram.enviar()

        dict_container_informacoes = {
            "id": container_id,
            "nome": atributos['Name'],
            "ipv4": atributos['IPv4Address'],
            "macaddress": atributos['MacAddress'],
            "cpu": list_container_informacoes[1],
            "ram": list_container_informacoes[2],
            "status": status_atual
        }
        containers.append(dict_container_informacoes)

    return jsonify({
        "status": 1,
        "mensagem": "Informações localizadas",
        "containers": containers
    })