本文整理汇总了Python中utils.get_cib_dom函数的典型用法代码示例。如果您正苦于以下问题:Python get_cib_dom函数的具体用法?Python get_cib_dom怎么用?Python get_cib_dom使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_cib_dom函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: location_rule
def location_rule(argv):
if len(argv) < 3:
usage.constraint("location rule")
sys.exit(1)
res_name = argv.pop(0)
resource_valid, resource_error = utils.validate_constraint_resource(
utils.get_cib_dom(), res_name
)
if not resource_valid:
utils.err(resource_error)
argv.pop(0)
cib = utils.get_cib_dom()
constraints = cib.getElementsByTagName("constraints")[0]
lc = cib.createElement("rsc_location")
constraints.appendChild(lc)
lc_id = utils.find_unique_id(cib, "location-" + res_name)
lc.setAttribute("id", lc_id)
lc.setAttribute("rsc", res_name)
rule_utils.dom_rule_add(lc, argv)
utils.replace_cib_configuration(cib)
示例2: location_rule
def location_rule(argv):
if len(argv) < 3:
usage.constraint(["location", "rule"])
sys.exit(1)
res_name = argv.pop(0)
resource_valid, resource_error, correct_id \
= utils.validate_constraint_resource(utils.get_cib_dom(), res_name)
if "--autocorrect" in utils.pcs_options and correct_id:
res_name = correct_id
elif not resource_valid:
utils.err(resource_error)
argv.pop(0) # pop "rule"
options, rule_argv = rule_utils.parse_argv(argv, {"constraint-id": None, "resource-discovery": None,})
# If resource-discovery is specified, we use it with the rsc_location
# element not the rule
if "resource-discovery" in options and options["resource-discovery"]:
utils.checkAndUpgradeCIB(2,2,0)
cib, constraints = getCurrentConstraints(utils.get_cib_dom())
lc = cib.createElement("rsc_location")
lc.setAttribute("resource-discovery", options.pop("resource-discovery"))
else:
cib, constraints = getCurrentConstraints(utils.get_cib_dom())
lc = cib.createElement("rsc_location")
constraints.appendChild(lc)
if options.get("constraint-id"):
id_valid, id_error = utils.validate_xml_id(
options["constraint-id"], 'constraint id'
)
if not id_valid:
utils.err(id_error)
if utils.does_id_exist(cib, options["constraint-id"]):
utils.err(
"id '%s' is already in use, please specify another one"
% options["constraint-id"]
)
lc.setAttribute("id", options["constraint-id"])
del options["constraint-id"]
else:
lc.setAttribute("id", utils.find_unique_id(cib, "location-" + res_name))
lc.setAttribute("rsc", res_name)
rule_utils.dom_rule_add(lc, options, rule_argv)
location_rule_check_duplicates(constraints, lc)
utils.replace_cib_configuration(cib)
示例3: resource_master_remove
def resource_master_remove(argv):
if len(argv) < 1:
usage.resource()
sys.exit(1)
dom = utils.get_cib_dom()
master_id = argv.pop(0)
master_found = False
# Check to see if there's a resource/group with the master_id if so, we remove the parent
for rg in (dom.getElementsByTagName("primitive") + dom.getElementsByTagName("group")):
if rg.getAttribute("id") == master_id and rg.parentNode.tagName == "master":
master_id = rg.parentNode.getAttribute("id")
resources_to_cleanup = []
for master in dom.getElementsByTagName("master"):
if master.getAttribute("id") == master_id:
childNodes = master.getElementsByTagName("primitive")
for child in childNodes:
resources_to_cleanup.append(child.getAttribute("id"))
master_found = True
break
if not master_found:
print "Error: Unable to find multi-state resource with id %s" % master_id
sys.exit(1)
master.parentNode.removeChild(master)
utils.replace_cib_configuration(dom)
if (not utils.usefile):
for r in resources_to_cleanup:
args = ["crm_resource","-C","-r",r]
cmdoutput, retVal = utils.run(args)
示例4: stonith_level_show
def stonith_level_show():
dom = utils.get_cib_dom()
node_levels = {}
fls = dom.getElementsByTagName("fencing-level")
for fl in fls:
node = fl.getAttribute("target")
level = fl.getAttribute("index")
devices = fl.getAttribute("devices")
if node in node_levels:
node_levels[node].append((level,devices))
else:
node_levels[node] = [(level,devices)]
if len(node_levels.keys()) == 0:
return
nodes = node_levels.keys()
nodes.sort()
for node in nodes:
print " Node: " + node
node_levels[node].sort()
for level in node_levels[node]:
print " Level " + level[0] + " - " + level[1]
示例5: constraint_resource_update
def constraint_resource_update(old_id, passed_dom=None):
dom = utils.get_cib_dom() if passed_dom is None else passed_dom
resources = dom.getElementsByTagName("primitive")
found_resource = None
for res in resources:
if res.getAttribute("id") == old_id:
found_resource = res
break
new_id = None
if found_resource:
if found_resource.parentNode.tagName == "master" or found_resource.parentNode.tagName == "clone":
new_id = found_resource.parentNode.getAttribute("id")
if new_id:
constraints = dom.getElementsByTagName("rsc_location")
constraints += dom.getElementsByTagName("rsc_order")
constraints += dom.getElementsByTagName("rsc_colocation")
attrs_to_update=["rsc","first","then", "with-rsc"]
for constraint in constraints:
for attr in attrs_to_update:
if constraint.getAttribute(attr) == old_id:
constraint.setAttribute(attr, new_id)
if passed_dom is None:
utils.replace_cib_configuration(dom)
if passed_dom:
return dom
示例6: find_constraints_containing
def find_constraints_containing(resource_id):
dom = utils.get_cib_dom()
constraints_found = []
resources = dom.getElementsByTagName("primitive")
resource_match = None
for res in resources:
if res.getAttribute("id") == resource_id:
resource_match = res
break
if resource_match:
if resource_match.parentNode.tagName == "master" or resource_match.parentNode.tagName == "clone":
constraints_found = find_constraints_containing(resource_match.parentNode.getAttribute("id"))
constraints = dom.getElementsByTagName("constraints")
if len(constraints) == 0:
return []
else:
constraints = constraints[0]
myConstraints = constraints.getElementsByTagName("rsc_colocation")
myConstraints += constraints.getElementsByTagName("rsc_location")
myConstraints += constraints.getElementsByTagName("rsc_order")
attr_to_match = ["rsc", "first", "then", "with-rsc", "first", "then"]
for c in myConstraints:
for attr in attr_to_match:
if c.getAttribute(attr) == resource_id:
constraints_found.append(c.getAttribute("id"))
break
return constraints_found
示例7: stonith_level_add
def stonith_level_add(level, node, devices):
dom = utils.get_cib_dom()
if not "--force" in utils.pcs_options:
for dev in devices.split(","):
if not utils.is_stonith_resource(dev):
utils.err("%s is not a stonith id (use --force to override)" % dev)
if not utils.is_pacemaker_node(node) and not utils.is_corosync_node(node):
utils.err("%s is not currently a node (use --force to override)" % node)
ft = dom.getElementsByTagName("fencing-topology")
if len(ft) == 0:
conf = dom.getElementsByTagName("configuration")[0]
ft = dom.createElement("fencing-topology")
conf.appendChild(ft)
else:
ft = ft[0]
fls = ft.getElementsByTagName("fencing-level")
for fl in fls:
if fl.getAttribute("target") == node and fl.getAttribute("index") == level and fl.getAttribute("devices") == devices:
utils.err("unable to add fencing level, fencing level for node: %s, at level: %s, with device: %s already exists" % (node,level,devices))
new_fl = dom.createElement("fencing-level")
ft.appendChild(new_fl)
new_fl.setAttribute("target", node)
new_fl.setAttribute("index", level)
new_fl.setAttribute("devices", devices)
new_fl.setAttribute("id", utils.find_unique_id(dom, "fl-" + node +"-" + level))
utils.replace_cib_configuration(dom)
示例8: acl_permission
def acl_permission(argv):
if len(argv) < 1:
usage.acl("permission")
sys.exit(1)
dom = utils.get_cib_dom()
dom, acls = get_acls(dom)
command = argv.pop(0)
if command == "add":
if len(argv) < 4:
usage.acl("permission add")
sys.exit(1)
role_id = argv.pop(0)
found = False
for role in dom.getElementsByTagName("acl_role"):
if role.getAttribute("id") == role_id:
found = True
break
if found == False:
acl_role(["create", role_id] + argv)
return
while len(argv) >= 3:
kind = argv.pop(0)
se = dom.createElement("acl_permission")
se.setAttribute("id", utils.find_unique_id(dom, role_id + "-" + kind))
se.setAttribute("kind", kind)
xp_id = argv.pop(0)
if xp_id == "xpath":
xpath_query = argv.pop(0)
se.setAttribute("xpath",xpath_query)
elif xp_id == "id":
acl_ref = argv.pop(0)
se.setAttribute("reference",acl_ref)
else:
usage.acl("permission add")
role.appendChild(se)
utils.replace_cib_configuration(dom)
elif command == "delete":
if len(argv) < 1:
usage.acl("permission delete")
sys.exit(1)
perm_id = argv.pop(0)
found = False
for elem in dom.getElementsByTagName("acl_permission"):
if elem.getAttribute("id") == perm_id:
elem.parentNode.removeChild(elem)
found = True
if not found:
utils.err("Unable to find permission with id: %s" % perm_id)
utils.replace_cib_configuration(dom)
else:
usage.acl("permission")
sys.exit(1)
示例9: constraint_rule
def constraint_rule(argv):
if len(argv) < 2:
usage.constraint("rule")
sys.exit(1)
found = False
command = argv.pop(0)
constraint_id = None
rule_id = None
if command == "add":
constraint_id = argv.pop(0)
cib = utils.get_cib_dom()
constraint = utils.dom_get_element_with_id(
cib.getElementsByTagName("constraints")[0],
"rsc_location",
constraint_id
)
if not constraint:
utils.err("Unable to find constraint: " + constraint_id)
options, rule_argv = rule_utils.parse_argv(argv)
rule_utils.dom_rule_add(constraint, options, rule_argv)
location_rule_check_duplicates(cib, constraint)
utils.replace_cib_configuration(cib)
elif command in ["remove","delete"]:
cib = utils.get_cib_etree()
temp_id = argv.pop(0)
constraints = cib.find('.//constraints')
loc_cons = cib.findall(str('.//rsc_location'))
rules = cib.findall(str('.//rule'))
for loc_con in loc_cons:
for rule in loc_con:
if rule.get("id") == temp_id:
if len(loc_con) > 1:
print("Removing Rule: {0}".format(rule.get("id")))
loc_con.remove(rule)
found = True
break
else:
print(
"Removing Constraint: {0}".format(loc_con.get("id"))
)
constraints.remove(loc_con)
found = True
break
if found == True:
break
if found:
utils.replace_cib_configuration(cib)
else:
utils.err("unable to find rule with id: %s" % temp_id)
else:
usage.constraint("rule")
sys.exit(1)
示例10: cluster_remote_node
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)
示例11: resource_clone_remove
def resource_clone_remove(argv):
if len(argv) != 1:
usage.resource()
sys.exit(1)
name = argv.pop()
dom = utils.get_cib_dom()
re = dom.documentElement.getElementsByTagName("resources")[0]
found = False
for res in re.getElementsByTagName("primitive") + re.getElementsByTagName("group"):
if res.getAttribute("id") == name:
clone = res.parentNode
if clone.tagName != "clone":
print "Error: %s is not in a clone" % name
sys.exit(1)
clone.parentNode.appendChild(res)
clone.parentNode.removeChild(clone)
found = True
break
if found == False:
print "Error: could not find resource or group: %s" % name
sys.exit(1)
xml_resource_string = re.toxml()
args = ["cibadmin", "-o", "resources", "-R", "-X", xml_resource_string]
output, retval = utils.run(args)
if retval != 0:
print output
sys.exit(1)
示例12: constraint_resource_update
def constraint_resource_update(old_id):
dom = utils.get_cib_dom()
resources = dom.getElementsByTagName("primitive")
found_resource = None
for res in resources:
if res.getAttribute("id") == old_id:
found_resource = res
break
new_id = None
if found_resource:
if found_resource.parentNode.tagName == "master" or found_resource.parentNode.tagName == "clone":
new_id = found_resource.parentNode.getAttribute("id")
if new_id:
constraints = dom.getElementsByTagName("rsc_location")
constraints += dom.getElementsByTagName("rsc_order")
constraints += dom.getElementsByTagName("rsc_colocation")
attrs_to_update=["rsc","first","then", "with-rsc"]
for constraint in constraints:
for attr in attrs_to_update:
if constraint.getAttribute(attr) == old_id:
constraint.setAttribute(attr, new_id)
update = dom.getElementsByTagName("constraints")[0].toxml()
output, retval = utils.run(["cibadmin", "--replace", "-o", "constraints", "-X", update])
示例13: print_node_utilization
def print_node_utilization(node):
cib = utils.get_cib_dom()
node_el = utils.dom_get_node(cib, node)
if node_el is None:
utils.err("Unable to find a node: {0}".format(node))
utilization = utils.get_utilization_str(node_el)
print("Node Utilization:")
print(" {0}: {1}".format(node, utilization))
示例14: stonith_cmd
def stonith_cmd(argv):
if len(argv) == 0:
argv = ["show"]
sub_cmd = argv.pop(0)
if (sub_cmd == "help"):
usage.stonith(argv)
elif (sub_cmd == "list"):
stonith_list_available(argv)
elif (sub_cmd == "describe"):
if len(argv) == 1:
stonith_list_options(argv[0])
else:
usage.stonith()
sys.exit(1)
elif (sub_cmd == "create"):
if len(argv) < 2:
usage.stonith()
sys.exit(1)
stn_id = argv.pop(0)
stn_type = "stonith:"+argv.pop(0)
st_values, op_values, meta_values = resource.parse_resource_options(
argv, with_clone=False
)
resource.resource_create(stn_id, stn_type, st_values, op_values, meta_values)
elif (sub_cmd == "update"):
stn_id = argv.pop(0)
resource.resource_update(stn_id,argv)
elif (sub_cmd == "delete"):
if len(argv) == 1:
stn_id = argv.pop(0)
utils.replace_cib_configuration(
stonith_level_rm_device(utils.get_cib_dom(), stn_id)
)
resource.resource_remove(stn_id)
else:
usage.stonith(["delete"])
sys.exit(1)
elif (sub_cmd == "show"):
resource.resource_show(argv, True)
stonith_level([])
elif (sub_cmd == "level"):
stonith_level(argv)
elif (sub_cmd == "fence"):
stonith_fence(argv)
elif (sub_cmd == "cleanup"):
if len(argv) == 0:
resource.resource_cleanup_all()
else:
res_id = argv.pop(0)
resource.resource_cleanup(res_id)
elif (sub_cmd == "confirm"):
stonith_confirm(argv)
else:
usage.stonith()
sys.exit(1)
示例15: set_node_utilization
def set_node_utilization(node, argv):
cib = utils.get_cib_dom()
node_el = utils.dom_get_node(cib, node)
if node_el is None:
utils.err("Unable to find a node: {0}".format(node))
utils.dom_update_utilization(
node_el, utils.convert_args_to_tuples(argv), "nodes-"
)
utils.replace_cib_configuration(cib)