test-runner/edgehub_control.py (92 lines of code) (raw):

import docker import sys import os from time import sleep from horton_logging import logger # Create Global Variables EDGEHUB_NAME = "edgeHub" client = docker.from_env() try: edge_network = client.networks.get("azure-iot-edge") edgeHub = client.containers.get(EDGEHUB_NAME) except: # noqa: E722 do not use bare 'except' print("Could not load docker engine.") edge_network = None edgeHub = None def get_network_list(): edge_network.reload() return list(map(lambda x: x.name, edge_network.containers)) def disconnect_edgehub(network=True): logger("disconnecting edgehub from network") try: edgeHub = client.containers.get(EDGEHUB_NAME) if network: if EDGEHUB_NAME in get_network_list(): edge_network.disconnect(EDGEHUB_NAME) sleep(10) else: # Edge Network alreday contains EdgeHub logger("Note: {} not in IoT Edge Network".format(EDGEHUB_NAME)) else: if EDGEHUB_NAME in list(map(lambda x: x.name, client.containers.list())): edgeHub.restart() else: # Edge Network alreday contains EdgeHub logger("Note: {} not in IoT Edge Network".format(EDGEHUB_NAME)) except Exception as e: logger("Error: {}".format(sys.exc_info()[0])) raise e def connect_edgehub(network=True): logger("connecting edgehub to network") try: logger(" edgeHub = client.containers.get(EDGEHUB_NAME)") edgeHub = client.containers.get(EDGEHUB_NAME) if network: if EDGEHUB_NAME not in get_network_list(): logger("edge_network.connect(EDGEHUB_NAME)") edge_network.connect(EDGEHUB_NAME) else: # Edge Network alreday contains EdgeHub logger("Note: {} already in IoT Edge Network".format(EDGEHUB_NAME)) else: logger("network=False") while edgeHub.status != "running": logger("edgehub not running") edgeHub.start() logger("Waiting for edgeHub to come back online...") sleep(1) edgeHub = client.containers.get(EDGEHUB_NAME) logger("EXITED WHILE LOOP") if edgeHub.status == "running": logger("~~~~~~~~~~~~~~~~~~edgeHub started~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") logger("sleeping...") sleep(5) logger("done sleeping!") except Exception as e: logger( "THIS IS AN EXCEPTION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) logger("Error: {}".format(sys.exc_info()[0])) raise e def restart_edgehub(hard=False): logger("restarting edgehub") sleep(5) client = docker.from_env() edgeHub = client.containers.get(EDGEHUB_NAME) try: if hard: client = docker.from_env() containerList = list(map(lambda x: x.name, client.containers.list())) for containerName in containerList: if "Mod" or "edgeHub" in containerName: currentContainer = client.containers.get(containerName) currentContainer.restart() while EDGEHUB_NAME not in list( map(lambda x: x.name, client.containers.list()) ): print("waiting for edge daemon to revive edgehub...") sleep(1) print("updating pointer to edgehub container") edgeHub.reload() else: edgeHub.restart() sleep(5) except Exception as e: logger("Error: {}".format(sys.exc_info()[0])) raise e