def generate_ova(self): if self.target_image.target == 'rhevm': klass = RHEVOVFPackage elif self.target_image.target == 'vsphere': klass = VsphereOVFPackage else: raise ImageFactoryException("OVA plugin only support rhevm and vsphere images") klass_parameters = dict() if self.parameters: params = ['ovf_cpu_count','ovf_memory_mb', 'rhevm_default_display_type','rhevm_description','rhevm_os_descriptor', 'vsphere_product_name','vsphere_product_vendor_name','vsphere_product_version'] for param in params: if (self.parameters.get(param) and klass.__init__.func_code.co_varnames.__contains__(param)): klass_parameters[param] = self.parameters.get(param) pkg = klass(disk=self.image.data, base_image=self.base_image.data, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()
def generate_ova(self): if self.target_image.target == 'rhevm': klass = RHEVOVFPackage elif self.target_image.target == 'vsphere': klass = VsphereOVFPackage else: raise ImageFactoryException( "OVA plugin only support rhevm and vsphere images") klass_parameters = dict() if self.parameters: params = [ 'ovf_cpu_count', 'ovf_memory_mb', 'rhevm_default_display_type', 'rhevm_description', 'rhevm_os_descriptor', 'vsphere_product_name', 'vsphere_product_vendor_name', 'vsphere_product_version' ] for param in params: if (self.parameters.get(param) and klass.__init__.func_code.co_varnames.__contains__( param)): klass_parameters[param] = self.parameters.get(param) pkg = klass(disk=self.image.data, base_image=self.base_image.data, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()
def generate_ova(self): if self.target_image.target == 'rhevm': ova_format = self.parameters.get('rhevm_ova_format', 'rhevm') if ova_format == 'rhevm': klass = RHEVOVFPackage elif ova_format == 'vagrant-libvirt': klass = LibvirtVagrantOVFPackage else: raise ImageFactoryException("Unknown rhevm ova_format (%s) requested - must be 'rhevm' or 'libvirt-vagrant'" % (ova_format) ) elif self.target_image.target == 'vsphere': ova_format = self.parameters.get('vsphere_ova_format', 'vsphere') if ova_format == 'vsphere': klass = VsphereOVFPackage elif ova_format == 'vagrant-virtualbox': klass = VirtualBoxOVFPackage elif ova_format == 'vagrant-vmware-fusion': klass = VMWareFusionVagrantOVFPackage else: raise ImageFactoryException("Unknown vsphere ova_format (%s) requested - must be 'vsphere', 'vagrant-virtualbox' or 'vagrant-vmware-fusion'" % (ova_format) ) elif self.target_image.target == 'hyperv': ova_format = self.parameters.get('hyperv_ova_format', 'hyperv-vagrant') if ova_format == 'hyperv-vagrant': klass = HyperVOVFPackage elif ova_format == 'hyperv': klass = HyperVOVFPackage self.parameters['hyperv_vagrant'] = False else: raise ImageFactoryException("Unknown hyperv ova_format (%s) requested - must be 'hyperv-vagrant' or 'hyperv'" % (ova_format) ) else: raise ImageFactoryException("OVA plugin only supports rhevm and vsphere target images") tdl = TDL(xmlstring=self.image.template, rootpw_required=False) if not 'ovf_name' in self.parameters: self.parameters['ovf_name'] = tdl.name klass_parameters = dict() if self.parameters: params = ['ovf_cpu_count','ovf_memory_mb','ovf_name', 'rhevm_default_display_type','rhevm_description','rhevm_os_descriptor', 'vsphere_product_name','vsphere_product_vendor_name','vsphere_product_version', 'vsphere_virtual_system_type', 'vsphere_scsi_controller_type', 'vsphere_network_controller_type', 'vsphere_nested_virt', 'vsphere_cdrom', 'fusion_scsi_controller_type', 'fusion_network_controller_type', 'fusion_nested_virt', 'hyperv_vagrant', 'vagrant_sync_directory'] for param in params: if (self.parameters.get(param) and klass.__init__.func_code.co_varnames.__contains__(param)): klass_parameters[param] = self.parameters.get(param) pkg = klass(disk=self.image.data, base_image=self.base_image, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()
def generate_ova(self): if self.target_image.target == 'rhevm': klass = RHEVOVFPackage elif self.target_image.target == 'vsphere': klass = VsphereOVFPackage else: raise ImageFactoryException("OVA plugin only support rhevm and vsphere images") pkg = klass(disk=self.image.data, base_image=self.base_image.data) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()
def generate_ova(self): if self.target_image.target == 'rhevm': klass = RHEVOVFPackage elif self.target_image.target == 'vsphere': klass = VsphereOVFPackage else: raise ImageFactoryException( "OVA plugin only support rhevm and vsphere images") pkg = klass(disk=self.image.data, base_image=self.base_image.data) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()
def generate_ova(self): if self.target_image.target == 'rhevm': ova_format = self.parameters.get('rhevm_ova_format', 'rhevm') if ova_format == 'rhevm': klass = RHEVOVFPackage elif ova_format == 'vagrant-libvirt': klass = LibvirtVagrantOVFPackage else: raise ImageFactoryException( "Unknown rhevm ova_format (%s) requested - must be 'rhevm' or 'libvirt-vagrant'" % (ova_format)) elif self.target_image.target == 'vsphere': ova_format = self.parameters.get('vsphere_ova_format', 'vsphere') if ova_format == 'vsphere': klass = VsphereOVFPackage elif ova_format == 'vagrant-virtualbox': klass = VirtualBoxOVFPackage else: raise ImageFactoryException( "Unknown vsphere ova_format (%s) requested - must be 'vsphere' or 'virtualbox'" % (ova_format)) else: raise ImageFactoryException( "OVA plugin only supports rhevm and vsphere target images") klass_parameters = dict() if self.parameters: params = [ 'ovf_cpu_count', 'ovf_memory_mb', 'ovf_name', 'rhevm_default_display_type', 'rhevm_description', 'rhevm_os_descriptor', 'vsphere_product_name', 'vsphere_product_vendor_name', 'vsphere_product_version', 'vsphere_virtual_system_type', 'vagrant_sync_directory' ] for param in params: if (self.parameters.get(param) and klass.__init__.func_code.co_varnames.__contains__( param)): klass_parameters[param] = self.parameters.get(param) pkg = klass(disk=self.image.data, base_image=self.base_image, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()
def _generate_ova(self, dst, src, target, parameters=None): """Generate an OVA file from a disk image for some target Arguments: dst: Destination of the .ova file src: Path to a source VM image target: Either rhevm or vsphere params: Additional params to FOO FIXME """ if target == 'rhevm': klass = RHEVOVFPackage # elif target == 'vsphere': # klass = VsphereOVFPackage else: raise RuntimeError("Only supporting rhevm and vsphere images") parameters = parameters or {} parameters["path"] = tempfile.mkdtemp() print(parameters) klass_parameters = dict() if parameters: params = [ 'path', 'ovf_cpu_count', 'ovf_memory_mb', 'rhevm_default_display_type', 'rhevm_description', 'rhevm_os_descriptor', 'vsphere_product_name', 'vsphere_product_vendor_name', 'vsphere_product_version' ] klass_has = lambda x: klass.__init__.__code__.co_varnames.\ __contains__(x) for param in params: if parameters.get(param) and klass_has(param): klass_parameters[param] = parameters.get(param) pkg = klass(disk=src, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, dst) pkg.delete()
def _generate_ova(self, dst, src, target, parameters=None): """Generate an OVA file from a disk image for some target Arguments: dst: Destination of the .ova file src: Path to a source VM image target: Either rhevm or vsphere params: Additional params to FOO FIXME """ if target == 'rhevm': klass = RHEVOVFPackage # elif target == 'vsphere': # klass = VsphereOVFPackage else: raise RuntimeError("Only supporting rhevm and vsphere images") parameters = parameters or {} parameters["path"] = tempfile.mkdtemp() print(parameters) klass_parameters = dict() if parameters: params = ['path', 'ovf_cpu_count', 'ovf_memory_mb', 'rhevm_default_display_type', 'rhevm_description', 'rhevm_os_descriptor', 'vsphere_product_name', 'vsphere_product_vendor_name', 'vsphere_product_version'] klass_has = lambda x: klass.__init__.func_code.co_varnames.\ __contains__(x) for param in params: if parameters.get(param) and klass_has(param): klass_parameters[param] = parameters.get(param) pkg = klass(disk=src, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, dst) pkg.delete()
def generate_ova(self): if self.target_image.target == 'rhevm': ova_format = self.parameters.get('rhevm_ova_format', 'rhevm') if ova_format == 'rhevm': klass = RHEVOVFPackage elif ova_format == 'vagrant-libvirt': klass = LibvirtVagrantOVFPackage else: raise ImageFactoryException("Unknown rhevm ova_format (%s) requested - must be 'rhevm' or 'libvirt-vagrant'" % (ova_format) ) elif self.target_image.target == 'vsphere': ova_format = self.parameters.get('vsphere_ova_format', 'vsphere') if ova_format == 'vsphere': klass = VsphereOVFPackage elif ova_format == 'vagrant-virtualbox': klass = VirtualBoxOVFPackage else: raise ImageFactoryException("Unknown vsphere ova_format (%s) requested - must be 'vsphere' or 'virtualbox'" % (ova_format) ) else: raise ImageFactoryException("OVA plugin only supports rhevm and vsphere target images") klass_parameters = dict() if self.parameters: params = ['ovf_cpu_count','ovf_memory_mb','ovf_name', 'rhevm_default_display_type','rhevm_description','rhevm_os_descriptor', 'vsphere_product_name','vsphere_product_vendor_name','vsphere_product_version', 'vsphere_virtual_system_type', 'vagrant_sync_directory'] for param in params: if (self.parameters.get(param) and klass.__init__.func_code.co_varnames.__contains__(param)): klass_parameters[param] = self.parameters.get(param) pkg = klass(disk=self.image.data, base_image=self.base_image, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()
def copy_disk(self): copyfile_sparse(self.disk.path, self.disk_path)
def copy_disk(self): os.makedirs(os.path.dirname(self.disk_path)) copyfile_sparse(self.disk.path, self.disk_path)
def generate_ova(self): if self.target_image.target == 'rhevm': ova_format = self.parameters.get('rhevm_ova_format', 'rhevm') if ova_format == 'rhevm': klass = RHEVOVFPackage elif ova_format == 'vagrant-libvirt': klass = LibvirtVagrantOVFPackage else: raise ImageFactoryException( "Unknown rhevm ova_format (%s) requested - must be 'rhevm' or 'libvirt-vagrant'" % (ova_format)) elif self.target_image.target == 'vsphere': ova_format = self.parameters.get('vsphere_ova_format', 'vsphere') if ova_format == 'vsphere': klass = VsphereOVFPackage elif ova_format == 'vagrant-virtualbox': klass = VirtualBoxOVFPackage elif ova_format == 'vagrant-vmware-fusion': klass = VMWareFusionVagrantOVFPackage else: raise ImageFactoryException( "Unknown vsphere ova_format (%s) requested - must be 'vsphere', 'vagrant-virtualbox' or 'vagrant-vmware-fusion'" % (ova_format)) elif self.target_image.target == 'hyperv': ova_format = self.parameters.get('hyperv_ova_format', 'hyperv-vagrant') if ova_format == 'hyperv-vagrant': klass = HyperVOVFPackage elif ova_format == 'hyperv': klass = HyperVOVFPackage self.parameters['hyperv_vagrant'] = False else: raise ImageFactoryException( "Unknown hyperv ova_format (%s) requested - must be 'hyperv-vagrant' or 'hyperv'" % (ova_format)) else: raise ImageFactoryException( "OVA plugin only supports rhevm and vsphere target images") tdl = TDL(xmlstring=self.image.template, rootpw_required=False) if not 'ovf_name' in self.parameters: self.parameters['ovf_name'] = tdl.name klass_parameters = dict() if self.parameters: params = [ 'ovf_cpu_count', 'ovf_memory_mb', 'ovf_name', 'rhevm_default_display_type', 'rhevm_description', 'rhevm_os_descriptor', 'vsphere_product_name', 'vsphere_product_vendor_name', 'vsphere_product_version', 'vsphere_virtual_system_type', 'vsphere_scsi_controller_type', 'vsphere_network_controller_type', 'vsphere_nested_virt', 'vsphere_cdrom', 'vsphere_os_type', 'fusion_scsi_controller_type', 'fusion_network_controller_type', 'fusion_nested_virt', 'hyperv_vagrant', 'vagrant_sync_directory' ] for param in params: if (self.parameters.get(param) and klass.__init__.__code__.co_varnames.__contains__( param)): klass_parameters[param] = self.parameters.get(param) pkg = klass(disk=self.image.data, base_image=self.base_image, **klass_parameters) ova = pkg.make_ova_package() copyfile_sparse(ova, self.image.data) pkg.delete()