kill-controller does destroy hosted models, but only if going via the API. If it fails to destroy via the API, it will use the Environ.Destroy method, but only on the admin model.
If the API is down, then there's no guarantee that you'll know about all of the hosted models; the best you could do is run through all of the models cached in models.yaml. Also, this method won't uninstall Juju from any manually provisioned machines.
destroy-controller is meant to be less fire and brimstone. It'll just error out if the API method fails.
kill-controller does destroy hosted models, but only if going via the API. If it fails to destroy via the API, it will use the Environ.Destroy method, but only on the admin model.
If the API is down, then there's no guarantee that you'll know about all of the hosted models; the best you could do is run through all of the models cached in models.yaml. Also, this method won't uninstall Juju from any manually provisioned machines.
destroy-controller is meant to be less fire and brimstone. It'll just error out if the API method fails.