def get_net_adapters(ini_file, verbose=False, quit=True):# {{{ """Returns a list of active net addapters :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) return get_ini_options(ini_file, "net_adapters",verbose=verbose, quit=True)
def get_ini_values(ini_file, section, verbose=False, quit=True):# {{{ """Returns all the values of a section :conf_file: The ini configuration file :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) conf_file=ini_file # Configuration file filename config = SafeConfigParser() config.optionxform = str config.read(conf_file) if not config.has_section(section): amd.err_msg("Inexistent section:", section, exit_code=1) values_list=[] opt_value_items=get_ini_items(ini_file, section) # Converting the list of tuples into a dictionary for better parsing opt_value_dct = dict(opt_value_items) for opt,val in opt_value_dct.items(): values_list.append(val) return values_list
def get_ini_value(ini_file, section, option, verbose=False, quit=True):# {{{ """Retrieves the value of an option :conf_file: The ini configuration file :verbose: Show what is going on :quit: Exit on errr """ pfn(verbose=verbose) conf_file=ini_file # Configuration file filename config = SafeConfigParser() config.optionxform = str config.read(conf_file) if not config.has_section(section): amd.err_msg("Inexistent section:", section, exit_code=1) if not config.has_option(section, option): amd.err_msg("Inexistent option:", option, "in section:", section, "in the file:", ini_file, exit_code=1) value = config.get(section, option) return value
def get_active_vg(ini_file, verbose=False, quit=True):# {{{ """Returns a list of active VGs :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) return get_ini_options(ini_file, "vg_active",verbose=verbose, quit=True)
def get_active_vg_and_major(ini_file, verbose=False, quit=True):# {{{ """Returns a list of of active VGs and their Major Numbers :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) return get_ini_items(ini_file, "vg_active",verbose=verbose, quit=True)
def get_root_homedir(ini_file, verbose=False, quit=True):# {{{ """Returns the :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) root_home=False root_home=get_ini_value(ini_file, "root", "home") return root_home
def get_ame_factor(ini_file, verbose=False, quit=True):# {{{ """Returns the Active Memory Expansion factor :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) ame=False ame=get_ini_value(ini_file, "lparstat", "target memory expansion factor") return ame
def get_gpfs_nsd(ini_file, verbose=False, quit=True):# {{{ """Returns list|False: The NSD list of the gpfs :verbose: Show what is going on :quit: Exit on error """ pfn(verbose=verbose) return get_ini_options(ini_file, "gpfs_nsd_list", verbose=verbose, quit=True)
def get_Major(ini_file, vg, verbose=False, quit=True):# {{{ """Returns a string representing the Major number of the file :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) major=False major=get_ini_value(ini_file, "vg_active", vg) return major
def get_gpfs_manager(ini_file, verbose=False, quit=True):# {{{ """Returns list|False: The ip ddr/hostname of the gpfs manager :verbose: Show what is going on :quit: Exit on error """ pfn(verbose=verbose) return get_ini_options(ini_file, "gpfs_cluster_manager", verbose=verbose, quit=True)
def get_vgid(ini_file, vg, verbose=False, quit=True):# {{{ """Returns a string representing the vgid number of the file :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) vgid=False vgid=get_ini_value(ini_file, "vg_id", vg) return vgid
def get_gpfs_fs_list(ini_file, verbose=False, quit=True):# {{{ """Returns list|False: The NSD list of the gpfs :verbose: Show what is going on :quit: Exit on error =verbose)""" pfn(verbose=verbose) return get_ini_values(ini_file, # "gpfs_mounted_fs", "gpfs_mounted_fs", verbose=verbose, quit=True)
def get_ip_addrs(ini_file, section="net_addapters",verbose=False, quit=True):# {{{ """Returns all the ip addresses :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) ip_addrs_list=[] net_adapters_list=get_net_adapters(ini_file) for adapter in net_adapters_list: ip_addr = get_ini_value(ini_file, "ip_addr", adapter) ip_addrs_list.append(ip_addr) return ip_addrs_list
def get_ame_max_memory(ini_file, verbose=False, quit=True):# {{{ """Returns str: the Maximum Memory in MB :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) max_mem=False max_mem=get_ini_value(ini_file, "lparstat", "maximum memory") if "MB" in max_mem: max_mem=max_mem.split()[0] return max_mem
def get_alias_addrs(ini_file, section="alias_addr",verbose=False, quit=True):# {{{ """Returns all the IP ALIASES :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) ip_alias_list=[] alias_items=get_ini_items(ini_file, section) for item in alias_items: ip_alias_list.append(item[1]) return ip_alias_list
def get_def_routes(ini_file, section="default_route",verbose=False, quit=True):# {{{ """Returns all the Default Routes :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) default_route_list=[] default_route=get_ini_options(ini_file, section) for route in default_route: if route: default_route_list.append(route) return default_route_list
def is_ping_reachabe(hostname,silent=False, verbose=False): # {{{ """Checking if a host is reachable over ping""" pfn(verbose=verbose) if silent: response = os.system("ping -c 1 > /dev/null " + hostname) else: response = os.system("ping -c 1 " + hostname) if response == 0: return True else: return False
def import_vg(vg,major,pv,verbose=False, q=True, activate=True): """Imports a Volume Group from a PV :vg: The vg name: e.g. VGS230BASE :major: The major number used for importing the vg. e.g. 100 :pv: The Phisical Volume name used to import the VG e.g. hdisk12 :v: Verbosity, show what is going on :q: Quit on erorr: True :returns: bools :cmd: importvg -V 100 -y VGS230BASE hdisk5 : examples import_vg("VGS230BASE", "100", "hdisk12") import_vg("VGS230BASE", "100", "hdisk12", verbose=2) :Todo: Implement other importvg specific flags """ pfn(verbose) if verbose: amd.info_cyan_msg("Starting to import the Volume Group") unix_cmd=("/usr/sbin/importvg "\ " -V {} "\ " -y {}"\ " {}"\ ).format(major,vg, pv) if verbose >= 2: print "Debugging:unix_cmd is:{}:".format(unix_cmd) # FOR Debugging p = subprocess.Popen(unix_cmd,\ shell=True, stdout=subprocess.PIPE,\ stderr=subprocess.STDOUT) rc = p.wait() # Unix_cmd has failed if rc!=0: if q: amd.err_msg("Unable to import the vg:", vg, exit_code=1) else: if v: amd.err_msg("Unable to import the vg:", vg,) return False # Unix_cmd executed successfully elif rc==0: if verbose >= 2: amd.ok_msg("VG has been successfully imported:") return True
def get_ame_target_memory(ini_file, verbose=False, quit=True):# {{{ """Returns str: the target Memory Expansion Size MB : This is the actual memory size of the lpar :verbose: Show what is going on :quit: Exit on err """ pfn(verbose=verbose) target_mem=False target_mem=get_ini_value(ini_file, "lparstat", "target memory expansion size") if "MB" in target_mem: target_mem=target_mem.split()[0] return target_mem
def get_ini_sections(ini_file, verbose=False, quit=True):# {{{ """Retrieves the list of sections names :conf_file: The ini configuration file :verbose: Show what is going on :quit: Suppresses output :: TODO """ pfn(verbose=verbose) conf_file=ini_file # Configuration file filename config = SafeConfigParser() config.optionxform = str config.read(conf_file) return config.sections()
def compile_default_route_string(ini_file,verbose=False, quit=True):# {{{ """Compiles default route string #/usr/sbin/chdev -l inet0 -a route=net,-hopcount,0,,,,,,0,$gw :conf_file: The ini configuration file : default : /space/node_ini_lpar :returns: string """ pfn(verbose=verbose) route_list=get_ini_options(ini_file, "default_route") default_route_config_string="" for route in route_list: default_route_config_string +=\ "/usr/sbin/chdev -l inet0 -a route=net,-hopcount,0,,,,,,0,{}\n".\ format(route) return default_route_config_string
def compile_ip_alias_string(ini_file,verbose=False, quit=True):# {{{ """Compiles the ip Alias configuration and returns a string # /usr/sbin/chdev -l en2 -a alias4=164.139.216.14,255.255.255.128 :conf_file: The ini configuration file : default : /space/node_ini_lpar :returns: string """ pfn(verbose=verbose) adapter_list=get_ini_options(ini_file, "alias_addr") alias_config_string="" for adapter in adapter_list: ip = get_ini_value(ini_file, "alias_addr", adapter) mask = get_ini_value(ini_file, "alias_netmask", adapter) alias_config_string +=\ "/usr/sbin/chdev -l {} -a alias4={},{}\n".\ format(adapter, ip, mask) return alias_config_string
def compile_ip_string(ini_file,verbose=False, quit=True):# {{{ """Compiles the ip configuration and returns a string # /usr/sbin/chdev -l $dev -a netaddr=$addr -a netmask=$mask -a state=$state 2>&1) :conf_file: The ini configuration file : default : /space/node_ini_lpar :returns: string """ pfn(verbose=verbose) adapter_list=get_ini_options(ini_file, "ip_addr") ip_config_string="" for adapter in adapter_list: ip = get_ini_value(ini_file, "ip_addr", adapter) mask = get_ini_value(ini_file, "ip_netmask", adapter) ip_config_string +=\ "/usr/sbin/chdev -l {} -a netaddr={} -a netmask={} -a state=up \n".\ format(adapter, ip, mask) return ip_config_string
def get_ini_options(ini_file, section, verbose=False, quit=True):# {{{ """Retrieves the options of a given section name :conf_file: The ini configuration file :verbose: Show what is going on :quit: Exit on errr :returns: list """ pfn(verbose=verbose) conf_file=ini_file # Configuration file filename config = SafeConfigParser() config.optionxform = str config.read(conf_file) if not config.has_section(section): amd.err_msg("Inexistent section:", section, exit_code=1) option_list=config.options(section) return option_list