)]}'
{"nova/compute/api.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ba7a872b358718f8b25b3fe5c91c93e17989625","unresolved":false,"context_lines":[{"line_number":945,"context_line":"                build_request \u003d objects.BuildRequest(context,"},{"line_number":946,"context_line":"                        instance\u003dinstance, instance_uuid\u003dinstance.uuid,"},{"line_number":947,"context_line":"                        project_id\u003dinstance.project_id,"},{"line_number":948,"context_line":"                        block_device_mappings\u003dblock_device_mapping)"},{"line_number":949,"context_line":"                build_request.create()"},{"line_number":950,"context_line":"                # Create an instance_mapping.  The null cell_mapping indicates"},{"line_number":951,"context_line":"                # that the instance doesn\u0027t yet exist in a cell, and lookups"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_e169dcbf","line":948,"range":{"start_line":948,"start_character":47,"end_line":948,"end_character":66},"updated":"2016-07-19 20:06:07.000000000","message":"that\u0027s a bit confusing since that\u0027s a list of BDMs and not just a single one, but okay.","commit_id":"d9d3b165272ba950bb12c54718a017afc4312e0e"}],"nova/objects/build_request.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3c7622bdd9fb261dbd067d0e48d4a3a9dc15d3b5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":39,"context_line":"        \u0027project_id\u0027: fields.StringField(),"},{"line_number":40,"context_line":"        \u0027instance\u0027: fields.ObjectField(\u0027Instance\u0027),"},{"line_number":41,"context_line":"        \u0027block_device_mappings\u0027: fields.ObjectField(\u0027BlockDeviceMappingList\u0027),"},{"line_number":42,"context_line":"        # NOTE(alaski): Normally these would come from the NovaPersistentObject"},{"line_number":43,"context_line":"        # mixin but they\u0027re being set explicitly because we only need"},{"line_number":44,"context_line":"        # created_at/updated_at. There is no soft delete for this object."}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_39a341a0","line":41,"updated":"2016-06-28 15:59:43.000000000","message":"We\u0027re persisting (or at least sending) this now, so we need a version bump, no?","commit_id":"e4b69ac315b7dc03c16a5110a55902dfac43d8fc"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c4acce44e62c807c99d9f78c33389610b569c22a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":39,"context_line":"        \u0027project_id\u0027: fields.StringField(),"},{"line_number":40,"context_line":"        \u0027instance\u0027: fields.ObjectField(\u0027Instance\u0027),"},{"line_number":41,"context_line":"        \u0027block_device_mappings\u0027: fields.ObjectField(\u0027BlockDeviceMappingList\u0027),"},{"line_number":42,"context_line":"        # NOTE(alaski): Normally these would come from the NovaPersistentObject"},{"line_number":43,"context_line":"        # mixin but they\u0027re being set explicitly because we only need"},{"line_number":44,"context_line":"        # created_at/updated_at. There is no soft delete for this object."}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_bf5d51ee","line":41,"in_reply_to":"3aaa91ec_39a341a0","updated":"2016-06-28 16:23:26.000000000","message":"Woops, yep.","commit_id":"e4b69ac315b7dc03c16a5110a55902dfac43d8fc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3c7622bdd9fb261dbd067d0e48d4a3a9dc15d3b5","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # instance is scheduled and on a compute."},{"line_number":79,"context_line":"        if db_bdms is None:"},{"line_number":80,"context_line":"            LOG.debug(\u0027Failed to load block_device_mappings from BuildRequest \u0027"},{"line_number":81,"context_line":"                      \u0027 for instance %s because it is None\u0027 %"},{"line_number":82,"context_line":"                      self.instance_uuid)"},{"line_number":83,"context_line":"            self.block_device_mappings \u003d objects.BlockDeviceMappingList("},{"line_number":84,"context_line":"                objects\u003d[])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_f9fd396f","line":81,"updated":"2016-06-28 15:59:43.000000000","message":"You have two spaces between BuildRequest and for here","commit_id":"e4b69ac315b7dc03c16a5110a55902dfac43d8fc"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c4acce44e62c807c99d9f78c33389610b569c22a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # instance is scheduled and on a compute."},{"line_number":79,"context_line":"        if db_bdms is None:"},{"line_number":80,"context_line":"            LOG.debug(\u0027Failed to load block_device_mappings from BuildRequest \u0027"},{"line_number":81,"context_line":"                      \u0027 for instance %s because it is None\u0027 %"},{"line_number":82,"context_line":"                      self.instance_uuid)"},{"line_number":83,"context_line":"            self.block_device_mappings \u003d objects.BlockDeviceMappingList("},{"line_number":84,"context_line":"                objects\u003d[])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_df113d06","line":81,"in_reply_to":"3aaa91ec_f9fd396f","updated":"2016-06-28 16:23:26.000000000","message":"gah","commit_id":"e4b69ac315b7dc03c16a5110a55902dfac43d8fc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b28fa625f81aa3f165ba7a4203b04c8cd8d8a015","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # instance is scheduled and on a compute."},{"line_number":88,"context_line":"        if db_bdms is None:"},{"line_number":89,"context_line":"            LOG.debug(\u0027Failed to load block_device_mappings from BuildRequest \u0027"},{"line_number":90,"context_line":"                      \u0027for instance %s because it is None\u0027 %"},{"line_number":91,"context_line":"                      self.instance_uuid)"},{"line_number":92,"context_line":"            self.block_device_mappings \u003d objects.BlockDeviceMappingList("},{"line_number":93,"context_line":"                objects\u003d[])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_f92947e7","line":90,"range":{"start_line":90,"start_character":59,"end_line":90,"end_character":60},"updated":"2016-07-06 23:23:20.000000000","message":"Should use comma instead","commit_id":"9d2a09090ecf6cf3de224769833f4d910012f86c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c876b1b1196b088dcb5d21cd9460b87233b156fd","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # instance is scheduled and on a compute."},{"line_number":88,"context_line":"        if db_bdms is None:"},{"line_number":89,"context_line":"            LOG.debug(\u0027Failed to load block_device_mappings from BuildRequest \u0027"},{"line_number":90,"context_line":"                      \u0027for instance %s because it is None\u0027 %"},{"line_number":91,"context_line":"                      self.instance_uuid)"},{"line_number":92,"context_line":"            self.block_device_mappings \u003d objects.BlockDeviceMappingList("},{"line_number":93,"context_line":"                objects\u003d[])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_e845bc6e","line":90,"range":{"start_line":90,"start_character":59,"end_line":90,"end_character":60},"in_reply_to":"1aa78d24_f92947e7","updated":"2016-07-07 18:55:43.000000000","message":"Done","commit_id":"9d2a09090ecf6cf3de224769833f4d910012f86c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b28fa625f81aa3f165ba7a4203b04c8cd8d8a015","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                      \u0027for instance %s because it is None\u0027 %"},{"line_number":91,"context_line":"                      self.instance_uuid)"},{"line_number":92,"context_line":"            self.block_device_mappings \u003d objects.BlockDeviceMappingList("},{"line_number":93,"context_line":"                objects\u003d[])"},{"line_number":94,"context_line":"            return"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        self.block_device_mappings \u003d ("}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_191b73cb","line":93,"range":{"start_line":93,"start_character":16,"end_line":93,"end_character":26},"updated":"2016-07-06 23:23:20.000000000","message":"I don\u0027t think you need this to create the empty list","commit_id":"9d2a09090ecf6cf3de224769833f4d910012f86c"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"673c8ac7ca61b735c15c91489d18ccb4b97d4d2a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                              \u0027BuildRequest\u0027))"},{"line_number":80,"context_line":"            raise exception.BuildRequestNotFound(uuid\u003dself.instance_uuid)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _load_block_device_mappings(self, db_bdms):"},{"line_number":83,"context_line":"        # \u0027db_bdms\u0027 is a serialized BlockDeviceMappingList object. If it\u0027s None"},{"line_number":84,"context_line":"        # we\u0027re in a mixed version nova-api scenario and can\u0027t retrieve the"},{"line_number":85,"context_line":"        # actual list. Set it to an empty list here which will cause a"}],"source_content_type":"text/x-python","patch_set":11,"id":"1aa78d24_ca6ccf0a","line":82,"updated":"2016-07-15 11:13:44.000000000","message":"Is this function used anywhere?","commit_id":"d9d3b165272ba950bb12c54718a017afc4312e0e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"db903de260b33cf11333f1d3eba35d7c68c13524","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                              \u0027BuildRequest\u0027))"},{"line_number":80,"context_line":"            raise exception.BuildRequestNotFound(uuid\u003dself.instance_uuid)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _load_block_device_mappings(self, db_bdms):"},{"line_number":83,"context_line":"        # \u0027db_bdms\u0027 is a serialized BlockDeviceMappingList object. If it\u0027s None"},{"line_number":84,"context_line":"        # we\u0027re in a mixed version nova-api scenario and can\u0027t retrieve the"},{"line_number":85,"context_line":"        # actual list. Set it to an empty list here which will cause a"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_480cb242","line":82,"in_reply_to":"1aa78d24_ca6ccf0a","updated":"2016-07-18 05:03:07.000000000","message":"It\u0027s used on line 107 below. It\u0027s a bit \"magic\" but it\u0027s the standard way this is done in objects.","commit_id":"d9d3b165272ba950bb12c54718a017afc4312e0e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ba7a872b358718f8b25b3fe5c91c93e17989625","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        if db_bdms is None:"},{"line_number":89,"context_line":"            LOG.debug(\u0027Failed to load block_device_mappings from BuildRequest \u0027"},{"line_number":90,"context_line":"                      \u0027for instance %s because it is None\u0027, self.instance_uuid)"},{"line_number":91,"context_line":"            self.block_device_mappings \u003d objects.BlockDeviceMappingList()"},{"line_number":92,"context_line":"            return"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.block_device_mappings \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_3e1cb376","line":91,"updated":"2016-07-19 20:06:07.000000000","message":"Okay, we could have been having a nullable field instead of providing an empty object list, but having an empty container is better because we wouldn\u0027t need to check whether the field is None or not (just calling \u0027for in\u0027)","commit_id":"d9d3b165272ba950bb12c54718a017afc4312e0e"}],"nova/tests/functional/db/test_build_request.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"673c8ac7ca61b735c15c91489d18ccb4b97d4d2a","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                test_objects.compare_obj(self, expected[0], db_bdms[0],"},{"line_number":99,"context_line":"                                         allow_missing\u003d[\u0027instance\u0027],"},{"line_number":100,"context_line":"                                         comparators\u003d{\u0027created_at\u0027: date_comp,"},{"line_number":101,"context_line":"                                                      \u0027updated_at\u0027: date_comp})"},{"line_number":102,"context_line":"                continue"},{"line_number":103,"context_line":"            self.assertEqual(expected, db_value)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1aa78d24_cda4e909","line":101,"updated":"2016-07-15 11:13:44.000000000","message":"This looks cleaner in \"future\" changes with obj_equal_prims. May be it\u0027s good to backport changes here?","commit_id":"d9d3b165272ba950bb12c54718a017afc4312e0e"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ba7a872b358718f8b25b3fe5c91c93e17989625","unresolved":false,"context_lines":[{"line_number":3164,"context_line":"            for inst_mock in inst_mocks:"},{"line_number":3165,"context_line":"                inst_mock.project_id \u003d \u0027fake-project\u0027"},{"line_number":3166,"context_line":"            mock_inst.side_effect \u003d inst_mocks"},{"line_number":3167,"context_line":"            bdm_mocks \u003d [mock.MagicMock() for i in range(max_count)]"},{"line_number":3168,"context_line":"            mock_bdm_validate.side_effect \u003d bdm_mocks"},{"line_number":3169,"context_line":"            build_req_mocks \u003d [mock.MagicMock() for i in range(max_count)]"},{"line_number":3170,"context_line":"            mock_build_req.side_effect \u003d build_req_mocks"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_61832c57","line":3167,"range":{"start_line":3167,"start_character":25,"end_line":3167,"end_character":41},"updated":"2016-07-19 20:06:07.000000000","message":"I don\u0027t really like using Mock objects for this and would rather prefer to use empty BlockDeviceMapping objects instead, but that sounds a nit.","commit_id":"d9d3b165272ba950bb12c54718a017afc4312e0e"}],"nova/tests/unit/fake_build_request.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ba7a872b358718f8b25b3fe5c91c93e17989625","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if field \u003d\u003d \u0027id\u0027:"},{"line_number":76,"context_line":"            continue"},{"line_number":77,"context_line":"        if isinstance(req_obj.fields[field], fields.ObjectField):"},{"line_number":78,"context_line":"            value \u003d value"},{"line_number":79,"context_line":"            if field \u003d\u003d \u0027instance\u0027:"},{"line_number":80,"context_line":"                req_obj.instance \u003d objects.Instance.obj_from_primitive("},{"line_number":81,"context_line":"                        jsonutils.loads(value))"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_de275710","line":78,"updated":"2016-07-19 20:06:07.000000000","message":"Heh, fun.","commit_id":"d9d3b165272ba950bb12c54718a017afc4312e0e"}]}
