@@ -653,6 +653,115 @@ def test_resume_instance_exception(self):
653653
654654 self .assertRedirectsNoFollow (res , INDEX_URL )
655655
656+ @helpers .create_stubs ({api .nova : ('server_lock' ,
657+ 'server_list' ,
658+ 'extension_supported' ,),
659+ api .glance : ('image_list_detailed' ,),
660+ api .network : ('servers_update_addresses' ,)})
661+ def test_lock_instance (self ):
662+ servers = self .servers .list ()
663+ server = servers [0 ]
664+
665+ api .nova .extension_supported ('AdminActions' , IsA (
666+ http .HttpRequest )).MultipleTimes ().AndReturn (True )
667+ api .glance .image_list_detailed (IgnoreArg ()).AndReturn ((
668+ self .images .list (), False , False ))
669+ search_opts = {'marker' : None , 'paginate' : True }
670+ api .nova .server_list (
671+ IsA (http .HttpRequest ),
672+ search_opts = search_opts ).AndReturn ([servers , False ])
673+ api .network .servers_update_addresses (IsA (http .HttpRequest ), servers )
674+ api .nova .server_lock (IsA (http .HttpRequest ), server .id )
675+
676+ self .mox .ReplayAll ()
677+
678+ formData = {'action' : 'instances__lock__%s' % server .id }
679+ res = self .client .post (INDEX_URL , formData )
680+
681+ self .assertRedirectsNoFollow (res , INDEX_URL )
682+
683+ @helpers .create_stubs ({api .nova : ('server_lock' ,
684+ 'server_list' ,
685+ 'extension_supported' ,),
686+ api .glance : ('image_list_detailed' ,),
687+ api .network : ('servers_update_addresses' ,)})
688+ def test_lock_instance_exception (self ):
689+ servers = self .servers .list ()
690+ server = servers [0 ]
691+
692+ api .nova .extension_supported ('AdminActions' , IsA (
693+ http .HttpRequest )).MultipleTimes ().AndReturn (True )
694+ api .glance .image_list_detailed (IgnoreArg ()).AndReturn ((
695+ self .images .list (), False , False ))
696+ search_opts = {'marker' : None , 'paginate' : True }
697+ api .nova .server_list (
698+ IsA (http .HttpRequest ),
699+ search_opts = search_opts ).AndReturn ([servers , False ])
700+ api .network .servers_update_addresses (IsA (http .HttpRequest ), servers )
701+ api .nova .server_lock (IsA (http .HttpRequest ), server .id ).AndRaise (
702+ self .exceptions .nova )
703+
704+ self .mox .ReplayAll ()
705+
706+ formData = {'action' : 'instances__lock__%s' % server .id }
707+ res = self .client .post (INDEX_URL , formData )
708+
709+ self .assertRedirectsNoFollow (res , INDEX_URL )
710+
711+ @helpers .create_stubs ({api .nova : ('server_unlock' ,
712+ 'server_list' ,
713+ 'extension_supported' ,),
714+ api .glance : ('image_list_detailed' ,),
715+ api .network : ('servers_update_addresses' ,)})
716+ def test_unlock_instance (self ):
717+ servers = self .servers .list ()
718+ server = servers [0 ]
719+ api .nova .extension_supported ('AdminActions' , IsA (
720+ http .HttpRequest )).MultipleTimes ().AndReturn (True )
721+ api .glance .image_list_detailed (IgnoreArg ()).AndReturn ((
722+ self .images .list (), False , False ))
723+ search_opts = {'marker' : None , 'paginate' : True }
724+ api .nova .server_list (
725+ IsA (http .HttpRequest ),
726+ search_opts = search_opts ).AndReturn ([servers , False ])
727+ api .network .servers_update_addresses (IsA (http .HttpRequest ), servers )
728+ api .nova .server_unlock (IsA (http .HttpRequest ), server .id )
729+
730+ self .mox .ReplayAll ()
731+
732+ formData = {'action' : 'instances__unlock__%s' % server .id }
733+ res = self .client .post (INDEX_URL , formData )
734+
735+ self .assertRedirectsNoFollow (res , INDEX_URL )
736+
737+ @helpers .create_stubs ({api .nova : ('server_unlock' ,
738+ 'server_list' ,
739+ 'extension_supported' ,),
740+ api .glance : ('image_list_detailed' ,),
741+ api .network : ('servers_update_addresses' ,)})
742+ def test_unlock_instance_exception (self ):
743+ servers = self .servers .list ()
744+ server = servers [0 ]
745+
746+ api .nova .extension_supported ('AdminActions' , IsA (
747+ http .HttpRequest )).MultipleTimes ().AndReturn (True )
748+ api .glance .image_list_detailed (IgnoreArg ()).AndReturn ((
749+ self .images .list (), False , False ))
750+ search_opts = {'marker' : None , 'paginate' : True }
751+ api .nova .server_list (
752+ IsA (http .HttpRequest ),
753+ search_opts = search_opts ).AndReturn ([servers , False ])
754+ api .network .servers_update_addresses (IsA (http .HttpRequest ), servers )
755+ api .nova .server_unlock (IsA (http .HttpRequest ), server .id ).AndRaise (
756+ self .exceptions .nova )
757+
758+ self .mox .ReplayAll ()
759+
760+ formData = {'action' : 'instances__unlock__%s' % server .id }
761+ res = self .client .post (INDEX_URL , formData )
762+
763+ self .assertRedirectsNoFollow (res , INDEX_URL )
764+
656765 @helpers .create_stubs ({
657766 api .nova : (
658767 "server_get" ,
0 commit comments