use _build_filters function instead of specifying request params manually Closes #323
Signed-off-by: Tomaz Muraus <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/13c38deb Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/13c38deb Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/13c38deb Branch: refs/heads/trunk Commit: 13c38debe1b7d9554f224c67086a033a3d2b34c9 Parents: 8d93bf1 Author: Lior Goikhburg <[email protected]> Authored: Mon Jun 23 17:33:44 2014 +0400 Committer: Tomaz Muraus <[email protected]> Committed: Wed Jun 25 16:07:28 2014 +0200 ---------------------------------------------------------------------- libcloud/compute/drivers/ec2.py | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/13c38deb/libcloud/compute/drivers/ec2.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py index a8124bf..628ee63 100644 --- a/libcloud/compute/drivers/ec2.py +++ b/libcloud/compute/drivers/ec2.py @@ -2015,10 +2015,9 @@ class BaseEC2NodeDriver(NodeDriver): 'Action': 'DescribeVolumes', } if node: - params.update({ - 'Filter.1.Name': 'attachment.instance-id', - 'Filter.1.Value': node.id, - }) + filters = {'attachment.instance-id': node.id} + params.update(self._build_filters(filters)) + response = self.connection.request(self.path, params=params).object volumes = [self._to_volume(el) for el in response.findall( fixxpath(xpath='volumeSet/item', namespace=NAMESPACE)) @@ -3157,12 +3156,11 @@ class BaseEC2NodeDriver(NodeDriver): """ params = {'Action': 'DescribeAvailabilityZones'} + filters = {'region-name': self.region_name} if only_available: - params.update({'Filter.0.Name': 'state'}) - params.update({'Filter.0.Value.0': 'available'}) + filters['state'] = 'available' - params.update({'Filter.1.Name': 'region-name'}) - params.update({'Filter.1.Value.0': self.region_name}) + params.update(self._build_filters(filters)) result = self.connection.request(self.path, params=params.copy()).object @@ -3197,12 +3195,14 @@ class BaseEC2NodeDriver(NodeDriver): :return: dict Node tags :rtype: ``dict`` """ - params = {'Action': 'DescribeTags', - 'Filter.0.Name': 'resource-id', - 'Filter.0.Value.0': resource.id, - 'Filter.1.Name': 'resource-type', - 'Filter.1.Value.0': 'instance', - } + params = {'Action': 'DescribeTags'} + + filters = { + 'resource-id': resource.id, + 'resource-type': 'instance' + } + + params.update(self._build_filters(filters)) result = self.connection.request(self.path, params=params).object @@ -5047,10 +5047,8 @@ class BaseEC2NodeDriver(NodeDriver): """ Add instance filter to the provided params dictionary. """ - params.update({ - 'Filter.0.Name': 'instance-id', - 'Filter.0.Value.0': node.id - }) + filters = {'instance-id': node.id} + params.update(self._build_filters(filters)) return params
