Merge "Add vIPSEC VNF for running Crypto performance test case"
[yardstick.git] / ansible / build_yardstick_image.yml
index 7f70987..495a547 100644 (file)
       'amd64': disk1
       'arm64': uefi1
     boot_mode: "{{ boot_modes[YARD_IMG_ARCH] }}"
-    image_filename: "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}-{{ boot_mode }}.img"
-    image_path: "{{ release }}/current/{{ image_filename }}"
+    image_filename:
+      'xenial': "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}-{{ boot_mode }}.img"
+      'bionic': "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}.img"
+    image_path: "{{ release }}/current/{{ image_filename[release] }}"
     host: "{{ lookup('env', 'HOST')|default('cloud-images.ubuntu.com', true)}}"
     image_url: "{{ lookup('env', 'IMAGE_URL')|default('https://' ~ host ~ '/' ~ image_path, true) }}"
-    image_dest: "{{ workspace }}/{{ image_filename }}"
+    image_dest: "{{ workspace }}/{{ image_filename[release] }}"
     sha256sums_path: "{{ release }}/current/SHA256SUMS"
     sha256sums_filename: "{{ sha256sums_path|basename }}"
     sha256sums_url: "{{ lookup('env', 'SHA256SUMS_URL')|default('https://' ~ host ~ '/' ~ sha256sums_path, true) }}"
 
     workspace: "{{ lookup('env', 'workspace')|default('/tmp/workspace/yardstick', true) }}"
     raw_imgfile_basename: "yardstick-{{ release }}-server.raw"
+    growpart_package:
+      RedHat: cloud-utils-growpart
+      Debian: cloud-guest-utils
   environment:
     - PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
     - "{{ proxy_env }}"
@@ -39,6 +44,8 @@
         key: image_builder
 
     - package: name=parted state=present
+    - package: name=kpartx state=present
+    - package: name="{{ growpart_package[ansible_os_family] }}" state=present
 
     - set_fact:
         imgfile: "{{ normal_image_file }}"
@@ -54,7 +61,7 @@
     - set_fact:
         raw_imgfile: "{{ workspace }}/{{ raw_imgfile_basename }}"
 
-  # cleanup non-lxd
+    # cleanup non-lxd
     - name: unmount all old mount points
       mount:
         name: "{{ item }}"
       command: kpartx -dv "{{ raw_imgfile }}"
       ignore_errors: true
 
+    - name: Debug dump loop devices
+      command: losetup -a
+      ignore_errors: true
+
+    - name: delete loop devices for image file
+      # use this because kpartx -dv will fail if raw_imgfile was delete
+      # but in theory we could have deleted file still attached to loopback device?
+      # use grep because of // and awk
+      shell: losetup -O NAME,BACK-FILE | grep "{{ raw_imgfile_basename }}" | awk '{ print $1 }' | xargs -l1 losetup -v -d
+      ignore_errors: true
+
+    - name: Debug dump loop devices again
+      command: losetup -a
+      ignore_errors: true
+
     - name: delete {{ raw_imgfile }}
       file:
         path: "{{ raw_imgfile }}"
       command: "qemu-img resize -f raw {{ raw_imgfile }} +2G"
 
     - name: resize parition to allow for more VNFs
-      command: "parted -s -a optimal {{ raw_imgfile }} resizepart 1 100%"
+      # use growpart because maybe it handles GPT better than parted
+      command: growpart {{ raw_imgfile }}  1
 
     - name: create mknod devices in chroot
       command: "mknod -m 0660 /dev/loop{{ item }} b 7 {{ item }}"
       tags: mknod_devices
 
     - name: find first partition device
-#      command: kpartx -l "{{ loop_device }}"
       command: kpartx -l "{{ raw_imgfile }}"
       register: kpartx_res