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)
# 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 #############
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)
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}.')
def main(): initialize_logger(SERVICE_NAME) logging.getLogger(KUBERNETES_PKG).setLevel(logging.ERROR) controller = Controller() controller.start()
def main(): initialize_logger(SERVICE_NAME) setInterval(INTERVAL_TIME_SECOND, sweep_container)