)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"6f0f7f1437d88bf5a6f21c75d6aeadcf388337d1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cleanup of compute api reboot method"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The interaction of between the check_instance_state decorator for"},{"line_number":10,"context_line":"the compute api reboot method and the extra checking done within"},{"line_number":11,"context_line":"the method for task states was confusing and in some cases"},{"line_number":12,"context_line":"contradictory. For example although the decorator allowed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baa201ad_7d8b3268","line":9,"updated":"2014-10-14 15:40:29.000000000","message":"nit: \u0027of\u0027 shouldn\u0027t be there","commit_id":"780768f90642a04bb42cdaccf14c675e77787142"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"6f0f7f1437d88bf5a6f21c75d6aeadcf388337d1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"the method for task states was confusing and in some cases"},{"line_number":12,"context_line":"contradictory. For example although the decorator allowed"},{"line_number":13,"context_line":"instances with a task_state of REBOOTING_HARD, in practice it"},{"line_number":14,"context_line":"could never succed whether it was a soft or hard reboot."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Also several task states allowed by the decorator were implicitly"},{"line_number":17,"context_line":"rejected because they were not listed in the expected task_states for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baa201ad_5dad8e87","line":14,"updated":"2014-10-14 15:40:29.000000000","message":"nit: s/succed/succeed/","commit_id":"780768f90642a04bb42cdaccf14c675e77787142"}],"nova/compute/api.py":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"19444ce7258eeaa52a6cd9fea67f6c302a95f075","unresolved":false,"context_lines":[{"line_number":2216,"context_line":"    def reboot(self, context, instance, reboot_type):"},{"line_number":2217,"context_line":"        \"\"\"Reboot the given instance.\"\"\""},{"line_number":2218,"context_line":"        if reboot_type \u003d\u003d \u0027SOFT\u0027:"},{"line_number":2219,"context_line":"            if instance[\u0027vm_state\u0027] not in vm_states.ALLOW_SOFT_REBOOT:"},{"line_number":2220,"context_line":"                raise exception.InstanceInvalidState("},{"line_number":2221,"context_line":"                    attr\u003d\u0027vm_state\u0027,"},{"line_number":2222,"context_line":"                    instance_uuid\u003dinstance[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_b1438f6a","line":2219,"updated":"2014-11-18 09:33:39.000000000","message":"This is just duplicating the job of the decorator, because this \u0027reboot\u0027 method does 2 distinct things which have different preconditions.  It would be much better to have separate hard_reboot and soft_reboot methods and let the decorator check vm_state and task_state for each, IMO.","commit_id":"f0eb5acbfbb16c1a4bdfd4e6d94007b544bfcf24"},{"author":{"_account_id":13663,"name":"heijlong","email":"jhei@redhat.com","username":"parklong"},"change_message_id":"b8ce00dba8d6ce72b51af4afe6eda058ea507382","unresolved":false,"context_lines":[{"line_number":2216,"context_line":"    def reboot(self, context, instance, reboot_type):"},{"line_number":2217,"context_line":"        \"\"\"Reboot the given instance.\"\"\""},{"line_number":2218,"context_line":"        if reboot_type \u003d\u003d \u0027SOFT\u0027:"},{"line_number":2219,"context_line":"            if instance[\u0027vm_state\u0027] not in vm_states.ALLOW_SOFT_REBOOT:"},{"line_number":2220,"context_line":"                raise exception.InstanceInvalidState("},{"line_number":2221,"context_line":"                    attr\u003d\u0027vm_state\u0027,"},{"line_number":2222,"context_line":"                    instance_uuid\u003dinstance[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_147667a4","line":2219,"in_reply_to":"5a890539_b1438f6a","updated":"2015-03-03 08:42:49.000000000","message":"agree with Matthew that this is just duplicating the job of the decorator","commit_id":"f0eb5acbfbb16c1a4bdfd4e6d94007b544bfcf24"},{"author":{"_account_id":11642,"name":"Jesse J. Cook","email":"jesse.cook@rackspace.com","username":"crashenx"},"change_message_id":"31ff405cbcb251ea266145cbc866eb00d92ae973","unresolved":false,"context_lines":[{"line_number":2233,"context_line":"        state \u003d {\u0027SOFT\u0027: task_states.REBOOTING,"},{"line_number":2234,"context_line":"                 \u0027HARD\u0027: task_states.REBOOTING_HARD}[reboot_type]"},{"line_number":2235,"context_line":"        instance.task_state \u003d state"},{"line_number":2236,"context_line":"        instance.save(expected_task_state\u003d[None] + task_states.ALLOW_REBOOT)"},{"line_number":2237,"context_line":""},{"line_number":2238,"context_line":"        self._record_action_start(context, instance, instance_actions.REBOOT)"},{"line_number":2239,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_57bd1601","line":2236,"updated":"2014-11-17 16:05:52.000000000","message":"Is the expected_task_state the set of states from which the instance is expected to be in prior to saving?","commit_id":"f0eb5acbfbb16c1a4bdfd4e6d94007b544bfcf24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab06b1e4631e6baf814ed69029e0145638dc1d0c","unresolved":false,"context_lines":[{"line_number":2288,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":2289,"context_line":"                state\u003dinstance.task_state,"},{"line_number":2290,"context_line":"                method\u003d\u0027reboot\u0027)"},{"line_number":2291,"context_line":""},{"line_number":2292,"context_line":"        expected_task_state \u003d [None]"},{"line_number":2293,"context_line":"        instance.task_state \u003d task_states.REBOOTING"},{"line_number":2294,"context_line":"        instance.save(expected_task_state\u003dexpected_task_state)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab921fb_67d87cf0","line":2291,"updated":"2015-04-22 19:41:38.000000000","message":"Please don\u0027t add unrelated whitespace.","commit_id":"ab68c39dd4fbf352b5dace70c993ac0a93e2805d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab06b1e4631e6baf814ed69029e0145638dc1d0c","unresolved":false,"context_lines":[{"line_number":2309,"context_line":"                                    task_states.REBOOTING_HARD,"},{"line_number":2310,"context_line":"                                    task_states.RESUMING,"},{"line_number":2311,"context_line":"                                    task_states.UNPAUSING,"},{"line_number":2312,"context_line":"                                    task_states.SUSPENDING])"},{"line_number":2313,"context_line":"        instance.task_state \u003d task_states.REBOOTING_HARD"},{"line_number":2314,"context_line":"        instance.save(expected_task_state\u003dexpected_task_state)"},{"line_number":2315,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bab921fb_07c78013","line":2312,"updated":"2015-04-22 19:41:38.000000000","message":"Shouldn\u0027t this be task_states.ALLOW_REBOOT?","commit_id":"ab68c39dd4fbf352b5dace70c993ac0a93e2805d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c57b42ed1ea6dfa58d094daa908259c3ed51b808","unresolved":false,"context_lines":[{"line_number":2309,"context_line":"                                    task_states.RESUMING,"},{"line_number":2310,"context_line":"                                    task_states.UNPAUSING,"},{"line_number":2311,"context_line":"                                    task_states.SUSPENDING,"},{"line_number":2312,"context_line":"                                    task_states.ALLOW_REBOOT])"},{"line_number":2313,"context_line":"        instance.task_state \u003d task_states.REBOOTING_HARD"},{"line_number":2314,"context_line":"        instance.save(expected_task_state\u003dexpected_task_state)"},{"line_number":2315,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bab921fb_da9b6fc8","line":2312,"updated":"2015-04-23 17:27:06.000000000","message":"I think you read my comment too literally. This is clearly not right.\n\nMy question was: this list of states must match ALLOW_REBOOT or else we\u0027d have a failure when we save. So, can we not just remove this creation of a new list and pass ALLOW_REBOOT to instance.save()?","commit_id":"ecd728bd1109867a5938940626e8fda5e4465a92"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1a05e73af0fc5574a76029128951a25e37668abf","unresolved":false,"context_lines":[{"line_number":2280,"context_line":"            self._hard_reboot(context, instance)"},{"line_number":2281,"context_line":"        else:"},{"line_number":2282,"context_line":"            raise exception.InvalidInput("},{"line_number":2283,"context_line":"                        reason\u003d\"Reboot type must be SOFT or HARD\")"},{"line_number":2284,"context_line":""},{"line_number":2285,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT))"},{"line_number":2286,"context_line":"    def _soft_reboot(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa32b979_afd20ccf","line":2283,"updated":"2015-06-19 05:45:48.000000000","message":"the reason should be translated\n\nthis should be:\nreason\u003d_(\"Reboot type must be SOFT or HARD\")","commit_id":"be2cabb6a97670dbfe27144cdac12281ea53e5c7"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"5f81083aef64d27dcae121d965e6c1f7c932c93a","unresolved":false,"context_lines":[{"line_number":2280,"context_line":"            self._hard_reboot(context, instance)"},{"line_number":2281,"context_line":"        else:"},{"line_number":2282,"context_line":"            raise exception.InvalidInput("},{"line_number":2283,"context_line":"                        reason\u003d\"Reboot type must be SOFT or HARD\")"},{"line_number":2284,"context_line":""},{"line_number":2285,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT))"},{"line_number":2286,"context_line":"    def _soft_reboot(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa32b979_e3b65a3d","line":2283,"in_reply_to":"fa32b979_afd20ccf","updated":"2015-06-23 23:05:22.000000000","message":"Done","commit_id":"be2cabb6a97670dbfe27144cdac12281ea53e5c7"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"995213e045980df854ddfedb92ac2251d0a18dec","unresolved":false,"context_lines":[{"line_number":2291,"context_line":"                        reason\u003d_LI(\"Reboot type must be SOFT or HARD\"))"},{"line_number":2292,"context_line":""},{"line_number":2293,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT),"},{"line_number":2294,"context_line":"                          task_state\u003dtask_states.ALLOW_REBOOT)"},{"line_number":2295,"context_line":"    def _soft_reboot(self, context, instance):"},{"line_number":2296,"context_line":"        if instance.task_state is not None:"},{"line_number":2297,"context_line":"            raise exception.InstanceInvalidState("}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_56b1ed8d","line":2294,"updated":"2015-07-08 16:29:08.000000000","message":"should we check task_state is None here directly? \nonly [None] is allowed?","commit_id":"7632f8d0512980acc7b43f618b200761d53bfa1e"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"bdede8eab380d3fc83bee259be5eeed54bd89d89","unresolved":false,"context_lines":[{"line_number":2291,"context_line":"                        reason\u003d_LI(\"Reboot type must be SOFT or HARD\"))"},{"line_number":2292,"context_line":""},{"line_number":2293,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT),"},{"line_number":2294,"context_line":"                          task_state\u003dtask_states.ALLOW_REBOOT)"},{"line_number":2295,"context_line":"    def _soft_reboot(self, context, instance):"},{"line_number":2296,"context_line":"        if instance.task_state is not None:"},{"line_number":2297,"context_line":"            raise exception.InstanceInvalidState("}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_e1c87657","line":2294,"in_reply_to":"ba3cc151_56b1ed8d","updated":"2015-07-08 19:01:40.000000000","message":"I think we want to get the exception below if they try to reboot with the wrong state","commit_id":"7632f8d0512980acc7b43f618b200761d53bfa1e"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"06ea7a2ca4cffafd0e02ddd50e864a496eeaf9a7","unresolved":false,"context_lines":[{"line_number":2291,"context_line":"                        reason\u003d_LI(\"Reboot type must be SOFT or HARD\"))"},{"line_number":2292,"context_line":""},{"line_number":2293,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT),"},{"line_number":2294,"context_line":"                          task_state\u003dtask_states.ALLOW_REBOOT)"},{"line_number":2295,"context_line":"    def _soft_reboot(self, context, instance):"},{"line_number":2296,"context_line":"        if instance.task_state is not None:"},{"line_number":2297,"context_line":"            raise exception.InstanceInvalidState("}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_42a5559f","line":2294,"in_reply_to":"ba3cc151_e1c87657","updated":"2015-07-09 22:49:20.000000000","message":"Done","commit_id":"7632f8d0512980acc7b43f618b200761d53bfa1e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8bf1b7d7b587e76bb02b2c68edcc1aac850d593f","unresolved":false,"context_lines":[{"line_number":2375,"context_line":"            self._hard_reboot(context, instance)"},{"line_number":2376,"context_line":"        else:"},{"line_number":2377,"context_line":"            raise exception.InvalidInput("},{"line_number":2378,"context_line":"                        reason\u003d_LI(\"Reboot type must be SOFT or HARD\"))"},{"line_number":2379,"context_line":""},{"line_number":2380,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT),"},{"line_number":2381,"context_line":"                          task_state\u003d[None])"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_88ecbf93","line":2378,"updated":"2015-08-14 08:43:24.000000000","message":"It is a new case that was not in the original code. Do you have some test case that shows it can happen and if it happens then the exceptions is handled properly?\nIt seems to me that both v2 and v21 API validates the input properly so this cannot happen.","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b3b045c3dee0e86d33025d5551dce48b3e659137","unresolved":false,"context_lines":[{"line_number":2375,"context_line":"            self._hard_reboot(context, instance)"},{"line_number":2376,"context_line":"        else:"},{"line_number":2377,"context_line":"            raise exception.InvalidInput("},{"line_number":2378,"context_line":"                        reason\u003d_LI(\"Reboot type must be SOFT or HARD\"))"},{"line_number":2379,"context_line":""},{"line_number":2380,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT),"},{"line_number":2381,"context_line":"                          task_state\u003d[None])"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_16f8897b","line":2378,"in_reply_to":"1a4dcd0f_545de446","updated":"2015-08-17 07:23:22.000000000","message":"I\u0027m not against being careful, I more wanted to state that we need to ensure if this happens then the layers above will handle the exception properly. Meanwhile I checked and it seems API returns HTTP 400 in this case which seems OK to me.","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"cb3cc487983e27c562cb110eb9e47943e15b8b20","unresolved":false,"context_lines":[{"line_number":2375,"context_line":"            self._hard_reboot(context, instance)"},{"line_number":2376,"context_line":"        else:"},{"line_number":2377,"context_line":"            raise exception.InvalidInput("},{"line_number":2378,"context_line":"                        reason\u003d_LI(\"Reboot type must be SOFT or HARD\"))"},{"line_number":2379,"context_line":""},{"line_number":2380,"context_line":"    @check_instance_state(vm_state\u003dset(vm_states.ALLOW_SOFT_REBOOT),"},{"line_number":2381,"context_line":"                          task_state\u003d[None])"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_545de446","line":2378,"in_reply_to":"1a4dcd0f_88ecbf93","updated":"2015-08-14 13:37:11.000000000","message":"i don\u0027t but i just just being careful that if something upstream from this broke that we did not do something wrong.  Do you think i should remove it?","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"aa990613501adf8e36828fda614d505ca6d51bcd","unresolved":false,"context_lines":[{"line_number":2388,"context_line":"                method\u003d\u0027reboot\u0027)"},{"line_number":2389,"context_line":"        expected_task_state \u003d [None]"},{"line_number":2390,"context_line":"        if reboot_type \u003d\u003d \u0027HARD\u0027:"},{"line_number":2391,"context_line":"            expected_task_state.extend([task_states.REBOOTING,"},{"line_number":2392,"context_line":"                                        task_states.REBOOT_PENDING,"},{"line_number":2393,"context_line":"                                        task_states.REBOOT_STARTED,"},{"line_number":2394,"context_line":"                                        task_states.REBOOTING_HARD,"},{"line_number":2395,"context_line":"                                        task_states.RESUMING,"},{"line_number":2396,"context_line":"                                        task_states.UNPAUSING,"},{"line_number":2397,"context_line":"                                        task_states.SUSPENDING])"},{"line_number":2398,"context_line":"        state \u003d {\u0027SOFT\u0027: task_states.REBOOTING,"},{"line_number":2399,"context_line":"                 \u0027HARD\u0027: task_states.REBOOTING_HARD}[reboot_type]"},{"line_number":2400,"context_line":"        instance.task_state \u003d state"}],"source_content_type":"text/x-python","patch_set":45,"id":"1a26ad4f_dc08f893","side":"PARENT","line":2397,"range":{"start_line":2391,"start_character":0,"end_line":2397,"end_character":64},"updated":"2015-10-30 08:07:37.000000000","message":"task_states.PAUSING isn\u0027t in the expected_task_state here","commit_id":"2c3f9c339cae24576fefb66a91995d6612bb4ab2"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"aa990613501adf8e36828fda614d505ca6d51bcd","unresolved":false,"context_lines":[{"line_number":2385,"context_line":"                          task_state\u003dtask_states.ALLOW_REBOOT)"},{"line_number":2386,"context_line":"    def _hard_reboot(self, context, instance):"},{"line_number":2387,"context_line":"        instance.task_state \u003d task_states.REBOOTING_HARD"},{"line_number":2388,"context_line":"        instance.save(expected_task_state\u003dtask_states.ALLOW_REBOOT)"},{"line_number":2389,"context_line":""},{"line_number":2390,"context_line":"        self._record_action_start(context, instance, instance_actions.REBOOT)"},{"line_number":2391,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"1a26ad4f_bc2c1c03","line":2388,"updated":"2015-10-30 08:07:37.000000000","message":"This is using task_states.ALLOW_REBOOT which has task_state.PAUSING in it","commit_id":"7be7772ce397feb3431ca09dc195d9fe86ab8a4a"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"2316a8bfb7501df73e2eaba0188c7dde0bbb9d2e","unresolved":false,"context_lines":[{"line_number":2385,"context_line":"                          task_state\u003dtask_states.ALLOW_REBOOT)"},{"line_number":2386,"context_line":"    def _hard_reboot(self, context, instance):"},{"line_number":2387,"context_line":"        instance.task_state \u003d task_states.REBOOTING_HARD"},{"line_number":2388,"context_line":"        instance.save(expected_task_state\u003dtask_states.ALLOW_REBOOT)"},{"line_number":2389,"context_line":""},{"line_number":2390,"context_line":"        self._record_action_start(context, instance, instance_actions.REBOOT)"},{"line_number":2391,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"ba8a016a_aa77d500","line":2388,"in_reply_to":"1a26ad4f_bc2c1c03","updated":"2015-11-24 00:20:49.000000000","message":"i\u0027ve addressed this","commit_id":"7be7772ce397feb3431ca09dc195d9fe86ab8a4a"}],"nova/compute/task_states.py":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"786d4df38d8b8e0160c86630f5ee4958711c0b0b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"# possible task states during unshelve()"},{"line_number":114,"context_line":"UNSHELVING \u003d \u0027unshelving\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"ALLOW_REBOOT \u003d [REBOOTING, REBOOT_PENDING, REBOOT_STARTED, RESUMING,"},{"line_number":117,"context_line":"                UNPAUSING, PAUSING, SUSPENDING]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_071fc0b7","line":116,"updated":"2014-11-18 11:06:44.000000000","message":"Shouldn\u0027t we have None in here too?","commit_id":"f0eb5acbfbb16c1a4bdfd4e6d94007b544bfcf24"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b58efd4ccb502f4d954204e2ceee44505cdf72cc","unresolved":false,"context_lines":[{"line_number":114,"context_line":"UNSHELVING \u003d \u0027unshelving\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"ALLOW_REBOOT \u003d [None, REBOOTING, REBOOT_PENDING, REBOOT_STARTED, RESUMING,"},{"line_number":117,"context_line":"                UNPAUSING, PAUSING, SUSPENDING]"}],"source_content_type":"text/x-python","patch_set":39,"id":"1a4dcd0f_96b95018","line":117,"updated":"2015-08-13 22:57:36.000000000","message":"REBOOTING_HARD should be a part of this set now","commit_id":"7e376bc792a7d5bb7140d3553cc5b012c0105f4a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8bf1b7d7b587e76bb02b2c68edcc1aac850d593f","unresolved":false,"context_lines":[{"line_number":114,"context_line":"UNSHELVING \u003d \u0027unshelving\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"ALLOW_REBOOT \u003d [None, REBOOTING, REBOOT_PENDING, REBOOT_STARTED, RESUMING,"},{"line_number":117,"context_line":"                REBOOTING_HARD, UNPAUSING, PAUSING, SUSPENDING]"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_68b7f3f5","line":117,"range":{"start_line":117,"start_character":43,"end_line":117,"end_character":50},"updated":"2015-08-14 08:43:24.000000000","message":"The original code did not allowed PAUSING task state in case of HARD reboot. Is it safe to allow now?","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b3b045c3dee0e86d33025d5551dce48b3e659137","unresolved":false,"context_lines":[{"line_number":114,"context_line":"UNSHELVING \u003d \u0027unshelving\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"ALLOW_REBOOT \u003d [None, REBOOTING, REBOOT_PENDING, REBOOT_STARTED, RESUMING,"},{"line_number":117,"context_line":"                REBOOTING_HARD, UNPAUSING, PAUSING, SUSPENDING]"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_f6ecfdbc","line":117,"range":{"start_line":117,"start_character":43,"end_line":117,"end_character":50},"in_reply_to":"1a4dcd0f_64e625b2","updated":"2015-08-17 07:23:22.000000000","message":"I agree with Andrew.","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"cb3cc487983e27c562cb110eb9e47943e15b8b20","unresolved":false,"context_lines":[{"line_number":114,"context_line":"UNSHELVING \u003d \u0027unshelving\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"ALLOW_REBOOT \u003d [None, REBOOTING, REBOOT_PENDING, REBOOT_STARTED, RESUMING,"},{"line_number":117,"context_line":"                REBOOTING_HARD, UNPAUSING, PAUSING, SUSPENDING]"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_f41bd07e","line":117,"range":{"start_line":117,"start_character":43,"end_line":117,"end_character":50},"in_reply_to":"1a4dcd0f_68b7f3f5","updated":"2015-08-14 13:37:11.000000000","message":"I understood from the commit message that some cases are not properly handled as thy were missing.  That is why i added pause.","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"28274ae2ed958b119dd2fe0908d0ae409761f6d8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"UNSHELVING \u003d \u0027unshelving\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"ALLOW_REBOOT \u003d [None, REBOOTING, REBOOT_PENDING, REBOOT_STARTED, RESUMING,"},{"line_number":117,"context_line":"                REBOOTING_HARD, UNPAUSING, PAUSING, SUSPENDING]"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_64e625b2","line":117,"range":{"start_line":117,"start_character":43,"end_line":117,"end_character":50},"in_reply_to":"1a4dcd0f_f41bd07e","updated":"2015-08-14 17:31:33.000000000","message":"It would be better to separate this additional task state allowance into another patch.  The refactor is great for cleaning all of this up and it shouldn\u0027t need to wait until we can determine if it\u0027s safe to reboot --hard while a pause is in progress.","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"5566603ac5d131d1525ae5bc16a469d2aa76f86d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"UNSHELVING \u003d \u0027unshelving\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"ALLOW_REBOOT \u003d [None, REBOOTING, REBOOT_PENDING, REBOOT_STARTED, RESUMING,"},{"line_number":117,"context_line":"                REBOOTING_HARD, UNPAUSING, PAUSING, SUSPENDING]"}],"source_content_type":"text/x-python","patch_set":43,"id":"3a29b11f_504a0d56","line":117,"range":{"start_line":117,"start_character":43,"end_line":117,"end_character":50},"in_reply_to":"1a4dcd0f_f6ecfdbc","updated":"2015-10-22 23:49:59.000000000","message":"i reviewed the previous code again and i believe that PAUSING was allowed from a hard reboot.  please see lin 2378 of api.py.  I may be mistaken but it looks like it to me","commit_id":"a74677245176cc92898bcaacafd5ffaa430aab2b"}],"nova/tests/unit/api/openstack/compute/test_server_actions.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1f1e42a760d9232aad10c5b3dbc5cfc789228b1b","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                                        task_state\u003dtask_states.REBOOTING))"},{"line_number":259,"context_line":"        self.controller._action_reboot(self.req, FAKE_UUID, body\u003dbody)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def test_reboot_hard_with_pause_in_progress_does_not_raise(self):"},{"line_number":262,"context_line":"        body \u003d dict(reboot\u003ddict(type\u003d\"HARD\"))"},{"line_number":263,"context_line":"        self.stubs.Set(db, \u0027instance_get_by_uuid\u0027,"},{"line_number":264,"context_line":"                       fakes.fake_instance_get(vm_state\u003dvm_states.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a4dcd0f_672df0a7","line":261,"updated":"2015-08-14 01:10:20.000000000","message":"Sorry I didn\u0027t notice this was changing the existing test that hard reboot works during hard rebooting task state. We still need that test, so we either need to not change it to this, or add this one as an additional test. Either way, we need to keep test_reboot_hard_with_hard_in_progress","commit_id":"fea82187c98f4387c8b193120c6f02b59da848db"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8ba2392b4b095a7e9356b4bd4db6c60eb8cb88fe","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                       fakes.fake_instance_get(vm_state\u003dvm_states.ACTIVE,"},{"line_number":258,"context_line":"                                        task_state\u003dtask_states.REBOOTING))"},{"line_number":259,"context_line":"        self.controller._action_reboot(self.req, FAKE_UUID, body\u003dbody)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def test_reboot_hard_with_hard_in_progress(self):"},{"line_number":262,"context_line":"        body \u003d dict(reboot\u003ddict(type\u003d\"HARD\"))"},{"line_number":263,"context_line":"        self.stubs.Set(db, \u0027instance_get_by_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":54,"id":"9a8ffd7b_0cfacabd","side":"PARENT","line":260,"updated":"2015-12-02 00:30:13.000000000","message":"Why is this test being removed? I thought this was passing in PS45","commit_id":"e6408cd380fcdc3be62bd3dc876f2cdd6f97671b"}]}
