Check for server attributes before using them

Sets server attributes only after verifying that
they exist.

Risk of fix: With this fix the server.host, server.local_id,
server.deleted, server.deleted_at values could get set with
values from information loaded per
client.servers.get(instance.server_id). See bug notes for
more details

Change-Id: I6d8303fee0ab685bdbe66b044174a7bd9f0807a4
Closes-Bug:1376525
This commit is contained in:
rumale 2014-10-01 17:51:00 -07:00
parent 101d454b70
commit 3cb9b555bc

View File

@ -57,10 +57,16 @@ def load_mgmt_instance(cls, context, id):
server = client.rdservers.get(instance.server_id)
except AttributeError:
server = client.servers.get(instance.server_id)
instance.server.host = server.host
instance.server.deleted = server.deleted
instance.server.deleted_at = server.deleted_at
instance.server.local_id = server.local_id
if hasattr(server, 'host'):
instance.server.host = server.host
elif hasattr(server, 'hostId'):
instance.server.host = server.hostId
if hasattr(server, 'deleted'):
instance.server.deleted = server.deleted
if hasattr(server, 'deleted_at'):
instance.server.deleted_at = server.deleted_at
if hasattr(server, 'local_id'):
instance.server.local_id = server.local_id
assert instance.server is not None
except Exception as e:
LOG.error(e)