def cluster_remote_node(argv): if len(argv) < 1: usage.cluster(["remote-node"]) sys.exit(1) command = argv.pop(0) if command == "add": if len(argv) < 2: usage.cluster(["remote-node"]) sys.exit(1) hostname = argv.pop(0) rsc = argv.pop(0) if not utils.is_resource(rsc): utils.err("unable to find resource '%s'", rsc) resource.resource_update(rsc, ["meta", "remote-node="+hostname] + argv) elif command in ["remove","delete"]: if len(argv) < 1: usage.cluster(["remote-node"]) sys.exit(1) hostname = argv.pop(0) dom = utils.get_cib_dom() nvpairs = dom.getElementsByTagName("nvpair") nvpairs_to_remove = [] for nvpair in nvpairs: if nvpair.getAttribute("name") == "remote-node" and nvpair.getAttribute("value") == hostname: for np in nvpair.parentNode.getElementsByTagName("nvpair"): if np.getAttribute("name").startswith("remote-"): nvpairs_to_remove.append(np) for nvpair in nvpairs_to_remove[:]: nvpair.parentNode.removeChild(nvpair) utils.replace_cib_configuration(dom) else: usage.cluster(["remote-node"]) sys.exit(1)
def cluster_remote_node(argv): if len(argv) < 1: usage.cluster(["remote-node"]) sys.exit(1) command = argv.pop(0) if command == "add": if len(argv) < 2: usage.cluster(["remote-node"]) sys.exit(1) hostname = argv.pop(0) rsc = argv.pop(0) if not utils.is_resource(rsc): utils.err("unable to find resource '%s'", rsc) resource.resource_update(rsc, ["meta", "remote-node="+hostname] + argv) elif command == "remove": if len(argv) < 1: usage.cluster(["remote-node"]) sys.exit(1) hostname = argv.pop(0) dom = utils.get_cib_dom() nvpairs = dom.getElementsByTagName("nvpair") nvpairs_to_remove = [] for nvpair in nvpairs: if nvpair.getAttribute("name") == "remote-node" and nvpair.getAttribute("value") == hostname: for np in nvpair.parentNode.getElementsByTagName("nvpair"): if np.getAttribute("name").startswith("remote-"): nvpairs_to_remove.append(np) for nvpair in nvpairs_to_remove[:]: nvpair.parentNode.removeChild(nvpair) utils.replace_cib_configuration(dom) else: usage.cluster(["remote-node"]) sys.exit(1)
def location_rule(argv): if len(argv) < 3: usage.constraint("location rule") sys.exit(1) res_name = argv.pop(0) if not utils.is_resource(res_name) and not utils.is_group(res_name): utils.err("'%s' is not a resource" % res_name) argv.pop(0) cib = utils.get_cib_etree() constraints = cib.find(".//constraints") lc = ET.SubElement(constraints,"rsc_location") lc_id = utils.find_unique_id(cib, "location-" + res_name) lc.set("id", lc_id) lc.set("rsc", res_name) utils.rule_add(lc, argv) utils.replace_cib_configuration(cib)