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.")
Beispiel #3
0
    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.")
Beispiel #5
0
 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)