summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2023-03-06 07:38:52 +0000
committerGerrit Code Review <review@openstack.org>2023-03-06 07:38:52 +0000
commit7e08f5b9dc48bf769da5edbfd4cfdbbde85f9b47 (patch)
tree3ad051ffde9dcd6bf6ad168281802ca535c37be0
parent6272280d3c65c3068dec956cd21a3d39365dd6c4 (diff)
parentc6094856a3a67f9d160f053d36d4f0c2fcbee69b (diff)
downloadheat-7e08f5b9dc48bf769da5edbfd4cfdbbde85f9b47.tar.gz
Merge "Fix parsing of live data from OS::Nova::Server"
-rw-r--r--heat/engine/resources/openstack/nova/server.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/heat/engine/resources/openstack/nova/server.py b/heat/engine/resources/openstack/nova/server.py
index 6cb782a4a..700527dee 100644
--- a/heat/engine/resources/openstack/nova/server.py
+++ b/heat/engine/resources/openstack/nova/server.py
@@ -944,9 +944,19 @@ class Server(server_base.BaseServer, sh.SchedulerHintsMixin,
def parse_live_resource_data(self, resource_properties, resource_data):
server, server_data = resource_data
+ flavor = server_data.get(self.FLAVOR)
+ # NOTE(pas-ha) since compute API 2.47 flavor in instance
+ # does not have "id" but "original_name" instead,
+ # check for both here, and fail if none of them are in flavor.
+ if "id" in flavor:
+ flavor_value = flavor["id"]
+ elif "original_name" in flavor:
+ flavor_value = flavor["original_name"]
+ else:
+ raise KeyError("Flavor does not contain id or original_name")
result = {
# there's a risk that flavor id will be int type, so cast to str
- self.FLAVOR: str(server_data.get(self.FLAVOR)['id']),
+ self.FLAVOR: str(flavor_value),
self.IMAGE: str(server_data.get(self.IMAGE)['id']),
self.NAME: server_data.get(self.NAME),
self.METADATA: server_data.get(self.METADATA),