Crash running custom command on fs_setup
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cloud-init |
Expired
|
Undecided
|
Unassigned |
Bug Description
Given this cloud-init config:
fs_setup:
- cmd:['/
label: volumedata
filesystem: 'btrfs'
device: '/dev/sda'
Error log:
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] util.py[DEBUG]: Writing to /var/lib/
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] helpers.py[DEBUG]: Running config-disk_setup using lock (<FileLock using file '/var/lib/
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] cc_disk_
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] cc_disk_
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] cc_disk_
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] cc_disk_
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] cc_disk_
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] util.py[DEBUG]: Creating fs for /dev/sda took 0.003 seconds
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] util.py[WARNING]: Failed during filesystem operation
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] util.py[DEBUG]: Failed during filesystem operation
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] cc_disk_
Nov 05 21:12:33 raspi cloud-init[374]: [CLOUDINIT] cc_disk_
Link to the bug in the code: https:/
The problem is because `fs_cmd` is a list, not a string, which is related to: https:/
Also the documentation is not accurate, because the example shows a string, and actually the type of `cmd` in the code is a list: See here: https:/
Quick fix on https:/ /git.launchpad. net/cloud- init/tree/ cloudinit/ config/ cc_disk_ setup.py# n952
fs_cmd = [ i % {
'label' : label,
'filesystem' : fs_type,
'device' : device,
} for i in fs_cfg['cmd']
]
This snipped fixes the issue.