From 512b72d746d8ff422fa502288d9276fc5f90493a Mon Sep 17 00:00:00 2001 From: sguazt <marco.guazzone@gmail.com> Date: Sat, 16 Jan 2021 18:15:19 +0100 Subject: [PATCH] Removed use of 'common.utility.make_dict_proxy_wrapper' (previously used to make an OpenStack instance look like a dictionary) as it is no longer needed: an instance of OpenStack's openstack.compute.v2.server.Server class can now be used as dictionary as its parent class (i.e., the openstack.resource.Resource class) implements the mapping protocol. --- easycloud/common/utility.py | 5 ++--- easycloud/modules/chameleon_openstacksdk/manager.py | 5 +---- easycloud/modules/openstack_openstacksdk/manager.py | 3 +-- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/easycloud/common/utility.py b/easycloud/common/utility.py index 9f84b14..ca4b8d9 100644 --- a/easycloud/common/utility.py +++ b/easycloud/common/utility.py @@ -13,9 +13,8 @@ def make_dict_proxy_wrapper(obj): wrapper object in the same way as the wrapped object. For instance, if ``obj`` has a method ``m``, we can still invoke such method on the related wrapper object. - - This is especially useful to enable the OpenStackInstance::extra - property to use the raw OpenStack instance as a dictionary. + Likewise, if ``obj'' has a property ``a``, we can retrieve its value + either by ``wrapped_obj.a`` or by ``wrapped_obj['a']``. """ class Wrapper(obj.__class__): def __getitem__(self, key): diff --git a/easycloud/modules/chameleon_openstacksdk/manager.py b/easycloud/modules/chameleon_openstacksdk/manager.py index 093f003..5253a5c 100644 --- a/easycloud/modules/chameleon_openstacksdk/manager.py +++ b/easycloud/modules/chameleon_openstacksdk/manager.py @@ -3,7 +3,6 @@ EasyCloud Chameleon Cloud Manager. """ import datetime -from easycloud.common import utility from easycloud.core.actionbinder import bind_action from easycloud.core.compute import Instance, InstanceStatus from easycloud.core.metamanager import MetaManager @@ -49,9 +48,7 @@ class OpenStackInstance(Instance): # openstack.compute.v2.server.Server(OS-EXT-STS:task_state=None, addresses={'CH-820879-net': [{'OS-EXT-IPS-MAC:mac_addr': 'fa:16:3e:c5:d0:e6', 'version': 4, 'addr': '10.185.189.137', 'OS-EXT-IPS:type': 'fixed'}]}, links=[{'href': 'https://kvm.tacc.chameleoncloud.org:8774/v2.1/servers/a0a9cdbb-a8f6-42fc-af4b-0e6c68d70ec3', 'rel': 'self'}, {'href': 'https://kvm.tacc.chameleoncloud.org:8774/servers/a0a9cdbb-a8f6-42fc-af4b-0e6c68d70ec3', 'rel': 'bookmark'}], image={'id': '206874ef-3d93-43c6-bc37-7335478a27a7', 'links': [{'href': 'https://kvm.tacc.chameleoncloud.org:8774/images/206874ef-3d93-43c6-bc37-7335478a27a7', 'rel': 'bookmark'}]}, OS-EXT-SRV-ATTR:user_data=None, OS-EXT-STS:vm_state=stopped, OS-EXT-SRV-ATTR:instance_name=instance-00001a28, OS-EXT-SRV-ATTR:root_device_name=/dev/vda, OS-SRV-USG:launched_at=2020-04-20T12:02:29.000000, flavor={'ephemeral': 0, 'ram': 512, 'original_name': 'm1.tiny', 'vcpus': 1, '_extraspecs': {}, 'swap': 0, 'disk': 1}, id=a0a9cdbb-a8f6-42fc-af4b-0e6c68d70ec3, security_groups=[{'name': 'default'}], description=easycloud-047, user_id=520b8f26b6214b3d9b0fab8878e67e44, OS-EXT-SRV-ATTR:hostname=easycloud-047, OS-DCF:diskConfig=MANUAL, accessIPv4=, accessIPv6=, OS-EXT-SRV-ATTR:reservation_id=r-7wfc3f6v, OS-EXT-STS:power_state=4, OS-EXT-AZ:availability_zone=nova, config_drive=, status=SHUTOFF, OS-EXT-SRV-ATTR:ramdisk_id=, updated=2020-09-10T09:30:49Z, hostId=aa36609e24cc62db7565ad56156451578e6856b8b3e7c8e4cf8fa58f, OS-EXT-SRV-ATTR:host=c07-34, OS-SRV-USG:terminated_at=None, tags=[], key_name=sguazt _at_ wildcat, OS-EXT-SRV-ATTR:kernel_id=, locked=False, OS-EXT-SRV-ATTR:hypervisor_hostname=c07-34, name=easycloud-047, OS-EXT-SRV-ATTR:launch_index=0, created=2020-04-20T12:02:17Z, tenant_id=2c18b5d8ebfa4a08b603c151d967a04d, os-extended-volumes:volumes_attached=[], trusted_image_certificates=None, metadata={}, location=Munch({'cloud': 'chameleon', 'region_name': 'KVM@TACC', 'zone': 'nova', 'project': Munch({'id': '2c18b5d8ebfa4a08b603c151d967a04d', 'name': 'CH-820879', 'domain_id': 'default', 'domain_name': None})})) self._os_conn = os_conn - # NOTE: the wrapper is needed to let the ``extra`` property work as - # expected (i.e., to access members of the raw OpenStack instance in a dictionary-like way) - self._os_inst = utility.make_dict_proxy_wrapper(os_instance) + self._os_inst = os_instance self._status = self._NODE_STATUS_MAP.get(os_instance.status, InstanceStatus.UNKNOWN) self._private_ips = [] self._public_ips = [] #TODO diff --git a/easycloud/modules/openstack_openstacksdk/manager.py b/easycloud/modules/openstack_openstacksdk/manager.py index 46df16c..35dce83 100644 --- a/easycloud/modules/openstack_openstacksdk/manager.py +++ b/easycloud/modules/openstack_openstacksdk/manager.py @@ -3,7 +3,6 @@ EasyCloud OpenStack Manager """ import datetime -from easycloud.common import utility from easycloud.core.actionbinder import bind_action from easycloud.core.compute import Instance, InstanceStatus from easycloud.core.metamanager import MetaManager @@ -48,7 +47,7 @@ class OpenStackInstance(Instance): # Example: --- Server: openstack.compute.v2.server.Server(OS-EXT-STS:task_state=None, addresses={'CH-820879-net': [{'OS-EXT-IPS-MAC:mac_addr': 'fa:16:3e:c5:d0:e6', 'version': 4, 'addr': '10.185.189.137', 'OS-EXT-IPS:type': 'fixed'}]}, links=[{'href': 'https://kvm.tacc.chameleoncloud.org:8774/v2.1/servers/a0a9cdbb-a8f6-42fc-af4b-0e6c68d70ec3', 'rel': 'self'}, {'href': 'https://kvm.tacc.chameleoncloud.org:8774/servers/a0a9cdbb-a8f6-42fc-af4b-0e6c68d70ec3', 'rel': 'bookmark'}], image={'id': '206874ef-3d93-43c6-bc37-7335478a27a7', 'links': [{'href': 'https://kvm.tacc.chameleoncloud.org:8774/images/206874ef-3d93-43c6-bc37-7335478a27a7', 'rel': 'bookmark'}]}, OS-EXT-SRV-ATTR:user_data=None, OS-EXT-STS:vm_state=stopped, OS-EXT-SRV-ATTR:instance_name=instance-00001a28, OS-EXT-SRV-ATTR:root_device_name=/dev/vda, OS-SRV-USG:launched_at=2020-04-20T12:02:29.000000, flavor={'ephemeral': 0, 'ram': 512, 'original_name': 'm1.tiny', 'vcpus': 1, 'extra_specs': {}, 'swap': 0, 'disk': 1}, id=a0a9cdbb-a8f6-42fc-af4b-0e6c68d70ec3, security_groups=[{'name': 'default'}], description=easycloud-047, user_id=520b8f26b6214b3d9b0fab8878e67e44, OS-EXT-SRV-ATTR:hostname=easycloud-047, OS-DCF:diskConfig=MANUAL, accessIPv4=, accessIPv6=, OS-EXT-SRV-ATTR:reservation_id=r-7wfc3f6v, OS-EXT-STS:power_state=4, OS-EXT-AZ:availability_zone=nova, config_drive=, status=SHUTOFF, OS-EXT-SRV-ATTR:ramdisk_id=, updated=2020-09-10T09:30:49Z, hostId=aa36609e24cc62db7565ad56156451578e6856b8b3e7c8e4cf8fa58f, OS-EXT-SRV-ATTR:host=c07-34, OS-SRV-USG:terminated_at=None, tags=[], key_name=sguazt _at_ wildcat, OS-EXT-SRV-ATTR:kernel_id=, locked=False, OS-EXT-SRV-ATTR:hypervisor_hostname=c07-34, name=easycloud-047, OS-EXT-SRV-ATTR:launch_index=0, created=2020-04-20T12:02:17Z, tenant_id=2c18b5d8ebfa4a08b603c151d967a04d, os-extended-volumes:volumes_attached=[], trusted_image_certificates=None, metadata={}, location=Munch({'cloud': 'chameleon', 'region_name': 'KVM@TACC', 'zone': 'nova', 'project': Munch({'id': '2c18b5d8ebfa4a08b603c151d967a04d', 'name': 'CH-820879', 'domain_id': 'default', 'domain_name': None})})) self._os_conn = os_conn - self._os_inst = utility.make_dict_proxy_wrapper(os_instance) + self._os_inst = os_instance self._status = self._NODE_STATUS_MAP.get(os_instance.status, InstanceStatus.UNKNOWN) self._private_ips = [] self._public_ips = [] -- GitLab