Merge pull request #98 from marineam/image-size

Image size
This commit is contained in:
Michael Marineau 2013-08-28 12:25:56 -07:00
commit 1539ff334e
3 changed files with 24 additions and 6 deletions

View File

@ -63,7 +63,7 @@
"num": 9, "num": 9,
"label":"STATE", "label":"STATE",
"type":"data", "type":"data",
"blocks":"2097152" "blocks":"1048576"
} }
], ],
"vm": [ "vm": [
@ -73,6 +73,14 @@
"type":"data", "type":"data",
"blocks":"6291456" "blocks":"6291456"
} }
],
"vagrant": [
{
"num": 9,
"label":"STATE",
"type":"data",
"blocks":"33587200"
}
] ]
} }
} }

View File

@ -48,6 +48,9 @@ IMG_DEFAULT_OEM_PACKAGE=
# May be raw, qcow2 (qemu), or vmdk (vmware, virtualbox) # May be raw, qcow2 (qemu), or vmdk (vmware, virtualbox)
IMG_DEFAULT_DISK_FORMAT=raw IMG_DEFAULT_DISK_FORMAT=raw
# Name of the partition layout from legacy_disk_layout.json
IMG_DEFAULT_DISK_LAYOUT=base
# Name of the target config format, default is no config # Name of the target config format, default is no config
IMG_DEFAULT_CONF_FORMAT= IMG_DEFAULT_CONF_FORMAT=
@ -56,6 +59,7 @@ IMG_DEFAULT_MEM=1024
## qemu ## qemu
IMG_qemu_DISK_FORMAT=qcow2 IMG_qemu_DISK_FORMAT=qcow2
IMG_qemu_DISK_LAYOUT=vm
IMG_qemu_CONF_FORMAT=qemu IMG_qemu_CONF_FORMAT=qemu
## xen ## xen
@ -65,24 +69,29 @@ IMG_xen_CONF_FORMAT=xl
## virtualbox ## virtualbox
IMG_virtualbox_DISK_FORMAT=vmdk IMG_virtualbox_DISK_FORMAT=vmdk
IMG_virtualbox_DISK_LAYOUT=vm
IMG_virtualbox_CONF_FORMAT=ovf IMG_virtualbox_CONF_FORMAT=ovf
## vagrant ## vagrant
IMG_vagrant_DISK_FORMAT=vmdk IMG_vagrant_DISK_FORMAT=vmdk
IMG_vagrant_DISK_LAYOUT=vagrant
IMG_vagrant_CONF_FORMAT=vagrant IMG_vagrant_CONF_FORMAT=vagrant
IMG_vagrant_OEM_PACKAGE=oem-vagrant IMG_vagrant_OEM_PACKAGE=oem-vagrant
## vagrant_vmware ## vagrant_vmware
IMG_vagrant_vmware_fusion_DISK_FORMAT=vmdk IMG_vagrant_vmware_fusion_DISK_FORMAT=vmdk
IMG_vagrant_vmware_fusion_DISK_LAYOUT=vagrant
IMG_vagrant_vmware_fusion_CONF_FORMAT=vagrant_vmware_fusion IMG_vagrant_vmware_fusion_CONF_FORMAT=vagrant_vmware_fusion
IMG_vagrant_vmware_fusion_OEM_PACKAGE=oem-vagrant IMG_vagrant_vmware_fusion_OEM_PACKAGE=oem-vagrant
## vmware ## vmware
IMG_vmware_DISK_FORMAT=vmdk IMG_vmware_DISK_FORMAT=vmdk
IMG_vmware_DISK_LAYOUT=vm
IMG_vmware_CONF_FORMAT=vmx IMG_vmware_CONF_FORMAT=vmx
## vmware_insecure ## vmware_insecure
IMG_vmware_insecure_DISK_FORMAT=vmdk IMG_vmware_insecure_DISK_FORMAT=vmdk
IMG_vmware_insecure_DISK_LAYOUT=vm
IMG_vmware_insecure_CONF_FORMAT=vmware_zip IMG_vmware_insecure_CONF_FORMAT=vmware_zip
IMG_vmware_insecure_OEM_PACKAGE=oem-vagrant IMG_vmware_insecure_OEM_PACKAGE=oem-vagrant
@ -92,6 +101,7 @@ IMG_ami_OEM_PACKAGE=oem-ami
## openstack, supports ec2's metadata format so use oem-ami ## openstack, supports ec2's metadata format so use oem-ami
IMG_openstack_DISK_FORMAT=qcow2 IMG_openstack_DISK_FORMAT=qcow2
IMG_openstack_DISK_LAYOUT=vm
IMG_openstack_OEM_PACKAGE=oem-ami IMG_openstack_OEM_PACKAGE=oem-ami
## pxe, which is an cpio image ## pxe, which is an cpio image
@ -182,7 +192,7 @@ _disk_ext() {
# alternate filesystem image for the state partition instead of the one # alternate filesystem image for the state partition instead of the one
# from VM_SRC_IMG. Start new image using the given disk layout. # from VM_SRC_IMG. Start new image using the given disk layout.
unpack_source_disk() { unpack_source_disk() {
local disk_layout="$1" local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}"
local alternate_state_image="$2" local alternate_state_image="$2"
if [[ -n "${alternate_state_image}" && ! -f "${alternate_state_image}" ]] if [[ -n "${alternate_state_image}" && ! -f "${alternate_state_image}" ]]
@ -217,7 +227,8 @@ unpack_source_disk() {
} }
resize_state_partition() { resize_state_partition() {
local size_in_bytes="$1" local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}"
local size_in_bytes=$(get_filesystem_size "${disk_layout}" ${NUM_STATEFUL})
local size_in_sectors=$(( size_in_bytes / 512 )) local size_in_sectors=$(( size_in_bytes / 512 ))
local size_in_mb=$(( size_in_bytes / 1024 / 1024 )) local size_in_mb=$(( size_in_bytes / 1024 / 1024 ))
local original_size=$(stat -c%s "${TEMP_STATE}") local original_size=$(stat -c%s "${TEMP_STATE}")

View File

@ -37,7 +37,7 @@ DEFINE_string format "qemu" \
"Output format, one of: ${VALID_IMG_TYPES[*]}" "Output format, one of: ${VALID_IMG_TYPES[*]}"
DEFINE_string from "" \ DEFINE_string from "" \
"Directory containing rootfs.image and mbr.image" "Directory containing rootfs.image and mbr.image"
DEFINE_string disk_layout "vm" \ DEFINE_string disk_layout "" \
"The disk layout type to use for this image." "The disk layout type to use for this image."
DEFINE_integer mem "${DEFAULT_MEM}" \ DEFINE_integer mem "${DEFAULT_MEM}" \
"Memory size for the vm config in MBs." "Memory size for the vm config in MBs."
@ -111,9 +111,8 @@ trap vm_cleanup EXIT
# Unpack image, using alternate state image if defined # Unpack image, using alternate state image if defined
# Resize to use all available space in new disk layout # Resize to use all available space in new disk layout
STATEFUL_SIZE=$(get_filesystem_size "${FLAGS_disk_layout}" ${NUM_STATEFUL})
unpack_source_disk "${FLAGS_disk_layout}" "${FLAGS_state_image}" unpack_source_disk "${FLAGS_disk_layout}" "${FLAGS_state_image}"
resize_state_partition "${STATEFUL_SIZE}" resize_state_partition "${FLAGS_disk_layout}"
# Optionally install any OEM packages # Optionally install any OEM packages
install_oem_package install_oem_package