def remove_slivers(xml, hostnames): for hostname in hostnames: nodes = PGv2Node.get_nodes(xml, {'component_id': '*%s*' % hostname}) for node in nodes: slivers = PGv2SliverType.get_slivers(node.element) for sliver in slivers: node.element.remove(sliver.element)
def get_node_objs(node_elems): nodes = [] for node_elem in node_elems: node = Node(node_elem.attrib, node_elem) nodes.append(node) if "component_id" in node_elem.attrib: node["authority_id"] = Xrn(node_elem.attrib["component_id"]).get_authority_urn() # get hardware types hardware_type_elems = node_elem.xpath("./default:hardware_type | ./hardware_type") node["hardware_types"] = [hw_type.get_instance(HardwareType) for hw_type in hardware_type_elems] # get location location_elems = node_elem.xpath("./default:location | ./location") locations = [location_elem.get_instance(Location) for location_elem in location_elems] if len(locations) > 0: node["location"] = locations[0] # get interfaces iface_elems = node_elem.xpath("./default:interface | ./interface") node["interfaces"] = [iface_elem.get_instance(Interface) for iface_elem in iface_elems] # get services node["services"] = PGv2Services.get_services(node_elem) # get slivers node["slivers"] = PGv2SliverType.get_slivers(node_elem) available_elems = node_elem.xpath("./default:available | ./available") if len(available_elems) > 0 and "name" in available_elems[0].attrib: if available_elems[0].attrib.get("now", "").lower() == "true": node["boot_state"] = "boot" else: node["boot_state"] = "disabled" return nodes
def get_node_objs(node_elems): nodes = [] for node_elem in node_elems: node = NodeElement(node_elem.attrib, node_elem) nodes.append(node) if 'component_id' in node_elem.attrib: node['authority_id'] = Xrn(node_elem.attrib['component_id']).get_authority_urn() # get hardware types hardware_type_elems = node_elem.xpath('./default:hardware_type | ./hardware_type') node['hardware_types'] = [dict(hw_type.get_instance(HardwareType)) for hw_type in hardware_type_elems] # get location location_elems = node_elem.xpath('./default:location | ./location') locations = [dict(location_elem.get_instance(Location)) for location_elem in location_elems] if len(locations) > 0: node['location'] = locations[0] # get granularity granularity_elems = node_elem.xpath('./default:granularity | ./granularity') if len(granularity_elems) > 0: node['granularity'] = granularity_elems[0].get_instance(Granularity) # get interfaces iface_elems = node_elem.xpath('./default:interface | ./interface') node['interfaces'] = [dict(iface_elem.get_instance(Interface)) for iface_elem in iface_elems] # get services node['services'] = PGv2Services.get_services(node_elem) # get slivers node['slivers'] = PGv2SliverType.get_slivers(node_elem) # get boot state available_elems = node_elem.xpath('./default:available | ./available') if len(available_elems) > 0 and 'now' in available_elems[0].attrib: if available_elems[0].attrib.get('now', '').lower() == 'true': node['boot_state'] = 'boot' else: node['boot_state'] = 'disabled' # get initscripts try: node['pl_initscripts'] = [] initscript_elems = node_elem.xpath('./default:sliver_type/planetlab:initscript | ./sliver_type/initscript') if len(initscript_elems) > 0: for initscript_elem in initscript_elems: if 'name' in initscript_elem.attrib: node['pl_initscripts'].append(dict(initscript_elem.attrib)) except: pass # get node tags try: tag_elems = node_elem.xpath('./planetlab:attribute | ./attribute') node['tags'] = [] if len(tag_elems) > 0: for tag_elem in tag_elems: tag = dict(tag_elem.get_instance(Attribute)) tag['tagname'] = tag.pop('name') node['tags'].append(tag) except: pass return nodes
def get_node_objs(node_elems): nodes = [] for node_elem in node_elems: node = NodeElement(node_elem.attrib, node_elem) nodes.append(node) if 'component_id' in node_elem.attrib: node['authority_id'] = Xrn( node_elem.attrib['component_id']).get_authority_urn() # get hardware types hardware_type_elems = node_elem.xpath( './default:hardware_type | ./hardware_type') node['hardware_types'] = [ dict(hw_type.get_instance(HardwareType)) for hw_type in hardware_type_elems ] # get location location_elems = node_elem.xpath('./default:location | ./location') locations = [ dict(location_elem.get_instance(Location)) for location_elem in location_elems ] if len(locations) > 0: node['location'] = locations[0] # get granularity granularity_elems = node_elem.xpath( './default:granularity | ./granularity') if len(granularity_elems) > 0: node['granularity'] = granularity_elems[0].get_instance( Granularity) # get interfaces iface_elems = node_elem.xpath('./default:interface | ./interface') node['interfaces'] = [ dict(iface_elem.get_instance(Interface)) for iface_elem in iface_elems ] # get services node['services'] = PGv2Services.get_services(node_elem) # get slivers node['slivers'] = PGv2SliverType.get_slivers(node_elem) # get boot state available_elems = node_elem.xpath( './default:available | ./available') if len(available_elems) > 0 and 'now' in available_elems[0].attrib: if available_elems[0].attrib.get('now', '').lower() == 'true': node['boot_state'] = 'boot' else: node['boot_state'] = 'disabled' # get initscripts try: node['pl_initscripts'] = [] initscript_elems = node_elem.xpath( './default:sliver_type/planetlab:initscript | ./sliver_type/initscript' ) if len(initscript_elems) > 0: for initscript_elem in initscript_elems: if 'name' in initscript_elem.attrib: node['pl_initscripts'].append( dict(initscript_elem.attrib)) except: pass # get node tags try: tag_elems = node_elem.xpath( './planetlab:attribute | ./attribute') node['tags'] = [] if len(tag_elems) > 0: for tag_elem in tag_elems: tag = dict(tag_elem.get_instance(Attribute)) tag['tagname'] = tag.pop('name') node['tags'].append(tag) except: pass return nodes