)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"4fa62e9361c95a62c19450d13211e14c1b928d44","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Refactor test cases related to instance oject"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the blueprint unified-object-model, all of the instance"},{"line_number":10,"context_line":"should be represtend by an instance object but not a db"},{"line_number":11,"context_line":"instance dict."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"But for some test cases, they were still using db instance dict,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2Fhfw%3D","line":10,"updated":"2013-09-25 09:08:50.000000000","message":"represented","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"995e273791f9cfd414d9c7bf39a37a911d1f068d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Refactor test cases related to instance oject"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the blueprint unified-object-model, all of the instance"},{"line_number":10,"context_line":"should be represtend by an instance object but not a db"},{"line_number":11,"context_line":"instance dict."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"But for some test cases, they were still using db instance dict,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2FheE%3D","line":10,"in_reply_to":"AAAAS3%2F%2Fhfw%3D","updated":"2013-09-25 09:11:57.000000000","message":"Done","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"4fa62e9361c95a62c19450d13211e14c1b928d44","unresolved":false,"context_lines":[{"line_number":10,"context_line":"should be represtend by an instance object but not a db"},{"line_number":11,"context_line":"instance dict."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"But for some test cases, they were still using db instance dict,"},{"line_number":14,"context_line":"we should change those test cases to use instance object."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The fix include three parts:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2Fhfg%3D","line":13,"updated":"2013-09-25 09:08:50.000000000","message":"in some test cases, they are","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"995e273791f9cfd414d9c7bf39a37a911d1f068d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"should be represtend by an instance object but not a db"},{"line_number":11,"context_line":"instance dict."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"But for some test cases, they were still using db instance dict,"},{"line_number":14,"context_line":"we should change those test cases to use instance object."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The fix include three parts:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2FheA%3D","line":13,"in_reply_to":"AAAAS3%2F%2Fhfg%3D","updated":"2013-09-25 09:11:57.000000000","message":"Done","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"2adb30ea799f408f2c38528b00efdf622a699270","unresolved":false,"context_lines":[{"line_number":22,"context_line":"an object instance."},{"line_number":23,"context_line":"3) Make sure all test cases related to \"fault\" and \"instance\" passed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Fix bug 1230125"},{"line_number":26,"context_line":"Fix part of bug 1212915"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ie54fface139e4ad042b9a748c7409c3698875413"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2Fheg%3D","line":25,"updated":"2013-09-25 09:10:07.000000000","message":"Closes-Bug","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"68752057455e521f00ebad55398c7e239fa42747","unresolved":false,"context_lines":[{"line_number":22,"context_line":"an object instance."},{"line_number":23,"context_line":"3) Make sure all test cases related to \"fault\" and \"instance\" passed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Fix bug 1230125"},{"line_number":26,"context_line":"Fix part of bug 1212915"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ie54fface139e4ad042b9a748c7409c3698875413"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2Fhdo%3D","line":25,"in_reply_to":"AAAAS3%2F%2Fheg%3D","updated":"2013-09-25 09:13:07.000000000","message":"Done","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"4fa62e9361c95a62c19450d13211e14c1b928d44","unresolved":false,"context_lines":[{"line_number":23,"context_line":"3) Make sure all test cases related to \"fault\" and \"instance\" passed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Fix bug 1230125"},{"line_number":26,"context_line":"Fix part of bug 1212915"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ie54fface139e4ad042b9a748c7409c3698875413"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2FhfI%3D","line":26,"updated":"2013-09-25 09:08:50.000000000","message":"Partial-Bug","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"995e273791f9cfd414d9c7bf39a37a911d1f068d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"3) Make sure all test cases related to \"fault\" and \"instance\" passed."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Fix bug 1230125"},{"line_number":26,"context_line":"Fix part of bug 1212915"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ie54fface139e4ad042b9a748c7409c3698875413"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2Fhd8%3D","line":26,"in_reply_to":"AAAAS3%2F%2FhfI%3D","updated":"2013-09-25 09:11:57.000000000","message":"Done","commit_id":"786e2c0bd3fd07c6b154d9a76dc8f6f5c0c08311"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7f3136fe214be4880f15010c7f14abac1fc165b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jay Lau \u003cliugya@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-09-25 17:12:28 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor test cases related to instance oject"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the blueprint unified-object-model, all of the instance"},{"line_number":10,"context_line":"should be represented by an instance object but not a db"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAS3%2F%2FhVw%3D","line":7,"updated":"2013-09-25 09:49:43.000000000","message":"oject \u003d\u003e object","commit_id":"a256ca776dfdbbd3e7d7cd43cfd0cf2768512a95"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"19c1e6dd2b195a58d7a8a92106e9a50b5f63dc5b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jay Lau \u003cliugya@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-09-25 17:12:28 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor test cases related to instance oject"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the blueprint unified-object-model, all of the instance"},{"line_number":10,"context_line":"should be represented by an instance object but not a db"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAS3%2F%2FhS0%3D","line":7,"in_reply_to":"AAAAS3%2F%2FhVw%3D","updated":"2013-09-25 10:04:47.000000000","message":"Done","commit_id":"a256ca776dfdbbd3e7d7cd43cfd0cf2768512a95"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7f3136fe214be4880f15010c7f14abac1fc165b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor test cases related to instance oject"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the blueprint unified-object-model, all of the instance"},{"line_number":10,"context_line":"should be represented by an instance object but not a db"},{"line_number":11,"context_line":"instance dict."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAS3%2F%2FhVs%3D","line":9,"updated":"2013-09-25 09:49:43.000000000","message":"instance \u003d\u003e instances","commit_id":"a256ca776dfdbbd3e7d7cd43cfd0cf2768512a95"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"19c1e6dd2b195a58d7a8a92106e9a50b5f63dc5b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor test cases related to instance oject"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the blueprint unified-object-model, all of the instance"},{"line_number":10,"context_line":"should be represented by an instance object but not a db"},{"line_number":11,"context_line":"instance dict."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAS3%2F%2FhSw%3D","line":9,"in_reply_to":"AAAAS3%2F%2FhVs%3D","updated":"2013-09-25 10:04:47.000000000","message":"Done","commit_id":"a256ca776dfdbbd3e7d7cd43cfd0cf2768512a95"}],"nova/tests/api/openstack/compute/contrib/test_security_groups.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f54e01040ed0eb68f62d266acb5bf49e9ee4f28","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":1559,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":1560,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":1561,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":1562,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc6o%3D","line":1561,"updated":"2013-09-26 14:07:39.000000000","message":"Can you explain this change? it doesn\u0027t seem to be right to me.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1615f840f7b4088c67c2200bbb330810f58252bc","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":1559,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":1560,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":1561,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":1562,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FcvQ%3D","line":1561,"in_reply_to":"AAAAS3%2F%2Fc4w%3D","updated":"2013-09-26 14:43:25.000000000","message":"But fake_compute_get() above is asking for the old names and apparently that\u0027s not getting set on the object..","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e41ec8a143d131931e813609725c4eb8a3d306a5","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":1559,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":1560,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":1561,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":1562,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc4w%3D","line":1561,"in_reply_to":"AAAAS3%2F%2Fc6o%3D","updated":"2013-09-26 14:28:36.000000000","message":"Because we are using fake_db_instance to create db instance object and this function call fake_db_secgroups which will update the security group name","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"fe42a5003880196f36a55cefbd946c3153b470cb","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":1559,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":1560,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":1561,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":1562,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FawA%3D","line":1561,"in_reply_to":"AAAAS3%2F%2Fcdk%3D","updated":"2013-09-27 04:27:39.000000000","message":"Done","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"ffeda94798f4bb58949b17f67d7d7dad53cedf8a","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":1559,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":1560,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":1561,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":1562,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fcdk%3D","line":1561,"in_reply_to":"AAAAS3%2F%2FcvQ%3D","updated":"2013-09-26 15:23:18.000000000","message":"Thanks Dan. Yes, but the test is really doing some test for security group name. As we are going to have some refactor for fake_instance.py and fakes.py, so what about handle this later? Thanks.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"}],"nova/tests/api/openstack/compute/plugins/v3/test_security_groups.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f54e01040ed0eb68f62d266acb5bf49e9ee4f28","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":144,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":145,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":146,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":147,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc6Y%3D","line":146,"updated":"2013-09-26 14:07:39.000000000","message":"This one too.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"fe42a5003880196f36a55cefbd946c3153b470cb","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":144,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":145,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":146,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":147,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fav8%3D","line":146,"in_reply_to":"AAAAS3%2F%2Fc4s%3D","updated":"2013-09-27 04:27:39.000000000","message":"Done","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e41ec8a143d131931e813609725c4eb8a3d306a5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":144,"context_line":"        server \u003d self._get_server(res.body)"},{"line_number":145,"context_line":"        for i, group in enumerate(self._get_groups(server)):"},{"line_number":146,"context_line":"            name \u003d \u0027secgroup-%s\u0027 % i"},{"line_number":147,"context_line":"            self.assertEqual(group.get(\u0027name\u0027), name)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_show(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc4s%3D","line":146,"in_reply_to":"AAAAS3%2F%2Fc6Y%3D","updated":"2013-09-26 14:28:36.000000000","message":"Ditto","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"}],"nova/tests/api/openstack/compute/plugins/v3/test_servers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f54e01040ed0eb68f62d266acb5bf49e9ee4f28","unresolved":false,"context_lines":[{"line_number":2757,"context_line":"    def setUp(self):"},{"line_number":2758,"context_line":"        super(ServersViewBuilderTest, self).setUp()"},{"line_number":2759,"context_line":"        CONF.set_override(\u0027glance_host\u0027, \u0027localhost\u0027)"},{"line_number":2760,"context_line":"        self.flags(use_ipv6\u003dTrue)"},{"line_number":2761,"context_line":"        self.instance \u003d fakes.stub_instance("},{"line_number":2762,"context_line":"            id\u003d1,"},{"line_number":2763,"context_line":"            image_ref\u003d\"5\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc50%3D","line":2760,"updated":"2013-09-26 14:07:39.000000000","message":"This should be just a local variable to avoid switching its types below, IMHO.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1615f840f7b4088c67c2200bbb330810f58252bc","unresolved":false,"context_lines":[{"line_number":2757,"context_line":"    def setUp(self):"},{"line_number":2758,"context_line":"        super(ServersViewBuilderTest, self).setUp()"},{"line_number":2759,"context_line":"        CONF.set_override(\u0027glance_host\u0027, \u0027localhost\u0027)"},{"line_number":2760,"context_line":"        self.flags(use_ipv6\u003dTrue)"},{"line_number":2761,"context_line":"        self.instance \u003d fakes.stub_instance("},{"line_number":2762,"context_line":"            id\u003d1,"},{"line_number":2763,"context_line":"            image_ref\u003d\"5\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FcvM%3D","line":2760,"in_reply_to":"AAAAS3%2F%2Fc4c%3D","updated":"2013-09-26 14:43:25.000000000","message":"Yes, but you\u0027re changing the type of it below.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e41ec8a143d131931e813609725c4eb8a3d306a5","unresolved":false,"context_lines":[{"line_number":2757,"context_line":"    def setUp(self):"},{"line_number":2758,"context_line":"        super(ServersViewBuilderTest, self).setUp()"},{"line_number":2759,"context_line":"        CONF.set_override(\u0027glance_host\u0027, \u0027localhost\u0027)"},{"line_number":2760,"context_line":"        self.flags(use_ipv6\u003dTrue)"},{"line_number":2761,"context_line":"        self.instance \u003d fakes.stub_instance("},{"line_number":2762,"context_line":"            id\u003d1,"},{"line_number":2763,"context_line":"            image_ref\u003d\"5\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc4c%3D","line":2760,"in_reply_to":"AAAAS3%2F%2Fc50%3D","updated":"2013-09-26 14:28:36.000000000","message":"I did not touch this part in my patch.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"fe42a5003880196f36a55cefbd946c3153b470cb","unresolved":false,"context_lines":[{"line_number":2757,"context_line":"    def setUp(self):"},{"line_number":2758,"context_line":"        super(ServersViewBuilderTest, self).setUp()"},{"line_number":2759,"context_line":"        CONF.set_override(\u0027glance_host\u0027, \u0027localhost\u0027)"},{"line_number":2760,"context_line":"        self.flags(use_ipv6\u003dTrue)"},{"line_number":2761,"context_line":"        self.instance \u003d fakes.stub_instance("},{"line_number":2762,"context_line":"            id\u003d1,"},{"line_number":2763,"context_line":"            image_ref\u003d\"5\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fa2o%3D","line":2760,"in_reply_to":"AAAAS3%2F%2Fcg8%3D","updated":"2013-09-27 04:27:39.000000000","message":"Done","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"ffeda94798f4bb58949b17f67d7d7dad53cedf8a","unresolved":false,"context_lines":[{"line_number":2757,"context_line":"    def setUp(self):"},{"line_number":2758,"context_line":"        super(ServersViewBuilderTest, self).setUp()"},{"line_number":2759,"context_line":"        CONF.set_override(\u0027glance_host\u0027, \u0027localhost\u0027)"},{"line_number":2760,"context_line":"        self.flags(use_ipv6\u003dTrue)"},{"line_number":2761,"context_line":"        self.instance \u003d fakes.stub_instance("},{"line_number":2762,"context_line":"            id\u003d1,"},{"line_number":2763,"context_line":"            image_ref\u003d\"5\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fcg8%3D","line":2760,"in_reply_to":"AAAAS3%2F%2FcvM%3D","updated":"2013-09-26 15:23:18.000000000","message":"Got it, but this does not impact the patch, hope it is OK. Thanks.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f54e01040ed0eb68f62d266acb5bf49e9ee4f28","unresolved":false,"context_lines":[{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        metadata \u003d []"},{"line_number":3240,"context_line":"        metadata.append(models.InstanceMetadata(key\u003d\"Open\", value\u003d\"Stack\"))"},{"line_number":3241,"context_line":"        metadata \u003d nova_utils.metadata_to_dict(metadata)"},{"line_number":3242,"context_line":"        self.instance[\u0027metadata\u0027] \u003d metadata"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"        image_bookmark \u003d \"http://localhost:9292/images/5\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc58%3D","line":3241,"updated":"2013-09-26 14:07:39.000000000","message":"Is this related to the rest of the patch? It doesn\u0027t seem to be to me.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e41ec8a143d131931e813609725c4eb8a3d306a5","unresolved":false,"context_lines":[{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        metadata \u003d []"},{"line_number":3240,"context_line":"        metadata.append(models.InstanceMetadata(key\u003d\"Open\", value\u003d\"Stack\"))"},{"line_number":3241,"context_line":"        metadata \u003d nova_utils.metadata_to_dict(metadata)"},{"line_number":3242,"context_line":"        self.instance[\u0027metadata\u0027] \u003d metadata"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"        image_bookmark \u003d \"http://localhost:9292/images/5\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fczs%3D","line":3241,"in_reply_to":"AAAAS3%2F%2Fc58%3D","updated":"2013-09-26 14:28:36.000000000","message":"But we need to convert to dict, otherwise, we will get the following error:\nTraceback (most recent call last):\n  File \"/root/src/nova-ce/1212915/1230125/nova/nova/tests/api/openstack/compute/test_servers.py\", line 3960, in test_build_server_detail_with_metadata\n    self.instance[\u0027metadata\u0027] \u003d metadata\n  File \"/root/src/nova-ce/1212915/1230125/nova/nova/objects/base.py\", line 384, in __setitem__\n    setattr(self, name, value)\n  File \"/root/src/nova-ce/1212915/1230125/nova/nova/objects/base.py\", line 66, in setter\n    return setattr(self, get_attrname(name), typefn(value))\nValueError: dictionary update sequence element #0 has length 8; 2 is required","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"ffeda94798f4bb58949b17f67d7d7dad53cedf8a","unresolved":false,"context_lines":[{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        metadata \u003d []"},{"line_number":3240,"context_line":"        metadata.append(models.InstanceMetadata(key\u003d\"Open\", value\u003d\"Stack\"))"},{"line_number":3241,"context_line":"        metadata \u003d nova_utils.metadata_to_dict(metadata)"},{"line_number":3242,"context_line":"        self.instance[\u0027metadata\u0027] \u003d metadata"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"        image_bookmark \u003d \"http://localhost:9292/images/5\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fcf4%3D","line":3241,"in_reply_to":"AAAAS3%2F%2Fcuo%3D","updated":"2013-09-26 15:23:18.000000000","message":"Please refer to http://stackoverflow.com/questions/14302248/dictionary-update-sequence-element-0-has-length-3-2-is-required","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1615f840f7b4088c67c2200bbb330810f58252bc","unresolved":false,"context_lines":[{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        metadata \u003d []"},{"line_number":3240,"context_line":"        metadata.append(models.InstanceMetadata(key\u003d\"Open\", value\u003d\"Stack\"))"},{"line_number":3241,"context_line":"        metadata \u003d nova_utils.metadata_to_dict(metadata)"},{"line_number":3242,"context_line":"        self.instance[\u0027metadata\u0027] \u003d metadata"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"        image_bookmark \u003d \"http://localhost:9292/images/5\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fcuo%3D","line":3241,"in_reply_to":"AAAAS3%2F%2Fczs%3D","updated":"2013-09-26 14:43:25.000000000","message":"\"Because I get this error if I don\u0027t\" is not a justification for why it should be changed. I want to know *why* it\u0027s happening.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"}],"nova/tests/api/openstack/compute/test_servers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f54e01040ed0eb68f62d266acb5bf49e9ee4f28","unresolved":false,"context_lines":[{"line_number":3956,"context_line":""},{"line_number":3957,"context_line":"        metadata \u003d []"},{"line_number":3958,"context_line":"        metadata.append(models.InstanceMetadata(key\u003d\"Open\", value\u003d\"Stack\"))"},{"line_number":3959,"context_line":"        metadata \u003d nova_utils.metadata_to_dict(metadata)"},{"line_number":3960,"context_line":"        self.instance[\u0027metadata\u0027] \u003d metadata"},{"line_number":3961,"context_line":""},{"line_number":3962,"context_line":"        self.expected_detailed_server[\"server\"][\"metadata\"] \u003d {\"Open\": \"Stack\"}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc5s%3D","line":3959,"updated":"2013-09-26 14:07:39.000000000","message":"Same question here as the previous file.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"}],"nova/tests/fake_instance.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1615f840f7b4088c67c2200bbb330810f58252bc","unresolved":false,"context_lines":[{"line_number":71,"context_line":"def fake_instance_obj(context, **updates):"},{"line_number":72,"context_line":"    expected_attrs \u003d updates.pop(\u0027expected_attrs\u0027, [])"},{"line_number":73,"context_line":"    if not expected_attrs:"},{"line_number":74,"context_line":"        expected_attrs \u003d instance_obj.INSTANCE_DEFAULT_FIELDS"},{"line_number":75,"context_line":"    return instance_obj.Instance._from_db_object(context,"},{"line_number":76,"context_line":"               instance_obj.Instance(), fake_db_instance(**updates),"},{"line_number":77,"context_line":"               expected_attrs\u003dexpected_attrs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fcs8%3D","line":74,"updated":"2013-09-26 14:43:25.000000000","message":"Also, this isn\u0027t correct. If they specifically asked for no expected attrs you should not \"load everything\" which is what you\u0027re doing here. The pop() above should default to None and you should let the object handle the defaulting if anything.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"fe42a5003880196f36a55cefbd946c3153b470cb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"def fake_instance_obj(context, **updates):"},{"line_number":72,"context_line":"    expected_attrs \u003d updates.pop(\u0027expected_attrs\u0027, [])"},{"line_number":73,"context_line":"    if not expected_attrs:"},{"line_number":74,"context_line":"        expected_attrs \u003d instance_obj.INSTANCE_DEFAULT_FIELDS"},{"line_number":75,"context_line":"    return instance_obj.Instance._from_db_object(context,"},{"line_number":76,"context_line":"               instance_obj.Instance(), fake_db_instance(**updates),"},{"line_number":77,"context_line":"               expected_attrs\u003dexpected_attrs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fav4%3D","line":74,"in_reply_to":"AAAAS3%2F%2Fcig%3D","updated":"2013-09-27 04:27:39.000000000","message":"Done","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"ffeda94798f4bb58949b17f67d7d7dad53cedf8a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"def fake_instance_obj(context, **updates):"},{"line_number":72,"context_line":"    expected_attrs \u003d updates.pop(\u0027expected_attrs\u0027, [])"},{"line_number":73,"context_line":"    if not expected_attrs:"},{"line_number":74,"context_line":"        expected_attrs \u003d instance_obj.INSTANCE_DEFAULT_FIELDS"},{"line_number":75,"context_line":"    return instance_obj.Instance._from_db_object(context,"},{"line_number":76,"context_line":"               instance_obj.Instance(), fake_db_instance(**updates),"},{"line_number":77,"context_line":"               expected_attrs\u003dexpected_attrs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fcig%3D","line":74,"in_reply_to":"AAAAS3%2F%2Fcs8%3D","updated":"2013-09-26 15:23:18.000000000","message":"Dan, just noticed that https://review.openstack.org/#/c/35051/18/nova/tests/api/openstack/compute/plugins/v3/test_servers.py is also using instance_obj.INSTANCE_DEFAULT_FIELDS, so here just use it similarly.\n\nIf do not set instance_obj.INSTANCE_DEFAULT_FIELDS here, I may need to add stub method of following to each case for lazy load, this might not be a minor change, Can we make the change in another patch? Thanks.\n\n+        return_server \u003d fakes.fake_instance_get()\n+        self.stubs.Set(db, \u0027instance_get_by_uuid\u0027,\n+                       return_server)","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f54e01040ed0eb68f62d266acb5bf49e9ee4f28","unresolved":false,"context_lines":[{"line_number":77,"context_line":"               expected_attrs\u003dexpected_attrs)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def fake_fault_obj(instance_uuid, code\u003d404,"},{"line_number":81,"context_line":"                   message\u003d\u0027HTTPNotFound\u0027,"},{"line_number":82,"context_line":"                   details\u003d\u0027Stock details for test\u0027,"},{"line_number":83,"context_line":"                   **updates):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc5A%3D","line":80,"updated":"2013-09-26 14:07:39.000000000","message":"I think you should require code be set here for clarity. I had a bunch of comments in earlier files because I hadn\u0027t seen this one yet. 404 is a reasonable default, but I think it would be much clearer at the call sites if you just always pass it.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e41ec8a143d131931e813609725c4eb8a3d306a5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"               expected_attrs\u003dexpected_attrs)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def fake_fault_obj(instance_uuid, code\u003d404,"},{"line_number":81,"context_line":"                   message\u003d\u0027HTTPNotFound\u0027,"},{"line_number":82,"context_line":"                   details\u003d\u0027Stock details for test\u0027,"},{"line_number":83,"context_line":"                   **updates):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2Fc24%3D","line":80,"in_reply_to":"AAAAS3%2F%2Fc5A%3D","updated":"2013-09-26 14:28:36.000000000","message":"Thanks Dan, I think that this does not impact much. The caller of this function can pass the value if not 404, hope it is OK.","commit_id":"4a65f9c4cae72a36593500e4f6e8aef90ac3e01a"}]}
