def stonith_list_available(argv): if len(argv) != 0: filter_string = argv[0] else: filter_string = "" bad_fence_devices = ["kdump_send", "legacy", "na", "nss_wrapper", "pcmk", "vmware_helper", "ack_manual", "virtd"] fence_devices = sorted(glob.glob(utils.fence_bin + "fence_*")) for bfd in bad_fence_devices: try: fence_devices.remove(utils.fence_bin + "fence_"+bfd) except ValueError: continue for fd in fence_devices: if fd.count(filter_string) == 0: continue metadata = utils.get_stonith_metadata(fd) if metadata == False: print >> sys.stderr, "Error: no metadata for %s" % fd continue fd = fd[10:] try: dom = parseString(metadata) except Exception: print >> sys.stderr, "Error: unable to parse metadata for fence agent: %s" % (fd) continue ra = dom.documentElement shortdesc = ra.getAttribute("shortdesc") sd = "" if len(shortdesc) > 0: sd = " - " + resource.format_desc(fd.__len__() + 3, shortdesc) print fd + sd
def stonith_list_options(stonith_agent): metadata = utils.get_stonith_metadata(utils.fence_bin + stonith_agent) if not metadata: utils.err("unable to get metadata for %s" % stonith_agent) try: dom = parseString(metadata) except xml.parsers.expat.ExpatError as e: utils.err("Unable to parse xml for '%s': %s" % (stonith_agent, e)) title = dom.documentElement.getAttribute("name") or stonith_agent short_desc = dom.documentElement.getAttribute("shortdesc") if not short_desc: for sd in dom.documentElement.getElementsByTagName("shortdesc"): if sd.parentNode.tagName == "resource-agent" and sd.firstChild: short_desc = sd.firstChild.data.strip() break long_desc = "" for ld in dom.documentElement.getElementsByTagName("longdesc"): if ld.parentNode.tagName == "resource-agent" and ld.firstChild: long_desc = ld.firstChild.data.strip() break if short_desc: title += " - " + resource.format_desc(len(title + " - "), short_desc) print(title) print() if long_desc: print(long_desc) print() print("Stonith options:") params = dom.documentElement.getElementsByTagName("parameter") for param in params: name = param.getAttribute("name") if param.getAttribute("required") == "1": name += " (required)" desc = "" shortdesc_els = param.getElementsByTagName("shortdesc") if shortdesc_els and shortdesc_els[0].firstChild: desc = shortdesc_els[0].firstChild.nodeValue.strip().replace( "\n", " ") if not desc: desc = "No description available" indent = name.__len__() + 4 desc = resource.format_desc(indent, desc) print(" " + name + ": " + desc) default_stonith_options = utils.get_default_stonith_options() for do in default_stonith_options: name = do.attrib["name"] desc = "" if len(do.findall("shortdesc")) > 0: if do.findall("shortdesc")[0].text: desc = do.findall("shortdesc")[0].text.strip() if not desc: desc = "No description available" indent = len(name) + 4 desc = resource.format_desc(indent, desc) print(" " + name + ": " + desc)
def stonith_list_options(stonith_agent): metadata = utils.get_stonith_metadata(utils.fence_bin + stonith_agent) if not metadata: utils.err("unable to get metadata for %s" % stonith_agent) try: dom = parseString(metadata) except xml.parsers.expat.ExpatError as e: utils.err("Unable to parse xml for '%s': %s" % (stonith_agent, e)) title = dom.documentElement.getAttribute("name") or stonith_agent short_desc = dom.documentElement.getAttribute("shortdesc") if not short_desc: for sd in dom.documentElement.getElementsByTagName("shortdesc"): if sd.parentNode.tagName == "resource-agent" and sd.firstChild: short_desc = sd.firstChild.data.strip() break long_desc = "" for ld in dom.documentElement.getElementsByTagName("longdesc"): if ld.parentNode.tagName == "resource-agent" and ld.firstChild: long_desc = ld.firstChild.data.strip() break if short_desc: title += " - " + resource.format_desc(len(title + " - "), short_desc) print title print if long_desc: print long_desc print print "Stonith options:" params = dom.documentElement.getElementsByTagName("parameter") for param in params: name = param.getAttribute("name") if param.getAttribute("required") == "1": name += " (required)" desc = "" shortdesc_els = param.getElementsByTagName("shortdesc") if shortdesc_els and shortdesc_els[0].firstChild: desc = shortdesc_els[0].firstChild.nodeValue.strip().replace("\n", " ") if not desc: desc = "No description available" indent = name.__len__() + 4 desc = resource.format_desc(indent, desc) print " " + name + ": " + desc default_stonith_options = utils.get_default_stonith_options() for do in default_stonith_options: name = do.attrib["name"] desc = "" if len(do.findall("shortdesc")) > 0: if do.findall("shortdesc")[0].text: desc = do.findall("shortdesc")[0].text.strip() if not desc: desc = "No description available" indent = len(name) + 4 desc = resource.format_desc(indent, desc) print " " + name + ": " + desc
def stonith_list_available(argv): if len(argv) != 0: filter_string = argv[0] else: filter_string = "" bad_fence_devices = [ "kdump_send", "legacy", "na", "nss_wrapper", "pcmk", "vmware_helper", "ack_manual", "virtd", "sanlockd", "check", "tool", "node" ] fence_devices = sorted(glob.glob(utils.fence_bin + "fence_*")) for bfd in bad_fence_devices: try: fence_devices.remove(utils.fence_bin + "fence_" + bfd) except ValueError: continue if not fence_devices: utils.err( "No stonith agents available. Do you have fence agents installed?") fence_devices_filtered = [ fd for fd in fence_devices if filter_string in fd ] if not fence_devices_filtered: utils.err("No stonith agents matching the filter.") for fd in fence_devices_filtered: sd = "" fd_name = fd[10:] if not "--nodesc" in utils.pcs_options: metadata = utils.get_stonith_metadata(fd) if metadata == False: print("Error: no metadata for %s" % fd, file=sys.stderr) continue try: dom = parseString(metadata) except Exception: print("Error: unable to parse metadata for fence agent: %s" % (fd_name), file=sys.stderr) continue ra = dom.documentElement shortdesc = ra.getAttribute("shortdesc") if len(shortdesc) > 0: sd = " - " + resource.format_desc(fd_name.__len__() + 3, shortdesc) print(fd_name + sd)
def stonith_list_available(argv): if len(argv) != 0: filter_string = argv[0] else: filter_string = "" bad_fence_devices = ["kdump_send", "legacy", "na", "nss_wrapper", "pcmk", "vmware_helper", "ack_manual", "virtd", "sanlockd", "check", "tool", "node"] fence_devices = sorted(glob.glob(utils.fence_bin + "fence_*")) for bfd in bad_fence_devices: try: fence_devices.remove(utils.fence_bin + "fence_"+bfd) except ValueError: continue if not fence_devices: utils.err( "No stonith agents available. Do you have fence agents installed?" ) fence_devices_filtered = [fd for fd in fence_devices if filter_string in fd] if not fence_devices_filtered: utils.err("No stonith agents matching the filter.") for fd in fence_devices_filtered: sd = "" fd_name = fd[10:] if not "--nodesc" in utils.pcs_options: metadata = utils.get_stonith_metadata(fd) if metadata == False: utils.err("no metadata for %s" % fd, False) continue try: dom = parseString(metadata) except Exception: utils.err( "unable to parse metadata for fence agent: %s" % (fd_name), False ) continue ra = dom.documentElement shortdesc = ra.getAttribute("shortdesc") if len(shortdesc) > 0: sd = " - " + resource.format_desc(fd_name.__len__() + 3, shortdesc) print(fd_name + sd)
def stonith_create(argv): if len(argv) < 2: usage.stonith(["create"]) sys.exit(1) stonith_id = argv.pop(0) stonith_type = argv.pop(0) st_values, op_values, meta_values = resource.parse_resource_options( argv, with_clone=False ) metadata = utils.get_stonith_metadata("/usr/sbin/" + stonith_type) if metadata: if stonith_does_agent_provide_unfencing(metadata): meta_values = [ meta for meta in meta_values if not meta.startswith("provides=") ] meta_values.append("provides=unfencing") resource.resource_create( stonith_id, "stonith:" + stonith_type, st_values, op_values, meta_values )
def stonith_list_options(stonith_agent): metadata = utils.get_stonith_metadata(utils.fence_bin + stonith_agent) if not metadata: utils.err("unable to get metadata for %s" % stonith_agent) print "Stonith options for: %s" % stonith_agent dom = parseString(metadata) params = dom.documentElement.getElementsByTagName("parameter") for param in params: name = param.getAttribute("name") if param.getAttribute("required") == "1": name += " (required)" desc = param.getElementsByTagName("shortdesc")[0].firstChild.nodeValue.strip().replace("\n", "") indent = name.__len__() + 4 desc = resource.format_desc(indent, desc) print " " + name + ": " + desc default_stonith_options = utils.get_default_stonith_options() for do in default_stonith_options: desc = "No description available" if len(do.findall("shortdesc")) > 0: if do.findall("shortdesc")[0].text: desc = do.findall("shortdesc")[0].text print " " + do.attrib["name"] + ": " + desc