def __init__(self, input_file, logger_config): """ Init function for the KafkaTopology class Args: input_file - file containing information about kind of hosts on which the failure must be induced , zookeeper paths and zookeeper connection logger_config - configuration for logger Return: None Raise: None """ TopologyBuilder.__init__(self, input_file, logger_config) with open(self.input_file, 'r') as file_descr: doc = yaml.load(file_descr) # Declaring the config variables self.plan = [] self.zookeeper = None self.zookeeper_paths = None self.kafka_host_resolution = None self.resolved_topology = [] # initializing Logger self.logger_instance = Logger(self.logger_config) # Reading from the config for key, val in doc.iteritems(): setattr(self, key, val) # setup the zookeeper client if self.zookeeper: zook = KazooClient(hosts=self.zookeeper.get("host"), read_only=True) zook.start() # read ZK Paths into a dictionary zk_paths = {} if self.zookeeper_paths: for path_type, path in self.zookeeper_paths.items(): zk_paths[path_type] = path # create zk_helper object helper = KafkaZkHelper(zook, zk_paths) self.helper = helper self.generate_plan()
def __init__(self, config, config_dir, output_queue, event_queue, verbose=False, debug=False, logger_instance=None): """ Init function for the atropos class Args: config - A dict containing fate book contents config_dir - Path to config directory output_queue - A multi processing queue to add atropos information event_queue - A multi processing queue to record event status verbose - Verbosity flag debug - debug flag Return: None Raise: None """ self.verbose = verbose self.config = config self.debug = debug self.config_dir = config_dir self.nyx = False self.non_deterministic_schdlr_flag = False self.deterministic_schdlr_flag = False self.logger_instance = None self.failure_in_flight = False # Adding an empty initialization of all the config variables # Config variables self.destiny = None self.logger = None self.logger_file_handle = None self.failures = None self.topology = None self.service = None self.impact_limits = None self.scheduler_plugin = None self.journal = None self.topology_object = None self.healthcheck = None self.output_queue = output_queue self.event_queue = event_queue for key, val in config.iteritems(): setattr(self, key, val) del self.config if logger_instance is None: self.logger_instance = Logger(self.logger) else: self.logger_instance = logger_instance if 'topology_config' in self.topology.keys(): self.topology_config = self.topology['topology_config'] else: self.topology_config = None if 'topology_plugin' in self.topology.keys(): self.topology_plugin = self.topology['topology_plugin'] else: self.topology_plugin = None if self.topology_config is not None: self.topology_config = os.path.join(self.config_dir, self.topology_config) self.populate_topology() self.populate_scheduler_plugin() signal.signal(signal.SIGTERM, self.sigterm_handler) self.main_loop()