def generate(self, pool_period, max_flow_age, threading_mode, shm_size, aeron_lib_path, aeron_term_buffer_length, aeron_ipc_term_buffer_length, bw_emulation=True): number_of_gods = 0 try: number_of_gods = len( docker.APIClient(base_url='unix:/' + DOCKER_SOCK).nodes()) except Exception as e: msg = "DockerComposeFileGenerator.py requires special permissions in order to view cluster state.\n" msg += "please, generate the .yaml file on a manager node." print_error_named("compose_generator", msg) print_and_fail(e) self.print_header() self.print_bootstrapper(number_of_gods, pool_period, max_flow_age, threading_mode, shm_size, aeron_lib_path, aeron_term_buffer_length, aeron_ipc_term_buffer_length, bw_emulation) for service in self.graph.services: self.print_service(self.graph.services[service]) self.print_configs() self.print_networks()
def bootstrap_dashboard(self, container): try: container_id = container.id inspect_result = self.low_level_client.inspect_container(container_id) pid = inspect_result["State"]["Pid"] cmd = ["nsenter", "-t", str(pid), "-n", "/usr/bin/python3", "/usr/bin/KollapsDashboard", TOPOLOGY] dashboard_instance = Popen(cmd) self.instance_count += 1 print_named("god", "Dashboard bootstrapped.") self.already_bootstrapped[container_id] = dashboard_instance except: print_error_named("god", "! failed to bootstrap dashboard.")
def broadcast_flows(self, active_paths): """ :param active_paths: List[NetGraph.Path] :return: """ try: with self.stop_lock: if len(active_paths) > 0: self.produced += self.peer_count for path in active_paths: links = [link.index for link in path.links] self.flow_adding_func(int(path.used_bandwidth), len(links), (c_uint * len(links))(*links)) self.aeron_lib.flush() except Exception as e: print_error_named("broadcast_flows", str(e))
def bootstrap_app_container(self, container): try: container_id = container.id inspect_result = self.low_level_client.inspect_container(container_id) pid = inspect_result["State"]["Pid"] print_named("god", "Bootstrapping " + container.name + " ...") cmd = ["nsenter", "-t", str(pid), "-n", "/usr/bin/python3", "/usr/bin/KollapsEmulationManager", TOPOLOGY, str(container_id), str(pid)] emucore_instance = Popen(cmd) self.instance_count += 1 print_named("god", "Done bootstrapping " + container.name) self.already_bootstrapped[container_id] = emucore_instance except: print_error_named("god", "! App container bootstrapping failed... will try again.")
def bootstrap(self, mode, label, bootstrapper_id): msg = "This is just a super class. I does not know what to do.\n" msg += "Please verify that the code is calling one of the appropriate orchestrator bootstrappers." print_error_named("Bootstrapper", msg)