def get_ovf_os_type(ovf_file): oss = ovf_file.document.getElementsByTagName("OperatingSystemSection") if len(oss) == 0: return 'redhat' # default supported linux os_section = oss[0] for e in Ovf.getDict(os_section)['children']: if e['name'] == u'Description': return e['text'] return 'unknown'
def _get_ovf_vcpu(ovf_file, bound): """ Retrieves the number of virtual CPUs to be allocated for the virtual machine from the Ovf file. """ vcpu = '' virtual_hardware_node = ovf_file.document.getElementsByTagName("VirtualHardwareSection")[0] rasd = Ovf.getDict(virtual_hardware_node)['children'] for resource in rasd: if ('rasd:ResourceType' in resource and resource['rasd:ResourceType'] == '3'): _bound = resource.get('ovf:bound', 'normal') if _bound == bound: vcpu = resource['rasd:VirtualQuantity'] break return vcpu
def _get_ovf_vcpu(ovf_file, bound): """ Retrieves the number of virtual CPUs to be allocated for the virtual machine from the Ovf file. """ vcpu = '' virtual_hardware_node = ovf_file.document.getElementsByTagName( "VirtualHardwareSection")[0] rasd = Ovf.getDict(virtual_hardware_node)['children'] for resource in rasd: if ('rasd:ResourceType' in resource and resource['rasd:ResourceType'] == '3'): _bound = resource.get('ovf:bound', 'normal') if _bound == bound: vcpu = resource['rasd:VirtualQuantity'] break return vcpu
def _get_ovf_memory_gb(ovf_file, bound): """ Retrieves the amount of memory (GB) to be allocated for the virtual machine from the Ovf file. @note: Implementation adopted from module ovf.Ovf @note: DSP0004 v2.5.0 outlines the Programmatic Unit forms for OVF. This pertains specifically to rasd:AllocationUnits, which accepts both the current and deprecated forms. New implementations should not use Unit Qualifiers as this form is deprecated. - PUnit form, as in "byte * 2^20" - PUnit form w/ Units Qualifier(deprecated), as in "MegaBytes" @param ovf_file: Ovf template configuration file @type ovf_file: OvfFile @param bound: memory resource bound: min, max, normal @type bound: String @return: memory in GB or empty string if no information for the given bound is provided. @rtype: String """ memory = '' virtual_hardware_node = ovf_file.document.getElementsByTagName("VirtualHardwareSection")[0] rasd = Ovf.getDict(virtual_hardware_node)['children'] for resource in rasd: if(resource.has_key('rasd:ResourceType') and resource['rasd:ResourceType'] == '4'): memoryQuantity = resource['rasd:VirtualQuantity'] memoryUnits = resource['rasd:AllocationUnits'] _bound = resource.get('ovf:bound', 'normal') if _bound == bound: if (memoryUnits.startswith('byte') or memoryUnits.startswith('bit')): # Calculate PUnit numerical factor memoryUnits = memoryUnits.replace('^', '**') # Determine PUnit Quantifier DMTF DSP0004, {byte, bit} # Convert to kilobytes memoryUnits = memoryUnits.split(' ', 1) quantifier = memoryUnits[0] if quantifier not in ['bit', 'byte']: raise ValueError("Incompatible PUnit quantifier for memory.") else: memoryUnits[0] = '2**-10' if quantifier is 'byte' else '2**-13' memoryUnits = ' '.join(memoryUnits) memoryFactor = int(eval(memoryUnits, {}, {})) else: if memoryUnits.startswith('Kilo'): memoryFactor = 1024 ** 0 elif memoryUnits.startswith('Mega'): memoryFactor = 1024 ** 1 elif memoryUnits.startswith('Giga'): memoryFactor = 1024 ** 2 else: raise ValueError("Incompatible PUnit quantifier for memory.") if memoryUnits.endswith('Bytes'): memoryFactor *= 1 elif memoryUnits.endswith('Bits'): memoryFactor /= 8.0 else: raise ValueError("Incompatible PUnit quantifier for memory.") memory = str(float(memoryQuantity) * memoryFactor / 1024 ** 2) break return memory
def _get_ovf_memory_gb(ovf_file, bound): """ Retrieves the amount of memory (GB) to be allocated for the virtual machine from the Ovf file. @note: Implementation adopted from module ovf.Ovf @note: DSP0004 v2.5.0 outlines the Programmatic Unit forms for OVF. This pertains specifically to rasd:AllocationUnits, which accepts both the current and deprecated forms. New implementations should not use Unit Qualifiers as this form is deprecated. - PUnit form, as in "byte * 2^20" - PUnit form w/ Units Qualifier(deprecated), as in "MegaBytes" @param ovf_file: Ovf template configuration file @type ovf_file: OvfFile @param bound: memory resource bound: min, max, normal @type bound: String @return: memory in GB or empty string if no information for the given bound is provided. @rtype: String """ memory = '' virtual_hardware_node = ovf_file.document.getElementsByTagName( "VirtualHardwareSection")[0] rasd = Ovf.getDict(virtual_hardware_node)['children'] for resource in rasd: if (resource.has_key('rasd:ResourceType') and resource['rasd:ResourceType'] == '4'): memoryQuantity = resource['rasd:VirtualQuantity'] memoryUnits = resource['rasd:AllocationUnits'] _bound = resource.get('ovf:bound', 'normal') if _bound == bound: if (memoryUnits.startswith('byte') or memoryUnits.startswith('bit')): # Calculate PUnit numerical factor memoryUnits = memoryUnits.replace('^', '**') # Determine PUnit Quantifier DMTF DSP0004, {byte, bit} # Convert to kilobytes memoryUnits = memoryUnits.split(' ', 1) quantifier = memoryUnits[0] if quantifier not in ['bit', 'byte']: raise ValueError( "Incompatible PUnit quantifier for memory.") else: memoryUnits[ 0] = '2**-10' if quantifier is 'byte' else '2**-13' memoryUnits = ' '.join(memoryUnits) memoryFactor = int(eval(memoryUnits, {}, {})) else: if memoryUnits.startswith('Kilo'): memoryFactor = 1024**0 elif memoryUnits.startswith('Mega'): memoryFactor = 1024**1 elif memoryUnits.startswith('Giga'): memoryFactor = 1024**2 else: raise ValueError( "Incompatible PUnit quantifier for memory.") if memoryUnits.endswith('Bytes'): memoryFactor *= 1 elif memoryUnits.endswith('Bits'): memoryFactor /= 8.0 else: raise ValueError( "Incompatible PUnit quantifier for memory.") memory = str(float(memoryQuantity) * memoryFactor / 1024**2) break return memory