def _get_config_value(self, config_file, yaml_name, xml_name): if config_file.endswith(".xml") : xml = parse_xml(urllib.urlopen(config_file)).getroot() return xml.find(xml_name).text elif config_file.endswith(".yaml") : yaml = parse_yaml(urllib.urlopen(config_file)) return yaml[yaml_name] else: raise Exception("Configuration file must be on of xml or yaml")
def _get_config_value(self, config_file, yaml_name, xml_name): if config_file.endswith(".xml"): xml = parse_xml(urllib.urlopen(config_file)).getroot() return xml.find(xml_name).text elif config_file.endswith(".yaml"): yaml = parse_yaml(urllib.urlopen(config_file)) return yaml[yaml_name] else: raise Exception("Configuration file must be on of xml or yaml")
def _modify_config_file(self, instance, config_file, seed_ips, token): # XML (0.6.x) if config_file.endswith(".xml"): remote_file = "storage-conf.xml" xml = parse_xml(urllib.urlopen(config_file)).getroot() # Seeds seeds = xml.find("Seeds") if seeds is not None: while seeds.getchildren(): seeds.remove(seeds.getchildren()[0]) else: seeds = Element("Seeds") xml.append(seeds) for seed_ip in seed_ips: seed = Element("Seed") seed.text = seed_ip seeds.append(seed) # Initial token initial_token = xml.find("InitialToken") if initial_token is None: initial_token = Element("InitialToken") xml.append(initial_token) initial_token.text = token # Logs commit_log_directory = xml.find("CommitLogDirectory") if commit_log_directory is None: commit_log_directory = Element("CommitLogDirectory") xml.append(commit_log_directory) commit_log_directory.text = "/mnt/cassandra-logs" # Data data_file_directories = xml.find("DataFileDirectories") if data_file_directories is not None: while data_file_directories.getchildren(): data_file_directories.remove(data_file_directories.getchildren()[0]) else: data_file_directories = Element("DataFileDirectories") xml.append(data_file_directories) data_file_directory = Element("DataFileDirectory") data_file_directory.text = "/mnt/cassandra-data" data_file_directories.append(data_file_directory) # listen address listen_address = xml.find("ListenAddress") if listen_address is None: listen_address = Element("ListenAddress") xml.append(listen_address) listen_address.text = "" # thrift address thrift_address = xml.find("ThriftAddress") if thrift_address is None: thrift_address = Element("ThriftAddress") xml.append(thrift_address) thrift_address.text = "" fd, temp_file = tempfile.mkstemp(prefix='storage-conf.xml_', text=True) os.write(fd, dump_xml(xml)) os.close(fd) # YAML (0.7.x) elif config_file.endswith(".yaml"): remote_file = "cassandra.yaml" yaml = parse_yaml(urllib.urlopen(config_file)) yaml['seeds'] = seed_ips yaml['initial_token'] = token yaml['data_file_directories'] = ['/mnt/cassandra-data'] yaml['commitlog_directory'] = '/mnt/cassandra-logs' yaml['listen_address'] = str(instance.private_dns_name) yaml['rpc_address'] = str(instance.public_dns_name) fd, temp_file = tempfile.mkstemp(prefix='cassandra.yaml_', text=True) os.write(fd, dump_yaml(yaml)) os.close(fd) else: raise Exception("Configuration file must be one of xml or yaml") return temp_file, remote_file
def _modify_config_file(self, instance, config_file, seed_ips, token): # XML (0.6.x) if config_file.endswith(".xml"): remote_file = "storage-conf.xml" xml = parse_xml(urllib.urlopen(config_file)).getroot() # Seeds seeds = xml.find("Seeds") if seeds is not None: while seeds.getchildren(): seeds.remove(seeds.getchildren()[0]) else: seeds = Element("Seeds") xml.append(seeds) for seed_ip in seed_ips: seed = Element("Seed") seed.text = seed_ip seeds.append(seed) # Initial token initial_token = xml.find("InitialToken") if initial_token is None: initial_token = Element("InitialToken") xml.append(initial_token) initial_token.text = token # Logs commit_log_directory = xml.find("CommitLogDirectory") if commit_log_directory is None: commit_log_directory = Element("CommitLogDirectory") xml.append(commit_log_directory) commit_log_directory.text = "/mnt/cassandra-logs" # Data data_file_directories = xml.find("DataFileDirectories") if data_file_directories is not None: while data_file_directories.getchildren(): data_file_directories.remove( data_file_directories.getchildren()[0]) else: data_file_directories = Element("DataFileDirectories") xml.append(data_file_directories) data_file_directory = Element("DataFileDirectory") data_file_directory.text = "/mnt/cassandra-data" data_file_directories.append(data_file_directory) # listen address listen_address = xml.find("ListenAddress") if listen_address is None: listen_address = Element("ListenAddress") xml.append(listen_address) listen_address.text = "" # thrift address thrift_address = xml.find("ThriftAddress") if thrift_address is None: thrift_address = Element("ThriftAddress") xml.append(thrift_address) thrift_address.text = "" fd, temp_file = tempfile.mkstemp(prefix='storage-conf.xml_', text=True) os.write(fd, dump_xml(xml)) os.close(fd) # YAML (0.7.x) elif config_file.endswith(".yaml"): remote_file = "cassandra.yaml" yaml = parse_yaml(urllib.urlopen(config_file)) yaml['seeds'] = seed_ips yaml['initial_token'] = token yaml['data_file_directories'] = ['/mnt/cassandra-data'] yaml['commitlog_directory'] = '/mnt/cassandra-logs' yaml['listen_address'] = str(instance.private_dns_name) yaml['rpc_address'] = str(instance.public_dns_name) fd, temp_file = tempfile.mkstemp(prefix='cassandra.yaml_', text=True) os.write(fd, dump_yaml(yaml)) os.close(fd) else: raise Exception("Configuration file must be one of xml or yaml") return temp_file, remote_file