@@ -38,6 +38,10 @@ def setUp(self):
3838 self .users_mock = self .app .client_manager .identity .users
3939 self .users_mock .reset_mock ()
4040
41+ # Get a shortcut to the ImageManager Mock
42+ self .images_mock = self .app .client_manager .image .images
43+ self .images_mock .reset_mock ()
44+
4145
4246# TODO(dtroyer): The volume create tests are incomplete, only the minimal
4347# options and the options that require additional processing
@@ -389,3 +393,135 @@ def test_volume_create_properties(self):
389393 volume_fakes .volume_type ,
390394 )
391395 self .assertEqual (datalist , data )
396+
397+ def test_volume_create_image_id (self ):
398+ self .images_mock .get .return_value = fakes .FakeResource (
399+ None ,
400+ copy .deepcopy (volume_fakes .IMAGE ),
401+ loaded = True ,
402+ )
403+
404+ arglist = [
405+ '--image' , volume_fakes .image_id ,
406+ '--size' , str (volume_fakes .volume_size ),
407+ volume_fakes .volume_name ,
408+ ]
409+ verifylist = [
410+ ('image' , volume_fakes .image_id ),
411+ ('size' , volume_fakes .volume_size ),
412+ ('name' , volume_fakes .volume_name ),
413+ ]
414+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
415+
416+ # DisplayCommandBase.take_action() returns two tuples
417+ columns , data = self .cmd .take_action (parsed_args )
418+
419+ # VolumeManager.create(size, snapshot_id=, source_volid=,
420+ # display_name=, display_description=,
421+ # volume_type=, user_id=,
422+ # project_id=, availability_zone=,
423+ # metadata=, imageRef=)
424+ self .volumes_mock .create .assert_called_with (
425+ volume_fakes .volume_size ,
426+ None ,
427+ None ,
428+ volume_fakes .volume_name ,
429+ None ,
430+ None ,
431+ None ,
432+ None ,
433+ None ,
434+ None ,
435+ volume_fakes .image_id ,
436+ )
437+
438+ collist = (
439+ 'attach_status' ,
440+ 'availability_zone' ,
441+ 'display_description' ,
442+ 'display_name' ,
443+ 'id' ,
444+ 'properties' ,
445+ 'size' ,
446+ 'status' ,
447+ 'type' ,
448+ )
449+ self .assertEqual (collist , columns )
450+ datalist = (
451+ 'detached' ,
452+ volume_fakes .volume_zone ,
453+ volume_fakes .volume_description ,
454+ volume_fakes .volume_name ,
455+ volume_fakes .volume_id ,
456+ volume_fakes .volume_metadata_str ,
457+ volume_fakes .volume_size ,
458+ '' ,
459+ volume_fakes .volume_type ,
460+ )
461+ self .assertEqual (datalist , data )
462+
463+ def test_volume_create_image_name (self ):
464+ self .images_mock .get .return_value = fakes .FakeResource (
465+ None ,
466+ copy .deepcopy (volume_fakes .IMAGE ),
467+ loaded = True ,
468+ )
469+
470+ arglist = [
471+ '--image' , volume_fakes .image_name ,
472+ '--size' , str (volume_fakes .volume_size ),
473+ volume_fakes .volume_name ,
474+ ]
475+ verifylist = [
476+ ('image' , volume_fakes .image_name ),
477+ ('size' , volume_fakes .volume_size ),
478+ ('name' , volume_fakes .volume_name ),
479+ ]
480+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
481+
482+ # DisplayCommandBase.take_action() returns two tuples
483+ columns , data = self .cmd .take_action (parsed_args )
484+
485+ # VolumeManager.create(size, snapshot_id=, source_volid=,
486+ # display_name=, display_description=,
487+ # volume_type=, user_id=,
488+ # project_id=, availability_zone=,
489+ # metadata=, imageRef=)
490+ self .volumes_mock .create .assert_called_with (
491+ volume_fakes .volume_size ,
492+ None ,
493+ None ,
494+ volume_fakes .volume_name ,
495+ None ,
496+ None ,
497+ None ,
498+ None ,
499+ None ,
500+ None ,
501+ volume_fakes .image_id ,
502+ )
503+
504+ collist = (
505+ 'attach_status' ,
506+ 'availability_zone' ,
507+ 'display_description' ,
508+ 'display_name' ,
509+ 'id' ,
510+ 'properties' ,
511+ 'size' ,
512+ 'status' ,
513+ 'type' ,
514+ )
515+ self .assertEqual (collist , columns )
516+ datalist = (
517+ 'detached' ,
518+ volume_fakes .volume_zone ,
519+ volume_fakes .volume_description ,
520+ volume_fakes .volume_name ,
521+ volume_fakes .volume_id ,
522+ volume_fakes .volume_metadata_str ,
523+ volume_fakes .volume_size ,
524+ '' ,
525+ volume_fakes .volume_type ,
526+ )
527+ self .assertEqual (datalist , data )
0 commit comments