)]}'
{"tempest/api/compute/v3/admin/test_agents.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                  \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx\u0027,"},{"line_number":72,"context_line":"                  \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        response \u003d {\u0027agent\u0027: {\u0027hypervisor\u0027: \u0027kvm\u0027,"},{"line_number":75,"context_line":"                    \u0027os\u0027: \u0027win\u0027,"},{"line_number":76,"context_line":"                    \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":77,"context_line":"                    \u0027version\u0027: \u00277.0\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxRM%3D","line":74,"updated":"2014-02-19 06:51:18.000000000","message":"better to rename this to expected because it is not an actual response.","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                  \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx\u0027,"},{"line_number":72,"context_line":"                  \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        response \u003d {\u0027agent\u0027: {\u0027hypervisor\u0027: \u0027kvm\u0027,"},{"line_number":75,"context_line":"                    \u0027os\u0027: \u0027win\u0027,"},{"line_number":76,"context_line":"                    \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":77,"context_line":"                    \u0027version\u0027: \u00277.0\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bw0E%3D","line":74,"in_reply_to":"AAAAUX%2F%2BxRM%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp, agent \u003d self.client.create_agent(**params)"},{"line_number":82,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":83,"context_line":"        for response_item, value in response[\u0027agent\u0027].items():"},{"line_number":84,"context_line":"            self.assertEqual(value, agent[response_item])"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        resp, _ \u003d self.client.delete_agent(agent[\u0027agent_id\u0027])"},{"line_number":87,"context_line":"        self.assertEqual(204, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxR4%3D","line":84,"updated":"2014-02-19 06:51:18.000000000","message":"I guess line83-84 can be replaced to\n\n self.assertEqual(response, agent)\n\nbecause of just comparing both dicts.","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp, agent \u003d self.client.create_agent(**params)"},{"line_number":82,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":83,"context_line":"        for response_item, value in response[\u0027agent\u0027].items():"},{"line_number":84,"context_line":"            self.assertEqual(value, agent[response_item])"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        resp, _ \u003d self.client.delete_agent(agent[\u0027agent_id\u0027])"},{"line_number":87,"context_line":"        self.assertEqual(204, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bw0A%3D","line":84,"in_reply_to":"AAAAUX%2F%2Bw%2B8%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6d0b8351e95b5454acf7c1ff9423dcc38d9afead","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp, agent \u003d self.client.create_agent(**params)"},{"line_number":82,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":83,"context_line":"        for response_item, value in response[\u0027agent\u0027].items():"},{"line_number":84,"context_line":"            self.assertEqual(value, agent[response_item])"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        resp, _ \u003d self.client.delete_agent(agent[\u0027agent_id\u0027])"},{"line_number":87,"context_line":"        self.assertEqual(204, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bw%2B8%3D","line":84,"in_reply_to":"AAAAUX%2F%2BxCs%3D","updated":"2014-02-19 07:33:24.000000000","message":"Sorry, I misunderstood.\nCurrent code seems good for me now. A new point is that \u0027agent\u0027 can be removed from response dict.","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"72e1f7ae7023ce93a238a5c653ceb0c9f08f7ef8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp, agent \u003d self.client.create_agent(**params)"},{"line_number":82,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":83,"context_line":"        for response_item, value in response[\u0027agent\u0027].items():"},{"line_number":84,"context_line":"            self.assertEqual(value, agent[response_item])"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        resp, _ \u003d self.client.delete_agent(agent[\u0027agent_id\u0027])"},{"line_number":87,"context_line":"        self.assertEqual(204, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxCs%3D","line":84,"in_reply_to":"AAAAUX%2F%2BxR4%3D","updated":"2014-02-19 07:26:21.000000000","message":"response includes agent_id which is generated automatically, so response and agent are different.\nBut, at least key \u0027agent\u0027 in response must be deleted, isn\u0027t it?","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                      \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx2\u0027,"},{"line_number":104,"context_line":"                      \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        response_new \u003d {\u0027agent\u0027: {\u0027version\u0027: \u00278.0\u0027,"},{"line_number":107,"context_line":"                        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx2\u0027,"},{"line_number":108,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}}"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxQ4%3D","line":106,"updated":"2014-02-19 06:51:18.000000000","message":"ditto: better to rename this to expected.","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                      \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx2\u0027,"},{"line_number":104,"context_line":"                      \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        response_new \u003d {\u0027agent\u0027: {\u0027version\u0027: \u00278.0\u0027,"},{"line_number":107,"context_line":"                        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx2\u0027,"},{"line_number":108,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}}"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BwzM%3D","line":106,"in_reply_to":"AAAAUX%2F%2BxQ4%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        resp, resp_agent \u003d self.client.update_agent(agent[\u0027agent_id\u0027],"},{"line_number":111,"context_line":"                                                    **params_new)"},{"line_number":112,"context_line":"        for response_item, value in response_new[\u0027agent\u0027].items():"},{"line_number":113,"context_line":"            self.assertEqual(value, resp_agent[response_item])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxQo%3D","line":113,"updated":"2014-02-19 06:51:18.000000000","message":"ditto: can be replaced to just one line.","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c2783dccfe4bbabbddd19209b865a5a452c1186b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        cls.client \u003d cls.agents_admin_client"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":33,"context_line":"    def test_list_agents(self):"},{"line_number":34,"context_line":"        \"\"\"List all agent builds.\"\"\""},{"line_number":35,"context_line":"        params \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027,"},{"line_number":36,"context_line":"                  \u0027os\u0027: \u0027win\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FrGY%3D","line":33,"updated":"2014-02-25 10:36:16.000000000","message":"So I think we can probably collapse all these tests into just a single test - create, list, list by filter, update, then delete. Would save on the duplicate setup and tear down for all the individual tests","commit_id":"52c60d42586c3fca0843ff5f1b9bde7a39daef1e"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"8f576bf5f662f314f5c71b92c477fec99ac4a7ac","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        cls.client \u003d cls.agents_admin_client"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":33,"context_line":"    def test_list_agents(self):"},{"line_number":34,"context_line":"        \"\"\"List all agent builds.\"\"\""},{"line_number":35,"context_line":"        params \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027,"},{"line_number":36,"context_line":"                  \u0027os\u0027: \u0027win\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fjd8%3D","line":33,"in_reply_to":"AAAAU3%2F%2FrGY%3D","updated":"2014-02-25 23:49:24.000000000","message":"Christopher, you\u0027re right, I\u0027ll do so in the next patch. Thank you.","commit_id":"52c60d42586c3fca0843ff5f1b9bde7a39daef1e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dffcc68b86b3d015925929558b494d2710a1750e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    Tests Agents API that require admin privileges"},{"line_number":23,"context_line":"    \"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"},{"line_number":28,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVX%2F%2FyUY%3D","line":25,"updated":"2014-02-28 09:45:42.000000000","message":"Now _interface is already set in BaseV3ComputeAdminTest because Ie9ad2242d20ce90fca74ca7a5390e0971f830caa has been merged, so we should remove _interface in each test class.","commit_id":"95b2429e0659a27da559a63a81f1557e39924dd0"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"a13e8c0d308f53edc0fcb930f523985172c78944","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    Tests Agents API that require admin privileges"},{"line_number":23,"context_line":"    \"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"},{"line_number":28,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVn%2F%2F%2B50%3D","line":25,"in_reply_to":"AAAAVX%2F%2FyUY%3D","updated":"2014-03-03 00:25:23.000000000","message":"Done","commit_id":"95b2429e0659a27da559a63a81f1557e39924dd0"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"a07f8688b51df579a7e35c57a7936aec6ce65b44","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":55,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":56,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":57,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params_xen \u003d {\u0027hypervisor\u0027: \u0027xen\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FQoI%3D","line":56,"updated":"2014-03-07 07:56:24.000000000","message":"Why do we need expected_* dict at all? Can\u0027t we use params_kvm? Since we already get a second data structure (agent_kvm) and can assert it against params_kvm.","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3299d47494033b537922fcc1fcac34555adebaa3","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":55,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":56,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":57,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params_xen \u003d {\u0027hypervisor\u0027: \u0027xen\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2B7mw%3D","line":56,"in_reply_to":"AAAAVn%2F%2B7o4%3D","updated":"2014-03-11 07:45:30.000000000","message":"Agreed with Marc, that would be a good idea for maintenancebility.","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"fa934c0a9addab70e958b08850becc5df58cd07b","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":55,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":56,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":57,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params_xen \u003d {\u0027hypervisor\u0027: \u0027xen\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2B7mU%3D","line":56,"in_reply_to":"AAAAVn%2F%2B7o4%3D","updated":"2014-03-12 04:10:51.000000000","message":"Is it possible write like that?  I didn\u0027t know that.Thank you and I\u0027ll do it.","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"9e9ec07067aab71c1d4c4a0c6b9bf54b007faea2","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":55,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":56,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":57,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params_xen \u003d {\u0027hypervisor\u0027: \u0027xen\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2B7o4%3D","line":56,"in_reply_to":"AAAAVn%2F%2B9l8%3D","updated":"2014-03-11 07:43:33.000000000","message":"So if two variables are more readable why not writing it:\n\n   params_kvm \u003d expected_kvm \u003d { \u0027hypervisor\u0027: \u0027kvm\u0027.... }","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"83a5a8d16d3cc365b8eade33b6f1f714490c7ff5","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":55,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":56,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":57,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params_xen \u003d {\u0027hypervisor\u0027: \u0027xen\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2B9l8%3D","line":56,"in_reply_to":"AAAAVn%2F%2FQoI%3D","updated":"2014-03-11 01:24:28.000000000","message":"Your opinion is true, we can use params_kvm instead of expected_kvm, but I think that assertEqual(expected value, actual value) is ideal and readable.","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"a07f8688b51df579a7e35c57a7936aec6ce65b44","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":74,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":75,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        params_kvm_new \u003d {\u0027version\u0027: \u00278.0\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FQmg%3D","line":74,"updated":"2014-03-07 07:56:24.000000000","message":"see above.","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"83a5a8d16d3cc365b8eade33b6f1f714490c7ff5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":74,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":75,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        params_kvm_new \u003d {\u0027version\u0027: \u00278.0\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2B9l0%3D","line":74,"in_reply_to":"AAAAVn%2F%2FQmg%3D","updated":"2014-03-11 01:24:28.000000000","message":"ditto","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"a07f8688b51df579a7e35c57a7936aec6ce65b44","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        resp, resp_agent_kvm \u003d self.client.update_agent(agent_kvm[\u0027agent_id\u0027],"},{"line_number":86,"context_line":"                                                        **params_kvm_new)"},{"line_number":87,"context_line":"        for expected_item, value in expected_kvm_new.items():"},{"line_number":88,"context_line":"            self.assertEqual(value, resp_agent_kvm[expected_item])"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        resp, agents \u003d self.client.list_agents()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FQmY%3D","line":87,"updated":"2014-03-07 07:56:24.000000000","message":"see above.","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"83a5a8d16d3cc365b8eade33b6f1f714490c7ff5","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        resp, resp_agent_kvm \u003d self.client.update_agent(agent_kvm[\u0027agent_id\u0027],"},{"line_number":86,"context_line":"                                                        **params_kvm_new)"},{"line_number":87,"context_line":"        for expected_item, value in expected_kvm_new.items():"},{"line_number":88,"context_line":"            self.assertEqual(value, resp_agent_kvm[expected_item])"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        resp, agents \u003d self.client.list_agents()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2B9lw%3D","line":87,"in_reply_to":"AAAAVn%2F%2FQmY%3D","updated":"2014-03-11 01:24:28.000000000","message":"ditto","commit_id":"fe87f4035c522e20c1d1a149ef5c1dd8de03bce3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9ebc15fe6b97576866c36d7e23810730b9938d27","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                     \u0027md5hash\u0027: \"\"\"add6bb58e139be103324d04d8\"\"\""},{"line_number":59,"context_line":"                                                \"\"\"2d8f546\"\"\"}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":62,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":63,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2ByWU%3D","line":61,"updated":"2014-03-12 06:24:33.000000000","message":"better to add\n\n self.assertEqual(201, resp.status)\n\nfor detecting a failure faster.","commit_id":"6ea3afc91062a35ed94cf10a995baa9be0010f6a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"4d90f1363bc14f6a0c346b9bffaeabdbb373bfd6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                     \u0027md5hash\u0027: \"\"\"add6bb58e139be103324d04d8\"\"\""},{"line_number":59,"context_line":"                                                \"\"\"2d8f546\"\"\"}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":62,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":63,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2Bxog%3D","line":61,"in_reply_to":"AAAAVn%2F%2ByWU%3D","updated":"2014-03-12 08:44:24.000000000","message":"Done","commit_id":"6ea3afc91062a35ed94cf10a995baa9be0010f6a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9ebc15fe6b97576866c36d7e23810730b9938d27","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                                        \"\"\"324d04d82d8f547\"\"\"}"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        resp, resp_agent_kvm \u003d self.client.update_agent(agent_kvm[\u0027agent_id\u0027],"},{"line_number":71,"context_line":"                                                        **params_kvm_new)"},{"line_number":72,"context_line":"        for expected_item, value in expected_kvm_new.items():"},{"line_number":73,"context_line":"            self.assertEqual(value, resp_agent_kvm[expected_item])"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2ByWQ%3D","line":71,"updated":"2014-03-12 06:24:33.000000000","message":"ditto","commit_id":"6ea3afc91062a35ed94cf10a995baa9be0010f6a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"4d90f1363bc14f6a0c346b9bffaeabdbb373bfd6","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                                        \"\"\"324d04d82d8f547\"\"\"}"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        resp, resp_agent_kvm \u003d self.client.update_agent(agent_kvm[\u0027agent_id\u0027],"},{"line_number":71,"context_line":"                                                        **params_kvm_new)"},{"line_number":72,"context_line":"        for expected_item, value in expected_kvm_new.items():"},{"line_number":73,"context_line":"            self.assertEqual(value, resp_agent_kvm[expected_item])"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2Bxoc%3D","line":71,"in_reply_to":"AAAAVn%2F%2ByWQ%3D","updated":"2014-03-12 08:44:24.000000000","message":"Done","commit_id":"6ea3afc91062a35ed94cf10a995baa9be0010f6a"}],"tempest/api/compute/v3/admin/test_agents_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class AgentsAdminNegativeV3Test(base.BaseV3ComputeAdminTest):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    \"\"\""},{"line_number":24,"context_line":"    Tests Agents API that require admin privileges"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxP4%3D","line":21,"updated":"2014-02-19 06:51:18.000000000","message":"Please do not add new negative tests. Now is still in moratorium on new negative tests.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-November/018748.html","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class AgentsAdminNegativeV3Test(base.BaseV3ComputeAdminTest):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    \"\"\""},{"line_number":24,"context_line":"    Tests Agents API that require admin privileges"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BwzA%3D","line":21,"in_reply_to":"AAAAUX%2F%2BxP4%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"}],"tempest/services/compute/v3/json/agents_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":35,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":36,"context_line":"        body \u003d json.loads(body)"},{"line_number":37,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":40,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxO8%3D","line":37,"updated":"2014-02-19 06:51:18.000000000","message":"line 36-37 can be replaced to the single line:\n\n return resp, self._parse_resp(body)","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":35,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":36,"context_line":"        body \u003d json.loads(body)"},{"line_number":37,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":40,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bwyk%3D","line":37,"in_reply_to":"AAAAUX%2F%2BxO8%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f40dfdb992900ecb01be035224be1055bba0c8dc","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":40,"context_line":"        \"\"\"Create an agent build.\"\"\""},{"line_number":41,"context_line":"        post_body \u003d json.dumps({\u0027agent\u0027: kwargs})"},{"line_number":42,"context_line":"        resp, body \u003d self.post(\u0027os-agents\u0027, post_body, self.headers)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        body \u003d json.loads(body)"},{"line_number":45,"context_line":"        return resp, body[\u0027agent\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxM0%3D","line":42,"updated":"2014-02-19 07:01:52.000000000","message":"self.headers is redundant, should be omitted.","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"9382ae354389b8b3e9f65d3ae7e9890caf770026","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":40,"context_line":"        \"\"\"Create an agent build.\"\"\""},{"line_number":41,"context_line":"        post_body \u003d json.dumps({\u0027agent\u0027: kwargs})"},{"line_number":42,"context_line":"        resp, body \u003d self.post(\u0027os-agents\u0027, post_body, self.headers)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        body \u003d json.loads(body)"},{"line_number":45,"context_line":"        return resp, body[\u0027agent\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxAc%3D","line":42,"in_reply_to":"AAAAUX%2F%2BxM0%3D","updated":"2014-02-19 07:32:01.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        resp, body \u003d self.post(\u0027os-agents\u0027, post_body, self.headers)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        body \u003d json.loads(body)"},{"line_number":45,"context_line":"        return resp, body[\u0027agent\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def delete_agent(self, agent_id):"},{"line_number":48,"context_line":"        \"\"\"Delete an existing agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxOw%3D","line":45,"updated":"2014-02-19 06:51:18.000000000","message":"ditto","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        resp, body \u003d self.post(\u0027os-agents\u0027, post_body, self.headers)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        body \u003d json.loads(body)"},{"line_number":45,"context_line":"        return resp, body[\u0027agent\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def delete_agent(self, agent_id):"},{"line_number":48,"context_line":"        \"\"\"Delete an existing agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BwyQ%3D","line":45,"in_reply_to":"AAAAUX%2F%2BxOw%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f40dfdb992900ecb01be035224be1055bba0c8dc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Update an agent build.\"\"\""},{"line_number":53,"context_line":"        put_body \u003d json.dumps({\u0027agent\u0027: kwargs})"},{"line_number":54,"context_line":"        resp, body \u003d self.put(\"os-agents/%s\" % str(agent_id),"},{"line_number":55,"context_line":"                              put_body, self.headers)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        body \u003d json.loads(body)"},{"line_number":58,"context_line":"        return resp, body[\u0027agent\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxMk%3D","line":55,"updated":"2014-02-19 07:01:52.000000000","message":"ditto","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Update an agent build.\"\"\""},{"line_number":53,"context_line":"        put_body \u003d json.dumps({\u0027agent\u0027: kwargs})"},{"line_number":54,"context_line":"        resp, body \u003d self.put(\"os-agents/%s\" % str(agent_id),"},{"line_number":55,"context_line":"                              put_body, self.headers)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        body \u003d json.loads(body)"},{"line_number":58,"context_line":"        return resp, body[\u0027agent\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BwyI%3D","line":55,"in_reply_to":"AAAAUX%2F%2BxMk%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a1b68177e57f63e11e52a5d0d202f7e0ad5b8bb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                              put_body, self.headers)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        body \u003d json.loads(body)"},{"line_number":58,"context_line":"        return resp, body[\u0027agent\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BxOs%3D","line":58,"updated":"2014-02-19 06:51:18.000000000","message":"ditto","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7e216fe2849de8eff845836a86400b202178eda8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                              put_body, self.headers)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        body \u003d json.loads(body)"},{"line_number":58,"context_line":"        return resp, body[\u0027agent\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bwxo%3D","line":58,"in_reply_to":"AAAAUX%2F%2BxOs%3D","updated":"2014-02-19 08:23:11.000000000","message":"Done","commit_id":"1b1c18b01543d2aeeaadae1c77590ee41e5d89d9"}]}
