Ejemplo n.º 1
0
def main(opt: Options):
    initialize_logger(SERVICE_NAME)
    logging.getLogger(KUBERNETES_PACKAGE).setLevel(logging.ERROR)

    conn = opt.get_conn()
    num = opt.get_number()

    try:
        for kanban in conn.get_kanban_itr(SERVICE_NAME, num):
            operator = Operator(kanban, conn)
            operator.start_controller()

    except Exception as e:
        lprint(e)
        output_kanban_with_error(conn)
        lprint(f"{SERVICE_NAME} exit")
        sleep(60)
Ejemplo n.º 2
0
# Copyright (c) 2019-2020 Latona. All rights reserved.

import os
import time

from aion.kanban import Kanban
from aion.logger import initialize_logger, lprint
from aion.microservice import Options, main_decorator

from .infrared_camera import InfraredCamera
from .dummy_camera import DummyCamera
from .thermo_server import TemperatureServer

SERVICE_NAME = "stream-usb-thermo-by-grpc-server"
DEVICE_NAME = os.environ.get("DEVICE_NAME")
initialize_logger(SERVICE_NAME)

config_path = f'/var/lib/aion/Data/{SERVICE_NAME}_1/generic.xml'
log_path = f'/var/lib/aion/Data/{SERVICE_NAME}_1/log'


# @main_decorator(SERVICE_NAME)
#def main_without_kanban(opt: Options):
def main_without_kanban():
    lprint("start main_without_kanban()")
    # get cache kanban
    # conn = opt.get_conn()
    # num = opt.get_number()
    # kanban: Kanban = conn.set_kanban(SERVICE_NAME, num)

    ######### main function #############
Ejemplo n.º 3
0
def main(opt: Options):
    initialize_logger(SERVICE_NAME)
    logging.getLogger(KUBERNETES_PACKAGE).setLevel(logging.ERROR)

    conn = opt.get_conn()
    num = opt.get_number()
    kanban = conn.get_one_kanban(SERVICE_NAME, num)
    metadata = kanban.get_metadata()

    lprint("metadata: ", metadata)

    for key in METADATA_KEYS:
        if key not in metadata:
            raise RuntimeError(f"Not found '{key}' in metadadata.")

    deployment_name = metadata.get("microserviceName")
    docker_tag = metadata.get("dockerTag")
    remote_ip = metadata.get("ip")
    remote_port = metadata.get("port")
    container_port = metadata.get("containerPort")
    volumes = metadata.get("volumes")
    prior_device_name = metadata.get("priorDeviceName")
    namespace = metadata.get("projectName").lower()

    try:
        lprint("==========DELETE pvc==========")
        # pvc
        if volumes != None and volumes != "":
            pvc_controller = PvcController()
            for name, item in volumes.items():
                if item.get("type") == VOLUME_TYPE_PVC:
                    try:
                        pvc_controller.set_client()
                        pvc_controller.delete_pvc(name, namespace)
                    except Exception as e:
                        lprint(f"[info]pvc is not deleted (name: {name})")
                        lprint(e)

        lprint("==========DELETE deployment==========")
        # deployment
        try:
            deployment_controller = DeploymentController()
            deployment_controller.set_client()
            deployment_controller.delete(deployment_name, namespace)
        except Exception as e:
            lprint(
                f"[info]deployment is not deleted (name: {deployment_name})")
            lprint(e)

        lprint("==========DELETE service==========")
        # service
        if container_port != None and container_port != "":
            try:
                service_controller = ServiceController()
                service_controller.set_client()
                service_controller.delete(deployment_name, namespace)
            except Exception as e:
                lprint(
                    f"[info]service is not deleted (name: {deployment_name})")
                lprint(e)

        # デプロイ元でカンバンが滞留する問題を防ぐ
        time.sleep(10)

        metadata['status'] = DELETED_STATUS_INDEX
        metadata['error'] = ""

        conn.output_kanban(metadata=metadata, device_name=prior_device_name)

        time.sleep(30)

        lprint("==========DELETE image from host==========")
        # remove image from host
        try:
            docker_controller = DockerController()
            docker_controller.remove_image(microservice_name=deployment_name,
                                           ip=remote_ip,
                                           port=remote_port,
                                           docker_tag=docker_tag)
        except Exception as e:
            lprint(
                f"[info]local image is not removed (name: {deployment_name})")
            lprint(e)

        lprint("==========DELETE image from docker registry==========")
        try:
            docker_registry_controller = DockerRegistryController()
            image_digest = docker_registry_controller.get_digest(
                repository_name=deployment_name, image_tag=docker_tag)

            lprint(f'digest is {image_digest}')
            docker_registry_controller.delete_tag_from_docker_registry(
                repository_name=deployment_name, digest=image_digest)
        except Exception as e:
            lprint(
                f"[info]registry image is not removed (name: {deployment_name})"
            )
            lprint(e)

        metadata['status'] = SUCCEED_STATUS_INDEX
        metadata['error'] = ""

        conn.output_kanban(metadata=metadata, device_name=prior_device_name)

        return

    except Exception:
        lprint(traceback.format_exc())
        metadata['status'] = FAILED_STATUS_INDEX
        metadata['error'] = ""
        conn.output_kanban(metadata=metadata, device_name=prior_device_name)
Ejemplo n.º 4
0
from aion.microservice import Options, main_decorator
from aion.logger import lprint, initialize_logger
from get_response_of_container_deployment_kube import config, main

initialize_logger(config.MICROSERVICE_NAME)


@main_decorator(config.MICROSERVICE_NAME)
def main_with_kanban(opt: Options):
    conn = opt.get_conn()
    num = opt.get_number()

    try:
        for kanban in conn.get_kanban_itr(config.MICROSERVICE_NAME, num):
            metadata = kanban.get_metadata()
            # Check metadata
            keys = [
                'deviceName', 'projectName', 'microserviceName',
                'projectCommitId', 'status', 'error'
            ]
            for key in keys:
                if key not in metadata:
                    raise RuntimeError(f"Not found '{key}' in metadadata.")

            main.main(metadata['deviceName'], metadata['projectName'],
                      metadata['microserviceName'],
                      metadata['projectCommitId'], metadata['status'],
                      metadata['error'])

            conn.output_kanban(metadata=metadata)
            lprint(f'Output kanban {metadata}.')
Ejemplo n.º 5
0
def main():
    initialize_logger(SERVICE_NAME)
    logging.getLogger(KUBERNETES_PKG).setLevel(logging.ERROR)

    controller = Controller()
    controller.start()
Ejemplo n.º 6
0
def main():
    initialize_logger(SERVICE_NAME)
    setInterval(INTERVAL_TIME_SECOND, sweep_container)