mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-5883 Convert ovf file to proper format for ESXi
Virtualbox export creates an OVF file that is not compatible with VMware import functions. This causes import errors when the systemvm ova is imported into cloudstack. This patch fixes the issue by using an XSLT transformation to convert the generated ovf into a format this is compatible with vmware. This is a squashed commit Based on the following commits in master:794d47c5f2bf26efc5515d24843ef595a92ad2e3da8ee45a2450054fe06050054fe060ecf57c368a
This commit is contained in:
parent
7c4831df92
commit
28b5d0a9ed
|
|
@ -60,7 +60,7 @@ done
|
|||
vboxmanage modifyhd $hdd_uuid --compact
|
||||
|
||||
# Start exporting
|
||||
rm -fr dist *.ova *.vhd *.vdi *.qcow* *.bz2
|
||||
rm -fr dist *.ova *.vhd *.vdi *.qcow* *.bz2 *.vmdk *.ovf
|
||||
mkdir dist
|
||||
|
||||
# Export for Xen
|
||||
|
|
@ -92,7 +92,11 @@ echo "$appliance exported for KVM: dist/$appliance-$build_date-$branch-kvm.qcow2
|
|||
vboxmanage clonehd $hdd_uuid $appliance-$build_date-$branch-vmware.vmdk --format VMDK
|
||||
bzip2 $appliance-$build_date-$branch-vmware.vmdk
|
||||
echo "$appliance exported for VMWare: dist/$appliance-$build_date-$branch-vmware.vmdk.bz2"
|
||||
vboxmanage export $machine_uuid --output $appliance-$build_date-$branch-vmware.ova
|
||||
vboxmanage export $machine_uuid --output $appliance-$build_date-$branch-vmware.ovf
|
||||
mv $appliance-$build_date-$branch-vmware.ovf $appliance-$build_date-$branch-vmware.ovf-orig
|
||||
java -cp convert Convert convert_ovf_vbox_to_esx.xslt $appliance-$build_date-$branch-vmware.ovf-orig $appliance-$build_date-$branch-vmware.ovf
|
||||
tar -cf $appliance-$build_date-$branch-vmware.ova $appliance-$build_date-$branch-vmware.ovf $appliance-$build_date-$branch-vmware-disk1.vmdk
|
||||
rm -f $appliance-$build_date-$branch-vmware.ovf $appliance-$build_date-$branch-vmware.ovf-orig $appliance-$build_date-$branch-vmware-disk1.vmdk
|
||||
echo "$appliance exported for VMWare: dist/$appliance-$build_date-$branch-vmware.ova"
|
||||
|
||||
# Export for HyperV
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1,34 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
import javax.xml.transform.*;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
public class Convert {
|
||||
public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
|
||||
TransformerFactory factory = TransformerFactory.newInstance();
|
||||
Source xslt = new StreamSource(new File(args[0]));
|
||||
Transformer transformer = factory.newTransformer(xslt);
|
||||
|
||||
Source text = new StreamSource(new File(args[1]));
|
||||
transformer.transform(text, new StreamResult(new File(args[2])));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
<xsl:stylesheet version="1.0" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vbox="http://www.virtualbox.org/ovf/machine">
|
||||
|
||||
<xsl:template match="vssd:VirtualSystemType/text()">vmx-07</xsl:template>
|
||||
|
||||
<xsl:template match="ovf:Item[./rasd:ResourceType/text()=20]">
|
||||
<Item>
|
||||
<xsl:copy-of select="rasd:Address"/>
|
||||
<rasd:Caption>scsiController0</rasd:Caption>
|
||||
<rasd:Description>SCSI Controller</rasd:Description>
|
||||
<rasd:ElementName>scsiController0</rasd:ElementName>
|
||||
<xsl:copy-of select="rasd:InstanceID"/>
|
||||
<rasd:ResourceSubType>lsilogic</rasd:ResourceSubType>
|
||||
<rasd:ResourceType>6</rasd:ResourceType>
|
||||
</Item>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="node()|@*">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="node()|@*"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
Loading…
Reference in New Issue