@@ -66,6 +66,104 @@ def assert_called(self, method, url, body=None,
6666 return self .shell .cs .assert_called (method , url , body ,
6767 partial_body , ** kwargs )
6868
69+ @ddt .data ({'resource' : None , 'query_url' : None },
70+ {'resource' : 'volume' , 'query_url' : '?resource=volume' },
71+ {'resource' : 'group' , 'query_url' : '?resource=group' })
72+ @ddt .unpack
73+ def test_list_filters (self , resource , query_url ):
74+ url = '/resource_filters'
75+ if resource is not None :
76+ url += query_url
77+ self .run_command ('--os-volume-api-version 3.33 '
78+ 'list-filters --resource=%s' % resource )
79+ else :
80+ self .run_command ('--os-volume-api-version 3.33 list-filters' )
81+
82+ self .assert_called ('GET' , url )
83+
84+ @ddt .data (
85+ # testcases for list volume
86+ {'command' :
87+ 'list --name=123 --filters name=456' ,
88+ 'expected' :
89+ '/volumes/detail?name=456' },
90+ {'command' :
91+ 'list --filters name=123' ,
92+ 'expected' :
93+ '/volumes/detail?name=123' },
94+ {'command' :
95+ 'list --filters metadata={key1:value1}' ,
96+ 'expected' :
97+ '/volumes/detail?metadata=%7B%27key1%27%3A+%27value1%27%7D' },
98+ # testcases for list group
99+ {'command' :
100+ 'group-list --filters name=456' ,
101+ 'expected' :
102+ '/groups/detail?name=456' },
103+ {'command' :
104+ 'group-list --filters status=available' ,
105+ 'expected' :
106+ '/groups/detail?status=available' },
107+ # testcases for list group-snapshot
108+ {'command' :
109+ 'group-snapshot-list --status=error --filters status=available' ,
110+ 'expected' :
111+ '/group_snapshots/detail?status=available' },
112+ {'command' :
113+ 'group-snapshot-list --filters availability_zone=123' ,
114+ 'expected' :
115+ '/group_snapshots/detail?availability_zone=123' },
116+ # testcases for list message
117+ {'command' :
118+ 'message-list --event_id=123 --filters event_id=456' ,
119+ 'expected' :
120+ '/messages?event_id=456' },
121+ {'command' :
122+ 'message-list --filters request_id=123' ,
123+ 'expected' :
124+ '/messages?request_id=123' },
125+ # testcases for list attachment
126+ {'command' :
127+ 'attachment-list --volume-id=123 --filters volume_id=456' ,
128+ 'expected' :
129+ '/attachments?volume_id=456' },
130+ {'command' :
131+ 'attachment-list --filters mountpoint=123' ,
132+ 'expected' :
133+ '/attachments?mountpoint=123' },
134+ # testcases for list backup
135+ {'command' :
136+ 'backup-list --volume-id=123 --filters volume_id=456' ,
137+ 'expected' :
138+ '/backups/detail?volume_id=456' },
139+ {'command' :
140+ 'backup-list --filters name=123' ,
141+ 'expected' :
142+ '/backups/detail?name=123' },
143+ # testcases for list snapshot
144+ {'command' :
145+ 'snapshot-list --volume-id=123 --filters volume_id=456' ,
146+ 'expected' :
147+ '/snapshots/detail?volume_id=456' },
148+ {'command' :
149+ 'snapshot-list --filters name=123' ,
150+ 'expected' :
151+ '/snapshots/detail?name=123' },
152+ # testcases for get pools
153+ {'command' :
154+ 'get-pools --filters name=456 --detail' ,
155+ 'expected' :
156+ '/scheduler-stats/get_pools?detail=True&name=456' },
157+ {'command' :
158+ 'get-pools --filters name=456' ,
159+ 'expected' :
160+ '/scheduler-stats/get_pools?name=456' }
161+ )
162+ @ddt .unpack
163+ def test_list_with_filters_mixed (self , command , expected ):
164+ self .run_command ('--os-volume-api-version 3.33 %s' % command )
165+ self .assert_called ('GET' , expected )
166+
69167 def test_list (self ):
70168 self .run_command ('list' )
71169 # NOTE(jdg): we default to detail currently
0 commit comments