Ejemplo n.º 1
0
    def get_slivers(xml, filter={}):
        xpath = './default:sliver_type | ./sliver_type'
        sliver_elems = xml.xpath(xpath)
        slivers = []

        for sliver_elem in sliver_elems:
            sliver = Sliver(sliver_elem.attrib, sliver_elem)

            if 'component_id' in xml.attrib:
                sliver['component_id'] = xml.attrib['component_id']
            if 'name' in sliver_elem.attrib:
                sliver['type'] = sliver_elem.attrib['name']
            sliver['disk_image'] = PGv2DiskImage.get_images(sliver_elem)
            sliver['fw_rules'] = PLOSv1FWRule.get_rules(sliver_elem)

            # EXTENSION FOR CLab v1 RSpec
            from sfa.util.sfalogging import logger
            try:
                # Obtain the Complex element sliver_parameters
                # xpath command returns a list. Use '[0]' to get the single element (only one element in the returned list)
                xpath = './clab:sliver_parameters | ./sliver_parameters'
                sliver_parameters_elem = xml.xpath(
                    xpath, namespaces=xml.namespaces)[0]
                sliver_parameters = Clabv1SliverParameters(
                    sliver_parameters_elem.attrib, sliver_parameters_elem)

                # get the template element
                template_elems = sliver_parameters_elem.xpath(
                    './clab:template | ./template', namespaces=xml.namespaces)
                if template_elems:
                    template_elem = template_elems[0]
                    template = dict(template_elem.get_instance(Clabv1Template))
                    sliver['template'] = template
                # get the sliver interfaces element (list of SliverInterface elems)
                #sliver_interfaces_elems = sliver_parameters_elem.xpath('./clab:sliver_interfaces | ./sliver_interfaces', namespaces=xml.namespaces)
                #if sliver_interfaces_elems:
                #    sliver_interfaces_elem = sliver_interfaces_elems[0]
                #    sliver_network_iface_elems = sliver_interfaces_elem.xpath('./clab:network_interface | ./network_interface', namespaces=xml.namespaces)
                #    sliver_network_ifaces = [dict(sliver_network_iface_elem.get_instance(Clabv1NetworkInterface)) for sliver_network_iface_elem in sliver_network_iface_elems]
                #    sliver['sliver_interfaces'] = sliver_network_ifaces

                sliver_network_iface_elems = sliver_parameters_elem.xpath(
                    './clab:network_interface | ./network_interface',
                    namespaces=xml.namespaces)
                if sliver_network_iface_elems:
                    sliver_network_ifaces = [
                        dict(
                            sliver_network_iface_elem.get_instance(
                                Clabv1NetworkInterface)) for
                        sliver_network_iface_elem in sliver_network_iface_elems
                    ]
                    sliver['sliver_interfaces'] = sliver_network_ifaces

            except Exception:
                # there is no element sliver_parameters in the xml
                pass
            slivers.append(sliver)
        return slivers
Ejemplo n.º 2
0
 def get_slivers(xml, filter={}):
     xpath = './default:sliver_type | ./sliver_type'
     sliver_elems = xml.xpath(xpath)
     slivers = []
     
     for sliver_elem in sliver_elems:
         sliver = Sliver(sliver_elem.attrib,sliver_elem)
         
         if 'component_id' in xml.attrib:     
             sliver['component_id'] = xml.attrib['component_id']
         if 'name' in sliver_elem.attrib:
             sliver['type'] = sliver_elem.attrib['name']
         sliver['disk_image'] = PGv2DiskImage.get_images(sliver_elem)
         sliver['fw_rules'] = PLOSv1FWRule.get_rules(sliver_elem)
         
         # EXTENSION FOR CLab v1 RSpec
         from sfa.util.sfalogging import logger
         try:
             # Obtain the Complex element sliver_parameters
             # xpath command returns a list. Use '[0]' to get the single element (only one element in the returned list)
             xpath = './clab:sliver_parameters | ./sliver_parameters'
             sliver_parameters_elem = xml.xpath(xpath, namespaces=xml.namespaces)[0]
             sliver_parameters = Clabv1SliverParameters(sliver_parameters_elem.attrib, sliver_parameters_elem)
        
             # get the template element
             template_elems = sliver_parameters_elem.xpath('./clab:template | ./template', namespaces=xml.namespaces)
             if template_elems:
                 template_elem = template_elems[0]  
                 template = dict(template_elem.get_instance(Clabv1Template))
                 sliver['template'] = template
             # get the overlay element
             overlay_elems = sliver_parameters_elem.xpath('./clab:overlay | ./overlay', namespaces=xml.namespaces)
             if overlay_elems:
                 overlay_elem = overlay_elems[0]  
                 overlay = dict(overlay_elem.get_instance(Clabv1Overlay))
                 sliver['overlay'] = overlay
             # get the sliver interfaces element (list of SliverInterface elems)
             #sliver_interfaces_elems = sliver_parameters_elem.xpath('./clab:sliver_interfaces | ./sliver_interfaces', namespaces=xml.namespaces)
             #if sliver_interfaces_elems:
             #    sliver_interfaces_elem = sliver_interfaces_elems[0]  
             #    sliver_network_iface_elems = sliver_interfaces_elem.xpath('./clab:network_interface | ./network_interface', namespaces=xml.namespaces)
             #    sliver_network_ifaces = [dict(sliver_network_iface_elem.get_instance(Clabv1NetworkInterface)) for sliver_network_iface_elem in sliver_network_iface_elems]
             #    sliver['sliver_interfaces'] = sliver_network_ifaces
                 
             sliver_network_iface_elems = sliver_parameters_elem.xpath('./clab:network_interface | ./network_interface', namespaces=xml.namespaces)
             if sliver_network_iface_elems:
                 sliver_network_ifaces = [dict(sliver_network_iface_elem.get_instance(Clabv1NetworkInterface)) for sliver_network_iface_elem in sliver_network_iface_elems]
                 sliver['sliver_interfaces'] = sliver_network_ifaces
             
         except Exception:
             # there is no element sliver_parameters in the xml
             pass
         slivers.append(sliver)
     return slivers
Ejemplo n.º 3
0
 def get_slivers(xml, filter={}):
     xpath = './default:sliver_type | ./sliver_type'
     sliver_elems = xml.xpath(xpath)
     slivers = []
     for sliver_elem in sliver_elems:
         sliver = Sliver(sliver_elem.attrib,sliver_elem)
         if 'component_id' in xml.attrib:     
             sliver['component_id'] = xml.attrib['component_id']
         if 'name' in sliver_elem.attrib:
             sliver['type'] = sliver_elem.attrib['name']
         sliver['disk_image'] = PGv2DiskImage.get_images(sliver_elem)
         sliver['fw_rules'] = PLOSv1FWRule.get_rules(sliver_elem)
         slivers.append(sliver)
     return slivers
Ejemplo n.º 4
0
 def get_slivers(xml, filter={}):
     xpath = './default:sliver_type | ./sliver_type'
     sliver_elems = xml.xpath(xpath)
     slivers = []
     for sliver_elem in sliver_elems:
         sliver = Sliver(sliver_elem.attrib, sliver_elem)
         if 'component_id' in xml.attrib:
             sliver['component_id'] = xml.attrib['component_id']
         if 'name' in sliver_elem.attrib:
             sliver['type'] = sliver_elem.attrib['name']
         sliver['disk_image'] = PGv2DiskImage.get_images(sliver_elem)
         sliver['fw_rules'] = PLOSv1FWRule.get_rules(sliver_elem)
         slivers.append(sliver)
     return slivers