Python CLI has a command: 'slcli vs ready' to check the virtual guest instance is ready to use.
But the implementation is partially correct, because it only checks the system reloading and active transaction, it does not take into account of power state or network status.
So I'm wondering if it is more reliable to check 3 things
slcli vs ready makes a call to wait_for_ready method and it considers that "The default arguments imply a VS is operational and ready for use by having network connectivity and remote access is available"
I think the 1 and 3 are the same behavior, because if you check that there is no any pending transaction, you are confirming that there is no any reload in progress.
Additionaly as you mentioned, it would be good idea to check power state and pingable, to be really sure that the VSI is ready.