)]}'
{"nova/compute/api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1cc5e692ea3df8acdc149eff89545eb63c536f49","unresolved":false,"context_lines":[{"line_number":431,"context_line":""},{"line_number":432,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":433,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":434,"context_line":"        if (min_count \u003e 1 or max_count \u003e 1):"},{"line_number":435,"context_line":"            if bdm_length \u003e 1:"},{"line_number":436,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances with multiple\u0027"},{"line_number":437,"context_line":"                        \u0027 block device mappings\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FyvA%3D","line":434,"updated":"2013-01-04 21:21:46.000000000","message":"The parentheses here are unnecessary (femtonit)","commit_id":"8f52c428ce1bba63d0d26f53e3f61464a1b591e5"},{"author":{"_account_id":4120,"name":"Rohit Karajgi","email":"rohit.karajgi@ril.com","username":"rohitkarajgi"},"unresolved":false,"context_lines":[{"line_number":431,"context_line":""},{"line_number":432,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":433,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":434,"context_line":"        if (min_count \u003e 1 or max_count \u003e 1):"},{"line_number":435,"context_line":"            if bdm_length \u003e 1:"},{"line_number":436,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances with multiple\u0027"},{"line_number":437,"context_line":"                        \u0027 block device mappings\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FwtY%3D","line":434,"in_reply_to":"AAAAM3%2F%2FyvA%3D","updated":"2013-01-07 10:51:51.000000000","message":"Done","commit_id":"8f52c428ce1bba63d0d26f53e3f61464a1b591e5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"unresolved":false,"context_lines":[{"line_number":432,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":433,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":434,"context_line":"        if min_count \u003e 1 or max_count \u003e 1:"},{"line_number":435,"context_line":"            if bdm_length \u003e 1:"},{"line_number":436,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances with multiple\u0027"},{"line_number":437,"context_line":"                        \u0027 block device mappings\u0027)"},{"line_number":438,"context_line":"                raise exception.InvalidRequest(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FwcQ%3D","line":435,"updated":"2013-01-07 14:36:11.000000000","message":"Are these really two distinct cases? It seems to me that currently if there is \u0027volume\u0027 in the bdms when starting more than one instance - it has to fail since only the first instance will be able to attach the volume.\n\nSo basically I think we should have something like:\n\nif any(map(lambda bdm: \u0027volume_id\u0027 in bdm, block_device_mapping)):\n    riase exception.InvalidRequest\n\nOr something along those lines.","commit_id":"16222ccfb4136d7e668fcc0808cc5f49c39f119b"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"unresolved":false,"context_lines":[{"line_number":432,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":433,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":434,"context_line":"        if min_count \u003e 1 or max_count \u003e 1:"},{"line_number":435,"context_line":"            if bdm_length \u003e 1:"},{"line_number":436,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances with multiple\u0027"},{"line_number":437,"context_line":"                        \u0027 block device mappings\u0027)"},{"line_number":438,"context_line":"                raise exception.InvalidRequest(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Fsng%3D","line":435,"in_reply_to":"AAAAM3%2F%2FsqA%3D","updated":"2013-01-09 09:10:49.000000000","message":"but in that case - we should not allow for more than one snapshot even if we are starting just one instance (as it will still be ambiguous by your definition), or am I reading this wrong?\n\nThis is of course a valid point. I think we should let user be more explicit as to which volume is the one to boot from (definitely out of the scope of this) rather then forbid more than one snapshot (which can be useful to people).","commit_id":"16222ccfb4136d7e668fcc0808cc5f49c39f119b"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"unresolved":false,"context_lines":[{"line_number":432,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":433,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":434,"context_line":"        if min_count \u003e 1 or max_count \u003e 1:"},{"line_number":435,"context_line":"            if bdm_length \u003e 1:"},{"line_number":436,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances with multiple\u0027"},{"line_number":437,"context_line":"                        \u0027 block device mappings\u0027)"},{"line_number":438,"context_line":"                raise exception.InvalidRequest(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Fuz8%3D","line":435,"in_reply_to":"AAAAM3%2F%2Fu8I%3D","updated":"2013-01-08 12:58:38.000000000","message":"Passing as many snapshots as you like is OK - nova.compute.api._create_instance will create a distinct bdm database entry for each instance that has a snapshot_id and no volume_id. Once the request gets to the compute node - the manager will call nova.compute.manager._setup_block_device_mapping which will create a volume for each snapshot bdm (this can still fail if you break volume quotas and such).\n\nSo generally passing a snapshot(s) to n instance create will result in n DISTINCT volumes being created from that snapshot and attached so this is a valid case. Only if a volume is specified to a multi-isntance boot will this fail - therefore my objections stands.","commit_id":"16222ccfb4136d7e668fcc0808cc5f49c39f119b"},{"author":{"_account_id":4120,"name":"Rohit Karajgi","email":"rohit.karajgi@ril.com","username":"rohitkarajgi"},"unresolved":false,"context_lines":[{"line_number":432,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":433,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":434,"context_line":"        if min_count \u003e 1 or max_count \u003e 1:"},{"line_number":435,"context_line":"            if bdm_length \u003e 1:"},{"line_number":436,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances with multiple\u0027"},{"line_number":437,"context_line":"                        \u0027 block device mappings\u0027)"},{"line_number":438,"context_line":"                raise exception.InvalidRequest(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FsqA%3D","line":435,"in_reply_to":"AAAAM3%2F%2Fuz8%3D","updated":"2013-01-09 08:37:52.000000000","message":"OK. If m snapshots for n instances are allowed, then your objection and hence your code suggestion is valid. I was of the opinion that this should not be allowed since there would be ambiguity in booting from a bootable attached volume.\nSo, the user should be aware that the instance will only boot from the first volume that is attached to it, which is how the behavior is now.","commit_id":"16222ccfb4136d7e668fcc0808cc5f49c39f119b"},{"author":{"_account_id":4120,"name":"Rohit Karajgi","email":"rohit.karajgi@ril.com","username":"rohitkarajgi"},"unresolved":false,"context_lines":[{"line_number":432,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":433,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":434,"context_line":"        if min_count \u003e 1 or max_count \u003e 1:"},{"line_number":435,"context_line":"            if bdm_length \u003e 1:"},{"line_number":436,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances with multiple\u0027"},{"line_number":437,"context_line":"                        \u0027 block device mappings\u0027)"},{"line_number":438,"context_line":"                raise exception.InvalidRequest(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Fu8I%3D","line":435,"in_reply_to":"AAAAM3%2F%2FwcQ%3D","updated":"2013-01-08 09:43:09.000000000","message":"I don\u0027t think this solution will take care of multiple snapshot id\u0027s passed in the BDM. What happens if we pass 2 snapshot BDMs while booting 3 instances? We don\u0027t want to allow that.\nThough the above condition presented will take care of multiple volumes, adding the condition for snapshots will make it look more complicated, IMO.","commit_id":"16222ccfb4136d7e668fcc0808cc5f49c39f119b"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"unresolved":false,"context_lines":[{"line_number":431,"context_line":"            max_count \u003d min_count"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        block_device_mapping \u003d block_device_mapping or []"},{"line_number":434,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":435,"context_line":"        if min_count \u003e 1 or max_count \u003e 1:"},{"line_number":436,"context_line":"            if any(map(lambda bdm: \u0027volume_id\u0027 in bdm, block_device_mapping)):"},{"line_number":437,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances from one or more\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FsmA%3D","line":434,"updated":"2013-01-09 09:10:30.000000000","message":"This is not needed any more, right?","commit_id":"516f29f92eb91ca555bb397f161cab6821c669ad"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"unresolved":false,"context_lines":[{"line_number":434,"context_line":"        bdm_length \u003d len(block_device_mapping)"},{"line_number":435,"context_line":"        if min_count \u003e 1 or max_count \u003e 1:"},{"line_number":436,"context_line":"            if any(map(lambda bdm: \u0027volume_id\u0027 in bdm, block_device_mapping)):"},{"line_number":437,"context_line":"                msg \u003d _(\u0027Cannot boot multiple instances from one or more\u0027"},{"line_number":438,"context_line":"                        \u0027 volumes\u0027)"},{"line_number":439,"context_line":"                raise exception.InvalidRequest(msg)"},{"line_number":440,"context_line":"        if instance_type[\u0027disabled\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FslA%3D","line":437,"updated":"2013-01-09 09:13:51.000000000","message":"The fact that they are in BDM does not imply that they are being booted from the volume (might just be that they are attached. Maybe change this message a bit to make sure we are not confusing anyone?","commit_id":"516f29f92eb91ca555bb397f161cab6821c669ad"}],"nova/tests/api/openstack/compute/test_servers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9571f48dd185ebe54d0ecbf34268d1cced086fd7","unresolved":false,"context_lines":[{"line_number":1543,"context_line":"    def test_delete_server_instance_not_found(self):"},{"line_number":1544,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1545,"context_line":"                          self._delete_server_instance,"},{"line_number":1546,"context_line":"                          uuid\u003d\u0027non-existent-uuid\u0027)"},{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"    def test_delete_server_instance_while_building(self):"},{"line_number":1549,"context_line":"        fakes.stub_out_instance_quota(self.stubs, 0, 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F2Gs%3D","side":"PARENT","line":1546,"updated":"2013-01-02 17:45:01.000000000","message":"Are these changes relevant to the bdm verification you\u0027re adding in this patch? They don\u0027t appear to be, so please move them to another patch, unless I\u0027m missing something.","commit_id":"32eb83be79ff19e06b5057dce32052b98368ce40"},{"author":{"_account_id":4120,"name":"Rohit Karajgi","email":"rohit.karajgi@ril.com","username":"rohitkarajgi"},"change_message_id":"ca52dd5c1b855445d7848b0d9e1dde6a6f2d5d67","unresolved":false,"context_lines":[{"line_number":1543,"context_line":"    def test_delete_server_instance_not_found(self):"},{"line_number":1544,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1545,"context_line":"                          self._delete_server_instance,"},{"line_number":1546,"context_line":"                          uuid\u003d\u0027non-existent-uuid\u0027)"},{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"    def test_delete_server_instance_while_building(self):"},{"line_number":1549,"context_line":"        fakes.stub_out_instance_quota(self.stubs, 0, 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F1H8%3D","side":"PARENT","line":1546,"in_reply_to":"AAAAM3%2F%2F2Gs%3D","updated":"2013-01-03 11:16:45.000000000","message":"Hi Dan,\nThese weren\u0027t actually relevant. I removed them from the next patch.\nThanks!","commit_id":"32eb83be79ff19e06b5057dce32052b98368ce40"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"2d486b3401a0d3cbf2cfbd30f6fe26d9315f3df3","unresolved":false,"context_lines":[{"line_number":2006,"context_line":"        self.assertNotEqual(reservation_id, \"\")"},{"line_number":2007,"context_line":"        self.assertNotEqual(reservation_id, None)"},{"line_number":2008,"context_line":"        self.assertTrue(len(reservation_id) \u003e 1)"},{"line_number":2009,"context_line":""},{"line_number":2010,"context_line":"    def test_create_multiple_instances_with_multiple_bdm(self):"},{"line_number":2011,"context_line":"         \"\"\""},{"line_number":2012,"context_line":"         Test that a BadRequest is raised if multiple instances"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F1F4%3D","line":2009,"updated":"2013-01-03 11:55:01.000000000","message":"as pep8 test accused, the indentation in this file doesn\u0027t match, for instance the def test_create_multiple_instances_with_multiple_bdm(self) has 5 spaces instead of 4","commit_id":"3e9a2e2ebce5ef705b39c052c3eeb0bc5b04fff8"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1cc5e692ea3df8acdc149eff89545eb63c536f49","unresolved":false,"context_lines":[{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"        self.stubs.Set(compute_api.API, \u0027create\u0027, create)"},{"line_number":2030,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":2031,"context_line":"        self._test_create_extra, params, no_image\u003dTrue)"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"    def test_create_multiple_instances_with_single_volume_bdm(self):"},{"line_number":2034,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fyu4%3D","line":2031,"updated":"2013-01-04 21:21:46.000000000","message":"Needs indentation.  Please add at least 4 spaces.  (Lining up after the opening parenthesis would be better.)","commit_id":"8f52c428ce1bba63d0d26f53e3f61464a1b591e5"},{"author":{"_account_id":4120,"name":"Rohit Karajgi","email":"rohit.karajgi@ril.com","username":"rohitkarajgi"},"unresolved":false,"context_lines":[{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"        self.stubs.Set(compute_api.API, \u0027create\u0027, create)"},{"line_number":2030,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":2031,"context_line":"        self._test_create_extra, params, no_image\u003dTrue)"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"    def test_create_multiple_instances_with_single_volume_bdm(self):"},{"line_number":2034,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fwtc%3D","line":2031,"in_reply_to":"AAAAM3%2F%2Fyu4%3D","updated":"2013-01-07 10:51:51.000000000","message":"Done","commit_id":"8f52c428ce1bba63d0d26f53e3f61464a1b591e5"},{"author":{"_account_id":5660,"name":"Kurt Taylor","email":"kurt.r.taylor@gmail.com","username":"krtaylor"},"unresolved":false,"context_lines":[{"line_number":2030,"context_line":"    def test_create_multiple_instances_with_single_volume_bdm(self):"},{"line_number":2031,"context_line":"        \"\"\""},{"line_number":2032,"context_line":"        Test that a BadRequest is raised if multiple instances"},{"line_number":2033,"context_line":"        are requested too boot from a single volume."},{"line_number":2034,"context_line":"        \"\"\""},{"line_number":2035,"context_line":"        self.ext_mgr.extensions \u003d {\u0027os-multiple-create\u0027: \u0027fake\u0027}"},{"line_number":2036,"context_line":"        min_count \u003d 2"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Fmkw%3D","line":2033,"updated":"2013-01-14 13:25:12.000000000","message":"(too\u003dalso, in addition)\n\nshould be -\u003e  are requested to boot from a single volume.","commit_id":"5eb0d9834f92c7b6bea5f33dd031f15d0237119b"}]}
