diff --git a/create-config-drive b/create-config-drive index ec0f33c..729e288 100755 --- a/create-config-drive +++ b/create-config-drive @@ -48,6 +48,18 @@ done config_image=$1 shift +if [ -z "$config_image" ]; then + echo "The imagename argument must be specified!" >&2 + usage >&2 + exit 3 +fi + +if [ $# -ne 0 ]; then + echo "This command requires exactly one positional argument!" >&2 + usage >&2 + exit 4 +fi + if [ "$ssh_key" ] && [ -f "$ssh_key" ]; then echo "adding pubkey from $ssh_key" ssh_key_data=$(cat "$ssh_key") @@ -83,9 +95,9 @@ if [ "$ssh_key_data" ]; then fi echo "generating configuration image at $config_image" -if ! mkisofs -o $config_image -V cidata -r -J --quiet $config_dir; then +if ! mkisofs -o "$config_image" -V cidata -r -J --quiet $config_dir; then echo "ERROR: failed to create $config_image" >&2 exit 1 fi -chmod a+r $config_image +chmod a+r "$config_image" diff --git a/virt-query b/virt-query index ed429ea..9bec01c 100755 --- a/virt-query +++ b/virt-query @@ -37,8 +37,11 @@ class Domain (object): for disk in self.domxml.xpath('/domain/devices/disk'): if disk.get('type') == 'file': info = {'type': 'file', - 'source': disk.find('source').get('file'), 'target': disk.find('target').get('dev')} + + if disk.find('source') is not None: + info['source'] = disk.find('source').get('file') + yield info def interfaces(self): @@ -70,6 +73,10 @@ def main(): if args.what in ['disk', 'disks']: for disk in dom.disks(): + if not 'source' in disk: + disk['source'] = '' + # This won't break scripts iterating the sources like this: + # for disk_path in $(virt-query "$DOMAIN" disks | awk '{print $3}'); do print '{type} {target} {source}'.format(**disk) elif args.what in ['net', 'interfaces', 'iface']: for iface in dom.interfaces():