Example #1
0
    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()
Example #2
0
    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()
Example #3
0
    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()
Example #4
0
    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()
Example #5
0
    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()
Example #6
0
    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()
Example #7
0
    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()
Example #9
0
    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()
Example #10
0
 def copy_disk(self):
     copyfile_sparse(self.disk.path, self.disk_path)
Example #11
0
 def copy_disk(self):
     os.makedirs(os.path.dirname(self.disk_path))
     copyfile_sparse(self.disk.path, self.disk_path)
Example #12
0
    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()