)]}'
{"nova/compute/api.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"abc96bf8506b846dd9486c26d72d292a23110e68","unresolved":false,"context_lines":[{"line_number":2700,"context_line":""},{"line_number":2701,"context_line":"    def _attach_volume(self, context, instance, volume_id, device,"},{"line_number":2702,"context_line":"                       disk_bus, device_type):"},{"line_number":2703,"context_line":"        \"\"\"Attach an existing volume to an existing instance.  This method"},{"line_number":2704,"context_line":"        is separated to make it possible for cells version to override."},{"line_number":2705,"context_line":"        \"\"\""},{"line_number":2706,"context_line":"        # NOTE(vish): This is done on the compute host because we want"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2FiVA%3D","line":2703,"updated":"2014-03-07 08:50:57.000000000","message":"Minor nit - a docstring, if multiline, should really have one title line.","commit_id":"615728d4343d45dd22a0cf0302849d2698646198"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b37129347a77175176db9de29b51ba627af2e228","unresolved":false,"context_lines":[{"line_number":2730,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":2731,"context_line":"                                    vm_states.SUSPENDED, vm_states.STOPPED,"},{"line_number":2732,"context_line":"                                    vm_states.RESIZED, vm_states.SOFT_DELETED],"},{"line_number":2733,"context_line":"                          task_state\u003d[None])"},{"line_number":2734,"context_line":"    def attach_volume(self, context, instance, volume_id, device\u003dNone,"},{"line_number":2735,"context_line":"                       disk_bus\u003dNone, device_type\u003dNone):"},{"line_number":2736,"context_line":"        \"\"\"Attach an existing volume to an existing instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2F87s%3D","line":2733,"updated":"2014-03-03 08:04:18.000000000","message":"Only my thoughts : Do we have a list that some task state like following (as example) might accept the attach/detach operations? \n\nfrom libvirt driver.py\nif state \u003d\u003d power_state.RUNNING:\n                flags |\u003d libvirt.VIR_DOMAIN_AFFECT_LIVE\n\nif this is not an active domain, only update xml.... so some task state can accept this operation? \n\n\n# possible task states during pause()\nPAUSING \u003d \u0027pausing\u0027\n\n# possible task states during unpause()\nUNPAUSING \u003d \u0027unpausing\u0027\n\n# possible task states during suspend()\nSUSPENDING \u003d \u0027suspending\u0027\n\n# possible task states during resume()\nRESUMING \u003d \u0027resuming\u0027","commit_id":"615728d4343d45dd22a0cf0302849d2698646198"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"abc96bf8506b846dd9486c26d72d292a23110e68","unresolved":false,"context_lines":[{"line_number":2730,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":2731,"context_line":"                                    vm_states.SUSPENDED, vm_states.STOPPED,"},{"line_number":2732,"context_line":"                                    vm_states.RESIZED, vm_states.SOFT_DELETED],"},{"line_number":2733,"context_line":"                          task_state\u003d[None])"},{"line_number":2734,"context_line":"    def attach_volume(self, context, instance, volume_id, device\u003dNone,"},{"line_number":2735,"context_line":"                       disk_bus\u003dNone, device_type\u003dNone):"},{"line_number":2736,"context_line":"        \"\"\"Attach an existing volume to an existing instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2FicE%3D","line":2733,"in_reply_to":"AAAAVn%2F%2F87s%3D","updated":"2014-03-07 08:50:57.000000000","message":"So this needs to really work for all the drivers so things like checking for libvirt in the API is out of the question.","commit_id":"615728d4343d45dd22a0cf0302849d2698646198"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e43386cca4955045565707eb086d327247298980","unresolved":false,"context_lines":[{"line_number":2769,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":2770,"context_line":"                                    vm_states.SUSPENDED, vm_states.STOPPED,"},{"line_number":2771,"context_line":"                                    vm_states.RESIZED, vm_states.SOFT_DELETED],"},{"line_number":2772,"context_line":"                          task_state\u003d[None])"},{"line_number":2773,"context_line":"    def detach_volume(self, context, instance, volume):"},{"line_number":2774,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":2775,"context_line":"        if volume[\u0027attach_status\u0027] \u003d\u003d \u0027detached\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Fvc8%3D","line":2772,"updated":"2014-03-14 04:06:28.000000000","message":"isn\u0027t this new setting of task_state just the equivalent of the default - eg don\u0027t need to specify task_state at all and it will do what we want?","commit_id":"a70c5eb83d14541c2297b6d834dff1c0ac00962e"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"55eeb1d6d3e54ec3c2b41cec5b72f0cffbf1bbb6","unresolved":false,"context_lines":[{"line_number":2769,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":2770,"context_line":"                                    vm_states.SUSPENDED, vm_states.STOPPED,"},{"line_number":2771,"context_line":"                                    vm_states.RESIZED, vm_states.SOFT_DELETED],"},{"line_number":2772,"context_line":"                          task_state\u003d[None])"},{"line_number":2773,"context_line":"    def detach_volume(self, context, instance, volume):"},{"line_number":2774,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":2775,"context_line":"        if volume[\u0027attach_status\u0027] \u003d\u003d \u0027detached\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FtZg%3D","line":2772,"in_reply_to":"AAAAWH%2F%2Fvc8%3D","updated":"2014-03-14 10:11:33.000000000","message":"No, I think its explicitly saying the task state must be \"None\" (i.e None is the only values in a list of acceptable values , whereas the default is \"Don\u0027t care\" (the list itself is None).","commit_id":"a70c5eb83d14541c2297b6d834dff1c0ac00962e"}],"nova/tests/compute/test_compute_api.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"fc6b448fb647c0b1dd6166d96933956f1aa7891f","unresolved":false,"context_lines":[{"line_number":1690,"context_line":"                          \"new password\","},{"line_number":1691,"context_line":"                          auto_disk_config\u003dTrue)"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"    def test_attach_volume_invalid_task_state(self):"},{"line_number":1694,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":1695,"context_line":"        self.assertEqual(instance.vm_state, vm_states.ACTIVE)"},{"line_number":1696,"context_line":"        instance.task_state \u003d \u0027Any\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAU3%2F%2F%2BB8%3D","line":1693,"updated":"2014-02-23 09:23:00.000000000","message":"There\u0027s a lot of common setup code between these three tests and they all expect the same exception. Do you think you could refactor them a bit to share this?","commit_id":"fa8f2a10e7a467aaca6917d52b8ae9cf087700ca"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"b1b6359d89f70f295560b0bb3f6111e717d31b50","unresolved":false,"context_lines":[{"line_number":1690,"context_line":"                          \"new password\","},{"line_number":1691,"context_line":"                          auto_disk_config\u003dTrue)"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"    def test_attach_volume_invalid_task_state(self):"},{"line_number":1694,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":1695,"context_line":"        self.assertEqual(instance.vm_state, vm_states.ACTIVE)"},{"line_number":1696,"context_line":"        instance.task_state \u003d \u0027Any\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAU3%2F%2FYwM%3D","line":1693,"in_reply_to":"AAAAU3%2F%2F%2BB8%3D","updated":"2014-02-26 22:09:25.000000000","message":"Not sure I\u0027d really call 3 lines in each method \"a lot of common setup code\"  - but I\u0027ll take a go","commit_id":"fa8f2a10e7a467aaca6917d52b8ae9cf087700ca"}]}
