Currently the guest prepare code on Mysql looks like the following:
def prepare(self, context, packages, databases, memory_mb, users,
device_path=None, mount_point=None, backup_info=None,
config_contents=None, root_password=None, overrides=None,
cluster_config=None, snapshot=None):
"""Makes ready DBAAS on a Guest container."""
MySqlAppStatus.get().begin_install()
...
<snip>
...
app.complete_install_or_restart()
...
<snip>
...
if snapshot:
self.attach_replica(context, snapshot, snapshot['config'])
The complete_install_or_restart call puts the instance in ACTIVE state, however the attach_replica call hasn't been made. It is during this call that the instance is configured as a slave and connected to the master to start replication.
For an instance that is being configured as a replica, it would make sense to not have it go active until after the attach_replica call is made.
It seems, when the replica goes ACTIVE, the taskmanager immediately deletes the snapshot backup, so the slave will fail, since it cannot restore the master's state from the snapshot.