Stephen,
I think the issue in your comment above is that cloud-init on the first boot wrote an entry into /etc/fstab for the swap partition. Then you upgraded rebooted. The /etc/fstab entry for swap was still present and systemd mounted swap. Then, when cloud-init went to repartition, the disk was busy (with swap) and could not get it done.
Stephen,
I think the issue in your comment above is that cloud-init on the first boot wrote an entry into /etc/fstab for the swap partition. Then you upgraded rebooted. The /etc/fstab entry for swap was still present and systemd mounted swap. Then, when cloud-init went to repartition, the disk was busy (with swap) and could not get it done.
Could you attach *that* /var/log/ cloud-init. log ?