For one reason or another, I sometimes run into the following error when trying to deploy an OpenStack TripleO overcloud in my lab:
ClientException: Object GET failed: https://192.0.2.2:13808/v1 /AUTH_1a5df8c242d848e8b01b974a72afcf8c /overcloud/plan-environment.yaml 404 Not Found
This usually occurs after impatiently cancelling an overcloud deployment – strongly not recommended of course. The overcloud plan, which is stored in a Swift container, is left missing one or more objects.
Given that Mistral (OpenStack’s workflow service) is meant to first delete the existing plan before continuing, it’s an odd error. The solution, it turns out, is not quite as straight forward as manually deleting the plan.
Deleting an overcloud plan is a restricted operation when that plan is tied to an existing stack, and deleting the stack would mean deleting my overcloud. This was not a fresh deployment, but rather a stack update, so funnily enough this was not my preferred approach. Given the overcloud plan is just stored in a Swift object container though, we can modify it directly:
## Source undercloud environment variables $ . stackrc ## Recursively delete all objects and the container $ openstack container delete --recursive overcloud
From here, running the overcloud deployment again creates the Swift object container and populates it with the deployment plan, however this is still prone to errors. My own deployment kept failing with Mistral validation errors, despite being a “valid” plan previously.
The solution is to run the undercloud installation again. This is essentially a bunch of idempotent workflows, so should be completely safe to run and re-run, though take care that your undercloud config file has not changed unless you expect it to.
$ openstack undercloud install
Once the install has completed you should notice that the Swift overcloud container has been recreated and populated with all the required plan objects. You can now kick off that overcloud deploy.