From 39bb800f16afd077c3e7d930450bf327a6d895db Mon Sep 17 00:00:00 2001 From: Alex Crawford Date: Tue, 26 May 2015 16:27:47 -0700 Subject: [PATCH 1/2] build_library: set osType to otherlinux-64 --- build_library/template.ovf | 2 +- build_library/vm_image_util.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build_library/template.ovf b/build_library/template.ovf index c7912434bb..08f1653c07 100644 --- a/build_library/template.ovf +++ b/build_library/template.ovf @@ -16,7 +16,7 @@ A virtual machine @@NAME@@ - + The kind of installed guest operating system diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index 7f7ba4b852..8f76098545 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -682,7 +682,7 @@ ethernet0.addressType = "generated" ethernet0.present = "TRUE" ethernet0.virtualDev = "vmxnet3" floppy0.present = "FALSE" -guestOS = "other26xlinux-64" +guestOS = "otherlinux-64" memsize = "${vm_mem}" powerType.powerOff = "soft" powerType.powerOn = "hard" From ebb1ad586f6dea6270a637d98e79e48db64436e6 Mon Sep 17 00:00:00 2001 From: Alex Crawford Date: Tue, 26 May 2015 18:15:58 -0700 Subject: [PATCH 2/2] build_library: add support for VMware OVF This moves the functionality of mkova.sh (within the SDK) directly into the build library. --- .../{template.ovf => template_vmware.ovf} | 2 +- build_library/vm_image_util.sh | 47 +++++++++++++++---- 2 files changed, 40 insertions(+), 9 deletions(-) rename build_library/{template.ovf => template_vmware.ovf} (98%) diff --git a/build_library/template.ovf b/build_library/template_vmware.ovf similarity index 98% rename from build_library/template.ovf rename to build_library/template_vmware.ovf index 08f1653c07..4d3bbb7e82 100644 --- a/build_library/template.ovf +++ b/build_library/template_vmware.ovf @@ -1,7 +1,7 @@ - + Virtual disk information diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index 8f76098545..a2ccab1f37 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -108,6 +108,9 @@ IMG_DEFAULT_BUNDLE_FORMAT= # Memory size to use in any config files IMG_DEFAULT_MEM=1024 +# Number of CPUs to use in any config files +IMG_DEFAULT_CPUS=2 + ## qemu IMG_qemu_DISK_FORMAT=qcow2 IMG_qemu_DISK_LAYOUT=vm @@ -133,7 +136,7 @@ IMG_xen_CONF_FORMAT=xl ## virtualbox IMG_virtualbox_DISK_FORMAT=vmdk_ide IMG_virtualbox_DISK_LAYOUT=vm -IMG_virtualbox_CONF_FORMAT=ovf +IMG_virtualbox_CONF_FORMAT=ovf_virtualbox ## vagrant IMG_vagrant_FS_HOOK=box @@ -158,9 +161,10 @@ IMG_vmware_CONF_FORMAT=vmx IMG_vmware_OEM_PACKAGE=oem-vmware ## vmware -IMG_vmware_ova_DISK_FORMAT=vmdk_scsi +IMG_vmware_ova_DISK_FORMAT=vmdk_stream IMG_vmware_ova_DISK_LAYOUT=vm IMG_vmware_ova_OEM_PACKAGE=oem-vmware +IMG_vmware_ova_CONF_FORMAT=ovf_vmware IMG_vmware_ova_BUNDLE_FORMAT=ova ## vmware_insecure @@ -822,7 +826,7 @@ EOF VM_GENERATED_FILES+=( "${pygrub}" "${pvgrub}" "${VM_README}" ) } -_write_ovf_conf() { +_write_ovf_virtualbox_conf() { local vm_mem="${1:-$(_get_vm_opt MEM)}" local src_name=$(basename "$VM_SRC_IMG") local dst_name=$(basename "$VM_DST_IMG") @@ -888,8 +892,7 @@ _write_niftycloud_conf() { local vm_mem="${1:-$(_get_vm_opt MEM)}" local src_name=$(basename "$VM_SRC_IMG") local dst_name=$(basename "$VM_DST_IMG") - local dst_dir=$(dirname "$VM_DST_IMG") - local ovf="${dst_dir}/$(_src_to_dst_name "${src_name}" ".ovf")" + local ovf="$(_dst_dir)/$(_src_to_dst_name "${src_name}" ".ovf")" "${BUILD_LIBRARY_DIR}/niftycloud_ovf.sh" \ --vm_name "$VM_NAME" \ @@ -905,6 +908,24 @@ EOF VM_GENERATED_FILES+=( "$ovf" ) } +_write_ovf_vmware_conf() { + local vm_mem="${1:-$(_get_vm_opt MEM)}" + local vm_cpus="$(_get_vm_opt CPUS)" + local vmdk_file_size=$(du --bytes "${VM_DST_IMG}" | cut -f1) + local vmdk_capacity=$(vmdk-convert -i "${VM_DST_IMG}" | jq .capacity) + local ovf="$(_dst_path ".ovf")" + + sed "${BUILD_LIBRARY_DIR}/template_vmware.ovf" \ + -e "s/@@NAME@@/$(_dst_name)/g" \ + -e "s/@@VMDK_FILE_SIZE@@/${vmdk_file_size}/g" \ + -e "s/@@VMDK_CAPACITY@@/${vmdk_capacity}/g" \ + -e "s/@@NUM_CPUS@@/${vm_cpus}/g" \ + -e "s/@@MEM_SIZE@@/${vm_mem}/g" \ + > "${ovf}" + + VM_GENERATED_FILES+=( "$ovf" ) +} + # If this is a bundled format generate it! write_vm_bundle() { local bundle_format=$(_get_vm_opt BUNDLE_FORMAT) @@ -945,9 +966,19 @@ EOF } _write_ova_bundle() { - vmdk-convert ${VM_DST_IMG} ${VM_TMP_DIR}/vm.vmdk - ( cd $(_dst_dir) && mkova.sh $(_dst_name) ${VM_TMP_DIR}/vm.vmdk ${BUILD_LIBRARY_DIR}/template.ovf) - VM_GENERATED_FILES+=$(_dst_dir)/$(_dst_name ".ova") + local mf="$(_dst_name ".mf")" + local vmdk="$(basename ${VM_DST_IMG})" + local ovf=$(_dst_name ".ovf") + + cp "${VM_DST_IMG}" "${VM_TMP_DIR}/${vmdk}" + cp "$(_dst_dir)/${ovf}" "${VM_TMP_DIR}/${ovf}" + + echo "SHA1(${vmdk})= $(sha1sum "${VM_TMP_DIR}/${vmdk}" | cut -d' ' -f1)" > "${VM_TMP_DIR}/${mf}" + echo "SHA1(${ovf})= $(sha1sum "${VM_TMP_DIR}/${ovf}" | cut -d' ' -f1)" >> "${VM_TMP_DIR}/${mf}" + + tar -cf $(_dst_path ".ova") -C "${VM_TMP_DIR}" "${ovf}" "${mf}" "${vmdk}" + + VM_GENERATED_FILES+=( $(_dst_path ".ova") "${VM_DST_IMG}" ) } _write_secure_demo_disk() {