)]}'
{"nova/objects/aggregate.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"473ad1c77d3fd3cab1d5892b227cb63f14a838db","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    metadata \u003d values.get(\u0027metadata\u0027)"},{"line_number":175,"context_line":"    if metadata is not None:"},{"line_number":176,"context_line":"        _metadata_add_to_db(context, aggregate_id, values.pop(\u0027metadata\u0027),"},{"line_number":177,"context_line":"                                      set_delete\u003dset_delete)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    aggregate.update(values)"},{"line_number":180,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"bacf61ea_82ebab77","line":177,"updated":"2016-07-29 18:38:47.000000000","message":"Alignment nit","commit_id":"3ccb2020b950a8cf5bd4dde4a14b4bb3652f2ecf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b7b41baec502cda392402f8d5712e7c535dbb3a4","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                                                    payload)"},{"line_number":326,"context_line":"        updates.pop(\u0027id\u0027, None)"},{"line_number":327,"context_line":"        db_aggregate \u003d None"},{"line_number":328,"context_line":"        if self.in_api:"},{"line_number":329,"context_line":"            db_aggregate \u003d _aggregate_update_to_db(self._context,"},{"line_number":330,"context_line":"                                                   self.id, updates)"},{"line_number":331,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"bacf61ea_d5df1b67","line":328,"updated":"2016-07-29 18:46:49.000000000","message":"I also think we should just try to update in the new location, else fall back to the old location.","commit_id":"3ccb2020b950a8cf5bd4dde4a14b4bb3652f2ecf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"23a2b85113b5efe930d7bcc32e52b5b711397af9","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    try:"},{"line_number":181,"context_line":"        aggregate.save(context.session)"},{"line_number":182,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":183,"context_line":"        if \u0027name\u0027 in values:"},{"line_number":184,"context_line":"            raise exception.AggregateNameExists("},{"line_number":185,"context_line":"                aggregate_name\u003dvalues[\u0027name\u0027])"},{"line_number":186,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"bacf61ea_dc525866","line":183,"updated":"2016-08-01 18:27:01.000000000","message":"I was wondering about https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L5780-L5788 but it looks like that\u0027s handled here so we should be good.","commit_id":"ffe8b92a6f810fff7fc23d2e40b50cda57e9baa3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0e957ddf5ec761ba56e99f6477387a30ef8aec71","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                                                    \"updateprop.start\","},{"line_number":325,"context_line":"                                                    payload)"},{"line_number":326,"context_line":"        updates.pop(\u0027id\u0027, None)"},{"line_number":327,"context_line":"        db_aggregate \u003d None"},{"line_number":328,"context_line":"        try:"},{"line_number":329,"context_line":"            db_aggregate \u003d _aggregate_update_to_db(self._context,"},{"line_number":330,"context_line":"                                                   self.id, updates)"}],"source_content_type":"text/x-python","patch_set":24,"id":"bacf61ea_fc3d9cc4","line":327,"updated":"2016-08-01 18:06:55.000000000","message":"Above line isn\u0027t needed...","commit_id":"ffe8b92a6f810fff7fc23d2e40b50cda57e9baa3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1bbec65acf4ea22ec39035cbab0c487e2a16fa3e","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                                                    \"updateprop.start\","},{"line_number":325,"context_line":"                                                    payload)"},{"line_number":326,"context_line":"        updates.pop(\u0027id\u0027, None)"},{"line_number":327,"context_line":"        db_aggregate \u003d None"},{"line_number":328,"context_line":"        try:"},{"line_number":329,"context_line":"            db_aggregate \u003d _aggregate_update_to_db(self._context,"},{"line_number":330,"context_line":"                                                   self.id, updates)"}],"source_content_type":"text/x-python","patch_set":24,"id":"bacf61ea_efb2004b","line":327,"in_reply_to":"bacf61ea_fc3d9cc4","updated":"2016-08-01 18:32:10.000000000","message":"Also left over from me converting this to try..except..try, so my bad.","commit_id":"ffe8b92a6f810fff7fc23d2e40b50cda57e9baa3"}],"nova/tests/functional/db/test_aggregate.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0e957ddf5ec761ba56e99f6477387a30ef8aec71","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                            metadata\u003d{\u0027availability_zone\u0027: \u0027fake_avail_zone\u0027})"},{"line_number":211,"context_line":"        result \u003d aggregate_obj._aggregate_get_from_db(self.context,"},{"line_number":212,"context_line":"                                                      created[\u0027id\u0027])"},{"line_number":213,"context_line":"        self.assertEqual(result[\u0027availability_zone\u0027], \u0027fake_avail_zone\u0027)"},{"line_number":214,"context_line":"        new_values \u003d deepcopy(_get_fake_aggregate(1, result\u003dFalse))"},{"line_number":215,"context_line":"        new_values[\u0027availability_zone\u0027] \u003d \u0027different_avail_zone\u0027"},{"line_number":216,"context_line":"        updated \u003d aggregate_obj._aggregate_update_to_db(self.context,"}],"source_content_type":"text/x-python","patch_set":24,"id":"bacf61ea_9c22a0a1","line":213,"updated":"2016-08-01 18:06:55.000000000","message":"nit: expected before actual, at least being consistent with line 218...","commit_id":"ffe8b92a6f810fff7fc23d2e40b50cda57e9baa3"}],"nova/tests/unit/objects/test_aggregate.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0e957ddf5ec761ba56e99f6477387a30ef8aec71","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @mock.patch(\u0027nova.objects.aggregate._aggregate_update_to_db\u0027)"},{"line_number":144,"context_line":"    @mock.patch(\u0027nova.db.aggregate_update\u0027)"},{"line_number":145,"context_line":"    def test_save(self, update_mock, api_update_mock):"},{"line_number":146,"context_line":"        api_update_mock.side_effect \u003d exception.AggregateNotFound("},{"line_number":147,"context_line":"            aggregate_id\u003d\u0027foo\u0027)"},{"line_number":148,"context_line":"        update_mock.return_value \u003d fake_aggregate"}],"source_content_type":"text/x-python","patch_set":24,"id":"bacf61ea_bc1fa459","line":145,"updated":"2016-08-01 18:06:55.000000000","message":"nit: might be nice to name this test_save_to_cell()","commit_id":"ffe8b92a6f810fff7fc23d2e40b50cda57e9baa3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"23a2b85113b5efe930d7bcc32e52b5b711397af9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                                            {\u0027name\u0027: \u0027fake-aggregate\u0027})"},{"line_number":157,"context_line":"        self.assertTrue(api_update_mock.called)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    @mock.patch(\u0027nova.objects.Aggregate.in_api\u0027, return_value\u003dTrue)"},{"line_number":160,"context_line":"    @mock.patch(\u0027nova.objects.aggregate._aggregate_update_to_db\u0027)"},{"line_number":161,"context_line":"    @mock.patch(\u0027nova.db.aggregate_update\u0027)"},{"line_number":162,"context_line":"    def test_save_to_api(self, update_mock, api_update_mock, in_api_mock):"}],"source_content_type":"text/x-python","patch_set":24,"id":"bacf61ea_3c81f48f","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":67},"updated":"2016-08-01 18:27:01.000000000","message":"Why is this needed?","commit_id":"ffe8b92a6f810fff7fc23d2e40b50cda57e9baa3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"259ec8e482496e0ad383b36e5ea9baf01a7d8965","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                                            {\u0027name\u0027: \u0027fake-aggregate\u0027})"},{"line_number":157,"context_line":"        self.assertTrue(api_update_mock.called)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    @mock.patch(\u0027nova.objects.Aggregate.in_api\u0027, return_value\u003dTrue)"},{"line_number":160,"context_line":"    @mock.patch(\u0027nova.objects.aggregate._aggregate_update_to_db\u0027)"},{"line_number":161,"context_line":"    @mock.patch(\u0027nova.db.aggregate_update\u0027)"},{"line_number":162,"context_line":"    def test_save_to_api(self, update_mock, api_update_mock, in_api_mock):"}],"source_content_type":"text/x-python","patch_set":24,"id":"bacf61ea_7c1b6c81","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":67},"in_reply_to":"bacf61ea_3c81f48f","updated":"2016-08-01 18:28:33.000000000","message":"It\u0027s not, leftover from a previous version.","commit_id":"ffe8b92a6f810fff7fc23d2e40b50cda57e9baa3"}]}
