diff options
author | Pavlo Shchelokovskyy <shchelokovskyy@gmail.com> | 2021-12-20 15:26:01 +0000 |
---|---|---|
committer | Takashi Kajinami <tkajinam@redhat.com> | 2023-03-06 04:44:52 +0000 |
commit | c6094856a3a67f9d160f053d36d4f0c2fcbee69b (patch) | |
tree | b15db022cd22daa0fdbbcced57b2ff2c09007003 | |
parent | add8d162848a553347b0619a5d7baa26ea43c200 (diff) | |
download | heat-c6094856a3a67f9d160f053d36d4f0c2fcbee69b.tar.gz |
Fix parsing of live data from OS::Nova::Server
depending on compute API version, flavor in the instance representation
may not have "id" field, but "original_name" instead.
Story: 2009753
Task: 44211
Change-Id: Ieeae2f36f5e59e01f57a2f8e66a983ec3d99ec63
-rw-r--r-- | heat/engine/resources/openstack/nova/server.py | 12 |
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), |