@@ -450,6 +450,154 @@ def test_volume_create_with_snapshot(self):
450450 self .assertEqual (self .columns , columns )
451451 self .assertEqual (self .datalist , data )
452452
453+ def test_volume_create_with_bootable_and_readonly (self ):
454+ arglist = [
455+ '--bootable' ,
456+ '--read-only' ,
457+ '--size' , str (self .new_volume .size ),
458+ self .new_volume .name ,
459+ ]
460+ verifylist = [
461+ ('bootable' , True ),
462+ ('non_bootable' , False ),
463+ ('read_only' , True ),
464+ ('read_write' , False ),
465+ ('size' , self .new_volume .size ),
466+ ('name' , self .new_volume .name ),
467+ ]
468+
469+ parsed_args = self .check_parser (
470+ self .cmd , arglist , verifylist )
471+
472+ columns , data = self .cmd .take_action (parsed_args )
473+
474+ self .volumes_mock .create .assert_called_with (
475+ size = self .new_volume .size ,
476+ snapshot_id = None ,
477+ name = self .new_volume .name ,
478+ description = None ,
479+ volume_type = None ,
480+ user_id = None ,
481+ project_id = None ,
482+ availability_zone = None ,
483+ metadata = None ,
484+ imageRef = None ,
485+ source_volid = None ,
486+ consistencygroup_id = None ,
487+ source_replica = None ,
488+ multiattach = False ,
489+ scheduler_hints = None ,
490+ )
491+
492+ self .assertEqual (self .columns , columns )
493+ self .assertEqual (self .datalist , data )
494+ self .volumes_mock .set_bootable .assert_called_with (
495+ self .new_volume .id , True )
496+ self .volumes_mock .update_readonly_flag .assert_called_with (
497+ self .new_volume .id , True )
498+
499+ def test_volume_create_with_nonbootable_and_readwrite (self ):
500+ arglist = [
501+ '--non-bootable' ,
502+ '--read-write' ,
503+ '--size' , str (self .new_volume .size ),
504+ self .new_volume .name ,
505+ ]
506+ verifylist = [
507+ ('bootable' , False ),
508+ ('non_bootable' , True ),
509+ ('read_only' , False ),
510+ ('read_write' , True ),
511+ ('size' , self .new_volume .size ),
512+ ('name' , self .new_volume .name ),
513+ ]
514+
515+ parsed_args = self .check_parser (
516+ self .cmd , arglist , verifylist )
517+
518+ columns , data = self .cmd .take_action (parsed_args )
519+
520+ self .volumes_mock .create .assert_called_with (
521+ size = self .new_volume .size ,
522+ snapshot_id = None ,
523+ name = self .new_volume .name ,
524+ description = None ,
525+ volume_type = None ,
526+ user_id = None ,
527+ project_id = None ,
528+ availability_zone = None ,
529+ metadata = None ,
530+ imageRef = None ,
531+ source_volid = None ,
532+ consistencygroup_id = None ,
533+ source_replica = None ,
534+ multiattach = False ,
535+ scheduler_hints = None ,
536+ )
537+
538+ self .assertEqual (self .columns , columns )
539+ self .assertEqual (self .datalist , data )
540+ self .volumes_mock .set_bootable .assert_called_with (
541+ self .new_volume .id , False )
542+ self .volumes_mock .update_readonly_flag .assert_called_with (
543+ self .new_volume .id , False )
544+
545+ @mock .patch .object (volume .LOG , 'error' )
546+ def test_volume_create_with_bootable_and_readonly_fail (
547+ self , mock_error ):
548+
549+ self .volumes_mock .set_bootable .side_effect = (
550+ exceptions .CommandError ())
551+
552+ self .volumes_mock .update_readonly_flag .side_effect = (
553+ exceptions .CommandError ())
554+
555+ arglist = [
556+ '--bootable' ,
557+ '--read-only' ,
558+ '--size' , str (self .new_volume .size ),
559+ self .new_volume .name ,
560+ ]
561+ verifylist = [
562+ ('bootable' , True ),
563+ ('non_bootable' , False ),
564+ ('read_only' , True ),
565+ ('read_write' , False ),
566+ ('size' , self .new_volume .size ),
567+ ('name' , self .new_volume .name ),
568+ ]
569+
570+ parsed_args = self .check_parser (
571+ self .cmd , arglist , verifylist )
572+
573+ columns , data = self .cmd .take_action (parsed_args )
574+
575+ self .volumes_mock .create .assert_called_with (
576+ size = self .new_volume .size ,
577+ snapshot_id = None ,
578+ name = self .new_volume .name ,
579+ description = None ,
580+ volume_type = None ,
581+ user_id = None ,
582+ project_id = None ,
583+ availability_zone = None ,
584+ metadata = None ,
585+ imageRef = None ,
586+ source_volid = None ,
587+ consistencygroup_id = None ,
588+ source_replica = None ,
589+ multiattach = False ,
590+ scheduler_hints = None ,
591+ )
592+
593+ self .assertEqual (2 , mock_error .call_count )
594+ self .assertEqual (self .columns , columns )
595+ self .assertEqual (self .datalist , data )
596+ self .volumes_mock .set_bootable .assert_called_with (
597+ self .new_volume .id , True )
598+ self .volumes_mock .update_readonly_flag .assert_called_with (
599+ self .new_volume .id , True )
600+
453601 def test_volume_create_with_source_replicated (self ):
454602 self .volumes_mock .get .return_value = self .new_volume
455603 arglist = [
0 commit comments