From 1aa3c6f4ee2a111dfa88a6fb972905f05ff8e9a2 Mon Sep 17 00:00:00 2001 From: Ferran Rodenas Date: Tue, 26 Jun 2012 23:30:31 +0200 Subject: [PATCH] [openstack|compute] Add filters to list servers details --- lib/fog/openstack/models/compute/servers.rb | 12 ++++++++++-- .../requests/compute/list_servers_detail.rb | 5 +++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/fog/openstack/models/compute/servers.rb b/lib/fog/openstack/models/compute/servers.rb index de36198d4..f3579612b 100644 --- a/lib/fog/openstack/models/compute/servers.rb +++ b/lib/fog/openstack/models/compute/servers.rb @@ -7,10 +7,18 @@ module Fog class Servers < Fog::Collection + attribute :filters + model Fog::Compute::OpenStack::Server - def all - data = connection.list_servers_detail.body['servers'] + def initialize(attributes) + self.filters ||= {} + super + end + + def all(filters = filters) + self.filters = filters + data = connection.list_servers_detail(filters).body['servers'] load(data) end diff --git a/lib/fog/openstack/requests/compute/list_servers_detail.rb b/lib/fog/openstack/requests/compute/list_servers_detail.rb index 3010eb5fd..9c36e884f 100644 --- a/lib/fog/openstack/requests/compute/list_servers_detail.rb +++ b/lib/fog/openstack/requests/compute/list_servers_detail.rb @@ -3,9 +3,10 @@ module Fog class OpenStack class Real - def list_servers_detail(options = {}) + # Available filters: name, status, image, flavor, changes_since, reservation_id + def list_servers_detail(filters = {}) params = Hash.new - params['all_tenants'] = 'True' if options[:all_tenants] + filters[:all_tenants] ? params['all_tenants'] = 'True' : params = filters request( :expects => [200, 203],