If you are running a Linux with SELinux in enforcing mode you will encounter an error while trying to creating a new VM with libvirt if you try to use a ISO as installation media which is not in the default /var/lib/libvirt/ folder.

The error message will look something like this:

2293: error : qemuMonitorIORead:609 : Unable to read from monitor: Connection reset by peer
2293: error : qemuProcessReportLogError:1928 : internal error: qemu unexpectedly closed the monitor: 2019-03-25T10:59:10.311159Z qemu-system-x86_64: -drive file=/path/to/your/iso.iso,format=raw,if=none,id=drive-sata0-0-1,media=cdrom,readonly=on: Could not open '/path/to/your/iso.iso': Permission denied
2306: error : qemuProcessReportLogError:1928 : internal error: process exited while connecting to monitor: 2019-03-25T10:59:10.311159Z qemu-system-x86_64: -drive file=/path/to/your/iso.iso,format=raw,if=none,id=drive-sata0-0-1,media=cdrom,readonly=on: Could not open '/path/to/your/iso.iso': Permission denied

The issue is that your default SELinux context only allows specific folders (on fedora 29 /var/lib/libvirt/) to be used as a installation media source. To fix this enter the following commands as root.

semanage fcontext -a -t virt_image_t "/path/to/your/isofolder/(/.*)?"
restorecon -R /path/to/your/isofolder

If you want to allow using installation media from a network share you have to enter the following commands:

setsebool -P virt_use_samba 1 # Allowing samba/cifs
setsebool -P virt_use_nfs 1 # Allowing nfs