If you google a question such as virsh shutdown not working CentOS 7 you will notice many people are running into this. And they are getting stupid answers like "is acpid installed".
here's the reason why. ACPID shutdown event requires ConsoleKit! If you have Distribution CentOS 7.3 and acpid installed take a look at /etc/acpi/actions/power.sh Take a look at the code that fetches the first active x11 session. The script uses ck-list-sessions and that's part of ConsoleKit. This is something that is usually tested, this will affect many that use libvirt, openstack, docker.. There must be a many admins with less experience that are scratching their heads why doesnt' the vm shutdown.
For now I updated my power.sh script to "shutdown -h now"
If you are asking why am I using ACPI to handle power down from a gui it's because upower is broken too!
So if any of you need this fixed immediately just update the power.sh script with deleting everything but "shutdown -h now"