2525
2626from openstackclient .common import parseractions
2727from openstackclient .common import utils
28+ from openstackclient .identity import common as identity_common
2829
2930
3031class CreateVolume (show .ShowOne ):
@@ -206,11 +207,17 @@ def get_parser(self, prog_name):
206207 help = 'Include all projects (admin only)' ,
207208 )
208209 parser .add_argument (
209- '--long' ,
210- action = 'store_true' ,
211- default = False ,
212- help = 'List additional fields in output' ,
210+ '--project' ,
211+ metavar = '<project-id>' ,
212+ help = 'Filter results by project (name or ID) (admin only)'
213213 )
214+ identity_common .add_project_domain_option_to_parser (parser )
215+ parser .add_argument (
216+ '--user' ,
217+ metavar = '<user-id>' ,
218+ help = 'Filter results by user (name or ID) (admin only)'
219+ )
220+ identity_common .add_user_domain_option_to_parser (parser )
214221 parser .add_argument (
215222 '--name' ,
216223 metavar = '<name>' ,
@@ -221,13 +228,20 @@ def get_parser(self, prog_name):
221228 metavar = '<status>' ,
222229 help = 'Filter results by status' ,
223230 )
231+ parser .add_argument (
232+ '--long' ,
233+ action = 'store_true' ,
234+ default = False ,
235+ help = 'List additional fields in output' ,
236+ )
224237 return parser
225238
226239 @utils .log_method (log )
227240 def take_action (self , parsed_args ):
228241
229242 volume_client = self .app .client_manager .volume
230243 compute_client = self .app .client_manager .compute
244+ identity_client = self .app .client_manager .identity
231245
232246 def _format_attach (attachments ):
233247 """Return a formatted string of a volume's attached instances
@@ -282,8 +296,23 @@ def _format_attach(attachments):
282296 # Just forget it if there's any trouble
283297 pass
284298
299+ project_id = None
300+ if parsed_args .project :
301+ project_id = identity_common .find_project (
302+ identity_client ,
303+ parsed_args .project ,
304+ parsed_args .project_domain )
305+
306+ user_id = None
307+ if parsed_args .user :
308+ user_id = identity_common .find_project (identity_client ,
309+ parsed_args .user ,
310+ parsed_args .user_domain )
311+
285312 search_opts = {
286- 'all_projects' : parsed_args .all_projects ,
313+ 'all_tenants' : parsed_args .all_projects ,
314+ 'project_id' : project_id ,
315+ 'user_id' : user_id ,
287316 'display_name' : parsed_args .name ,
288317 'status' : parsed_args .status ,
289318 }
0 commit comments