Browse code

Provide a means of setting vmdk custom properties via image filename

Custom properties for vmdk disk type, storage adapter type, and
networking adapter type can now be retrieved from a vmdk image's
filename. The filename format is defined as:

<name>-<disk type>:<storage adapter>:<network adapter>

An example filename following this format would be
debian-2.6.32-i646-thin:ide:VirtualE1000. If the vmdk filename does not
match the above format then underlying nova driver will supply default
values.

Change-Id: I83483d20f984250bd8154d8e270b2e801d2df303
Closes-bug: #1221044

Ryan Hsu authored on 2013/09/05 15:51:29
Showing 1 changed files
... ...
@@ -1256,7 +1256,25 @@ function upload_image() {
1256 1256
     if [[ "$image_url" =~ '.vmdk' ]]; then
1257 1257
         IMAGE="$FILES/${IMAGE_FNAME}"
1258 1258
         IMAGE_NAME="${IMAGE_FNAME%.vmdk}"
1259
-        glance --os-auth-token $token --os-image-url http://$GLANCE_HOSTPORT image-create --name "$IMAGE_NAME" --is-public=True --container-format bare --disk-format vmdk --property vmware-disktype="preallocated" < "${IMAGE}"
1259
+
1260
+        # Before we can upload vmdk type images to glance, we need to know it's
1261
+        # disk type, storage adapter, and networking adapter. These values are
1262
+        # passed to glance as custom properties. We take these values from the
1263
+        # vmdk filename, which is expected in the following format:
1264
+        #
1265
+        #     <name>-<disk type>:<storage adapter>:<network adapter>
1266
+        #
1267
+        # If the filename does not follow the above format then the vsphere
1268
+        # driver will supply default values.
1269
+        property_string=`echo "$IMAGE_NAME" | grep -oP '(?<=-)(?!.*-).+:.+:.+$'`
1270
+        if [[ ! -z "$property_string" ]]; then
1271
+            IFS=':' read -a props <<< "$property_string"
1272
+            vmdk_disktype="${props[0]}"
1273
+            vmdk_adapter_type="${props[1]}"
1274
+            vmdk_net_adapter="${props[2]}"
1275
+        fi
1276
+
1277
+        glance --os-auth-token $token --os-image-url http://$GLANCE_HOSTPORT image-create --name "$IMAGE_NAME" --is-public=True --container-format bare --disk-format vmdk --property vmware-disktype="$vmdk_disktype" --property vmware_adaptertype="$vmdk_adapter_type" --property hw_vif_model="$vmdk_net_adapter" < "${IMAGE}"
1260 1278
         return
1261 1279
     fi
1262 1280