if address_list is not none, then the ip element will be none and cannot do get attribute on None Type
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/6a941de7 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/6a941de7 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/6a941de7 Branch: refs/heads/trunk Commit: 6a941de7276b7fa73521ea47e6e73f2d48e19dbd Parents: 488f0dd Author: kumar Chockalingam <kumarapp...@gmail.com> Authored: Tue May 17 09:06:52 2016 +1000 Committer: kumar Chockalingam <kumarapp...@gmail.com> Committed: Tue May 17 09:06:52 2016 +1000 ---------------------------------------------------------------------- libcloud/compute/drivers/dimensiondata.py | 39 ++++++++++++++++---------- 1 file changed, 24 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/6a941de7/libcloud/compute/drivers/dimensiondata.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/dimensiondata.py b/libcloud/compute/drivers/dimensiondata.py index 7a969e8..4ca97b5 100644 --- a/libcloud/compute/drivers/dimensiondata.py +++ b/libcloud/compute/drivers/dimensiondata.py @@ -2063,21 +2063,30 @@ class DimensionDataNodeDriver(NodeDriver): status=findtext(element, 'state', TYPES_URN)) def _to_firewall_address(self, element): - ip = element.find(fixxpath('ip', TYPES_URN)) - port = element.find(fixxpath('port', TYPES_URN)) - port_list = element.find(fixxpath('portList', TYPES_URN)) - address_list = element.find(fixxpath('ipAddressList', TYPES_URN)) - return DimensionDataFirewallAddress( - any_ip=ip.get('address') == 'ANY', - ip_address=ip.get('address'), - ip_prefix_size=ip.get('prefixSize'), - port_begin=port.get('begin') if port is not None else None, - port_end=port.get('end') if port is not None else None, - port_list_id=port_list.get('id', None) - if port_list is not None else None, - address_list_id=address_list.get('id') - if address_list is not None else None - ) + if address_list is None: + return DimensionDataFirewallAddress( + any_ip=ip.get('address') == 'ANY', + ip_address=ip.get('address'), + ip_prefix_size=ip.get('prefixSize'), + port_begin=port.get('begin') if port is not None else None, + port_end=port.get('end') if port is not None else None, + port_list_id=port_list.get('id', None) + if port_list is not None else None, + address_list_id=address_list.get('id') + if address_list is not None else None + ) + else: + return DimensionDataFirewallAddress( + any_ip = False, + ip_address= None, + ip_prefix_size = None, + port_begin = None, + port_end = None, + port_list_id=port_list.get('id', None) + if port_list is not None else None, + address_list_id=address_list.get('id') + if address_list is not None else None + ) def _to_ip_blocks(self, object): blocks = []