)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"05d6b652974823e2eedc3897a2632df8488edf58","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add V2 Nova API os-agents tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds V2 Nova API - os-agents delete tests."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I18f1a95ac5e22a646da9aeb52f096f7caa82e8c8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAVn%2F%2FNpk%3D","line":9,"updated":"2014-03-07 15:49:03.000000000","message":"You are not testing only \"os-agents delete\" tests.","commit_id":"8c3aade0ac5059b5a0de297474f414e92bca006a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"b87d8c30f855019eba50ae2d54895f45d9a30636","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add V2 Nova API os-agents tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds V2 Nova API - os-agents delete tests."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I18f1a95ac5e22a646da9aeb52f096f7caa82e8c8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAVn%2F%2B%2BCk%3D","line":9,"in_reply_to":"AAAAVn%2F%2FNpk%3D","updated":"2014-03-11 00:03:20.000000000","message":"That\u0027s right, I\u0027ll modify it.","commit_id":"8c3aade0ac5059b5a0de297474f414e92bca006a"}],"tempest/api/compute/admin/test_agents.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b556842fccd158d40ed64788b835335fa0ccd1ae","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                        \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":51,"context_line":"                        \u0027version\u0027: \u00277.0\u0027,"},{"line_number":52,"context_line":"                        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx\u0027,"},{"line_number":53,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":56,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FvGU%3D","line":53,"updated":"2014-03-14 05:52:46.000000000","message":"Please merge here to\n\n params_kvm \u003d expected_kvm \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027, ..\n\nlike v3 API tests for the maintenancebility.","commit_id":"826406c92595d8d5e4bc7892ed1b1e17754eeee4"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"90cbc05208a47e94144ede2f692a2c561e5c7d5a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                        \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":51,"context_line":"                        \u0027version\u0027: \u00277.0\u0027,"},{"line_number":52,"context_line":"                        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx\u0027,"},{"line_number":53,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":56,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Fuxs%3D","line":53,"in_reply_to":"AAAAWH%2F%2FvGU%3D","updated":"2014-03-14 06:27:09.000000000","message":"Done","commit_id":"826406c92595d8d5e4bc7892ed1b1e17754eeee4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b556842fccd158d40ed64788b835335fa0ccd1ae","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":70,"context_line":"                        \u0027version\u0027: \u00277.0\u0027,"},{"line_number":71,"context_line":"                        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":72,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":75,"context_line":"        for expected_item, value in expected_xen.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FvGQ%3D","line":72,"updated":"2014-03-14 05:52:46.000000000","message":"ditto","commit_id":"826406c92595d8d5e4bc7892ed1b1e17754eeee4"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"90cbc05208a47e94144ede2f692a2c561e5c7d5a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":70,"context_line":"                        \u0027version\u0027: \u00277.0\u0027,"},{"line_number":71,"context_line":"                        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":72,"context_line":"                        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":75,"context_line":"        for expected_item, value in expected_xen.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Fuxo%3D","line":72,"in_reply_to":"AAAAWH%2F%2FvGQ%3D","updated":"2014-03-14 06:27:09.000000000","message":"Done","commit_id":"826406c92595d8d5e4bc7892ed1b1e17754eeee4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b556842fccd158d40ed64788b835335fa0ccd1ae","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        expected_kvm_new \u003d {\u0027version\u0027: \u00278.0\u0027,"},{"line_number":83,"context_line":"                            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx2\u0027,"},{"line_number":84,"context_line":"                            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f547\u0027}"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        resp, resp_agent_kvm \u003d self.client.update_agent(agent_kvm[\u0027agent_id\u0027],"},{"line_number":87,"context_line":"                                                        **params_kvm_new)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FvF8%3D","line":84,"updated":"2014-03-14 05:52:46.000000000","message":"ditto","commit_id":"826406c92595d8d5e4bc7892ed1b1e17754eeee4"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"90cbc05208a47e94144ede2f692a2c561e5c7d5a","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        expected_kvm_new \u003d {\u0027version\u0027: \u00278.0\u0027,"},{"line_number":83,"context_line":"                            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx2\u0027,"},{"line_number":84,"context_line":"                            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f547\u0027}"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        resp, resp_agent_kvm \u003d self.client.update_agent(agent_kvm[\u0027agent_id\u0027],"},{"line_number":87,"context_line":"                                                        **params_kvm_new)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Fuxk%3D","line":84,"in_reply_to":"AAAAWH%2F%2FvF8%3D","updated":"2014-03-14 06:27:09.000000000","message":"Done","commit_id":"826406c92595d8d5e4bc7892ed1b1e17754eeee4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"109bff6f578eed98f13a10a70ff03a86ff82af23","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        4. List the agent builds by the filter."},{"line_number":39,"context_line":"        5. Delete agents."},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        params_kvm \u003d expected_kvm \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027,"},{"line_number":42,"context_line":"                                     \u0027os\u0027: \u0027win\u0027,"},{"line_number":43,"context_line":"                                     \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":44,"context_line":"                                     \u0027version\u0027: \u00277.0\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FShA%3D","line":41,"updated":"2014-03-18 20:56:24.000000000","message":"See http://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"66fcfdc00ff85d13601eec0e1d369e570ac55569","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        4. List the agent builds by the filter."},{"line_number":39,"context_line":"        5. Delete agents."},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        params_kvm \u003d expected_kvm \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027,"},{"line_number":42,"context_line":"                                     \u0027os\u0027: \u0027win\u0027,"},{"line_number":43,"context_line":"                                     \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":44,"context_line":"                                     \u0027version\u0027: \u00277.0\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FPh4%3D","line":41,"in_reply_to":"AAAAWH%2F%2FShA%3D","updated":"2014-03-19 07:52:15.000000000","message":"Done","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"bb155ac06cf948c3bd1761fcf41dc68ecba5c33b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":50,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":51,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":52,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2B0BQ%3D","line":50,"updated":"2014-03-24 05:19:49.000000000","message":"self.addCleanup(self.client.delete_agent, agent_kvm[\u0027agent_id\u0027]) is necessary here.","commit_id":"b56946cde5e87eae52849fc34be36b79186bd93a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"bafc56b6d249c7c91ce992d6fc6deb94c022a7da","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":50,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":51,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":52,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Br6w%3D","line":50,"in_reply_to":"AAAAWH%2F%2B0BQ%3D","updated":"2014-03-25 03:19:12.000000000","message":"agent_kvm[\u0027agent_id\u0027] will be deleted in Line87. Is it really necessary?","commit_id":"b56946cde5e87eae52849fc34be36b79186bd93a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"f2be3f342249e7c755a6de720e591d7a3db50c1d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":50,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":51,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":52,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BZMw%3D","line":50,"in_reply_to":"AAAAWH%2F%2BhYI%3D","updated":"2014-03-27 05:00:30.000000000","message":"I understood. I\u0027ll do that in the next patch.","commit_id":"b56946cde5e87eae52849fc34be36b79186bd93a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7de9c5c47341fbe08b47f432def80f26fee15598","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        resp, agent_kvm \u003d self.client.create_agent(**params_kvm)"},{"line_number":50,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":51,"context_line":"        for expected_item, value in expected_kvm.items():"},{"line_number":52,"context_line":"            self.assertEqual(value, agent_kvm[expected_item])"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BhYI%3D","line":50,"in_reply_to":"AAAAWH%2F%2Br6w%3D","updated":"2014-03-26 07:48:51.000000000","message":"If an exception happens at line52, agent data would remain in the environment. That would be leak and Tempest should not do it.","commit_id":"b56946cde5e87eae52849fc34be36b79186bd93a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"bb155ac06cf948c3bd1761fcf41dc68ecba5c33b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":60,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":63,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":64,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2B0AU%3D","line":62,"updated":"2014-03-24 05:19:49.000000000","message":"How about re-using one agent(kvm\u0027s one) instead of creating a new agent?\nIf doing it, the code could be reduced.","commit_id":"b56946cde5e87eae52849fc34be36b79186bd93a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"bafc56b6d249c7c91ce992d6fc6deb94c022a7da","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":60,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":63,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":64,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Br5k%3D","line":62,"in_reply_to":"AAAAWH%2F%2B0AU%3D","updated":"2014-03-25 03:19:12.000000000","message":"In order to test (1)list all agents(Line 77) (2) list agent by filter(Line 82), 2 different agents are necessary.\nOr are you just saying below??\nresp, agent_kvm \u003d self.client.create_agent(**params_xen)","commit_id":"b56946cde5e87eae52849fc34be36b79186bd93a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7de9c5c47341fbe08b47f432def80f26fee15598","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":60,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":63,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":64,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BhX4%3D","line":62,"in_reply_to":"AAAAWH%2F%2Br5k%3D","updated":"2014-03-26 07:48:51.000000000","message":"Thanks for the explanation. I got it. As you said, it is better to keep here.","commit_id":"b56946cde5e87eae52849fc34be36b79186bd93a"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"8afea64ae88d2e02a0435913cab69d98fe0c94d1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    Tests Agents API"},{"line_number":22,"context_line":"    \"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @classmethod"},{"line_number":27,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BZHY%3D","line":24,"updated":"2014-03-27 05:40:06.000000000","message":"this parameter can be removed in compute tests as it is in base class.","commit_id":"d18487eea26cc7ede0c6c8f9c171e4ebe8de5e9a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"07ee955b0a76f705565f00968886925e37ce01ad","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    Tests Agents API"},{"line_number":22,"context_line":"    \"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @classmethod"},{"line_number":27,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BZBI%3D","line":24,"in_reply_to":"AAAAWH%2F%2BZHY%3D","updated":"2014-03-27 06:13:25.000000000","message":"Done","commit_id":"d18487eea26cc7ede0c6c8f9c171e4ebe8de5e9a"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"8afea64ae88d2e02a0435913cab69d98fe0c94d1","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        resp, agents \u003d self.client.list_agents()"},{"line_number":80,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":81,"context_line":"        self.assertTrue(len(agents) \u003e 1)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027}"},{"line_number":84,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BZHs%3D","line":81,"updated":"2014-03-27 05:40:06.000000000","message":"assertTrue need a error message to help debug.\n\nself.assertTrue(len(agents) \u003e 1, \u0027Can not get more than one agents, %s\u0027 % agents)","commit_id":"d18487eea26cc7ede0c6c8f9c171e4ebe8de5e9a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"07ee955b0a76f705565f00968886925e37ce01ad","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        resp, agents \u003d self.client.list_agents()"},{"line_number":80,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":81,"context_line":"        self.assertTrue(len(agents) \u003e 1)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027}"},{"line_number":84,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BZAs%3D","line":81,"in_reply_to":"AAAAWH%2F%2BZHs%3D","updated":"2014-03-27 06:13:25.000000000","message":"Done","commit_id":"d18487eea26cc7ede0c6c8f9c171e4ebe8de5e9a"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"8afea64ae88d2e02a0435913cab69d98fe0c94d1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027}"},{"line_number":84,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"},{"line_number":85,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":86,"context_line":"        self.assertTrue(len(agent) \u003e 0)"},{"line_number":87,"context_line":"        self.assertEqual(\u0027kvm\u0027, agent[0][\u0027hypervisor\u0027])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BZHk%3D","line":86,"updated":"2014-03-27 05:40:06.000000000","message":"ditto","commit_id":"d18487eea26cc7ede0c6c8f9c171e4ebe8de5e9a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"07ee955b0a76f705565f00968886925e37ce01ad","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: \u0027kvm\u0027}"},{"line_number":84,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"},{"line_number":85,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":86,"context_line":"        self.assertTrue(len(agent) \u003e 0)"},{"line_number":87,"context_line":"        self.assertEqual(\u0027kvm\u0027, agent[0][\u0027hypervisor\u0027])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BZAo%3D","line":86,"in_reply_to":"AAAAWH%2F%2BZHk%3D","updated":"2014-03-27 06:13:25.000000000","message":"Done","commit_id":"d18487eea26cc7ede0c6c8f9c171e4ebe8de5e9a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"96685ccca5df6de0076359de71a5a5d009520f65","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        params_kvm \u003d expected_kvm \u003d {"},{"line_number":40,"context_line":"            \u0027hypervisor\u0027: \u0027kvm\u0027,"},{"line_number":41,"context_line":"            \u0027os\u0027: \u0027win\u0027,"},{"line_number":42,"context_line":"            \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":43,"context_line":"            \u0027version\u0027: \u00277.0\u0027,"},{"line_number":44,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx\u0027,"},{"line_number":45,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f545\u0027}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BPQ0%3D","line":42,"updated":"2014-03-28 06:56:49.000000000","message":"These parameter values are the same as the ones of v3 API test and XML test.\n\nIf these tests are operated in parallel, the following error happens:\n\n Agent-build with hypervisor kvm os win architecture x86 exists.\n\nSo these values should include random value.","commit_id":"a297141fdb03aaa4af9b350bfa108f69ba894a0a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"96685ccca5df6de0076359de71a5a5d009520f65","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        params_xen \u003d expected_xen \u003d {"},{"line_number":54,"context_line":"            \u0027hypervisor\u0027: \u0027xen\u0027,"},{"line_number":55,"context_line":"            \u0027os\u0027: \u0027linux\u0027,"},{"line_number":56,"context_line":"            \u0027architecture\u0027: \u0027x86\u0027,"},{"line_number":57,"context_line":"            \u0027version\u0027: \u00277.0\u0027,"},{"line_number":58,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":59,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BPQw%3D","line":56,"updated":"2014-03-28 06:56:49.000000000","message":"ditto","commit_id":"a297141fdb03aaa4af9b350bfa108f69ba894a0a"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"4f724b7d63c5fea63f19bf28b43ec6b7faa16233","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        5. Delete agents."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        hypervisorname_kvm \u003d data_utils.rand_name(\u0027kvm\u0027)"},{"line_number":41,"context_line":"        params_kvm \u003d expected_kvm \u003d {"},{"line_number":42,"context_line":"            \u0027hypervisor\u0027: hypervisorname_kvm,"},{"line_number":43,"context_line":"            \u0027os\u0027: data_utils.rand_name(\u0027win\u0027),"},{"line_number":44,"context_line":"            \u0027architecture\u0027: data_utils.rand_name(\u0027x86\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BNi0%3D","line":41,"updated":"2014-03-28 11:36:09.000000000","message":"This piece of code is being repeated three times with different parameters passed.\nWon\u0027t be it better to create a helper function for this ?","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"123eae4b0d1fe82b21a74f3f2db27beb25bd1bc4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        5. Delete agents."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        hypervisorname_kvm \u003d data_utils.rand_name(\u0027kvm\u0027)"},{"line_number":41,"context_line":"        params_kvm \u003d expected_kvm \u003d {"},{"line_number":42,"context_line":"            \u0027hypervisor\u0027: hypervisorname_kvm,"},{"line_number":43,"context_line":"            \u0027os\u0027: data_utils.rand_name(\u0027win\u0027),"},{"line_number":44,"context_line":"            \u0027architecture\u0027: data_utils.rand_name(\u0027x86\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9894%3D","line":41,"in_reply_to":"AAAAWH%2F%2BNi0%3D","updated":"2014-04-01 01:08:43.000000000","message":"Isn\u0027t it 2 times? Line 40 and Line 55.","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"37e1f1553af334cffa97efd6dc9966be3962a7cf","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        5. Delete agents."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        hypervisorname_kvm \u003d data_utils.rand_name(\u0027kvm\u0027)"},{"line_number":41,"context_line":"        params_kvm \u003d expected_kvm \u003d {"},{"line_number":42,"context_line":"            \u0027hypervisor\u0027: hypervisorname_kvm,"},{"line_number":43,"context_line":"            \u0027os\u0027: data_utils.rand_name(\u0027win\u0027),"},{"line_number":44,"context_line":"            \u0027architecture\u0027: data_utils.rand_name(\u0027x86\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9ykQ%3D","line":41,"in_reply_to":"AAAAWH%2F9894%3D","updated":"2014-04-02 06:08:33.000000000","message":"With almost same parameters, it seems two times. But I think #line 68 also use uses same type of declaration.\nIn my opinion a helper will be better.\nStill others can give their opinion.","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"55c925307028531ca80795a8e3b57f5d12c60206","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        5. Delete agents."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        hypervisorname_kvm \u003d data_utils.rand_name(\u0027kvm\u0027)"},{"line_number":41,"context_line":"        params_kvm \u003d expected_kvm \u003d {"},{"line_number":42,"context_line":"            \u0027hypervisor\u0027: hypervisorname_kvm,"},{"line_number":43,"context_line":"            \u0027os\u0027: data_utils.rand_name(\u0027win\u0027),"},{"line_number":44,"context_line":"            \u0027architecture\u0027: data_utils.rand_name(\u0027x86\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9yJM%3D","line":41,"in_reply_to":"AAAAWH%2F9ykQ%3D","updated":"2014-04-02 06:53:19.000000000","message":"I\u0027ve got, thank you. I\u0027ll do it soon.","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"4f724b7d63c5fea63f19bf28b43ec6b7faa16233","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":61,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":64,"context_line":"        self.addCleanup(self.client.delete_agent, agent_xen[\u0027agent_id\u0027])"},{"line_number":65,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":66,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BNlM%3D","line":63,"updated":"2014-03-28 11:36:09.000000000","message":"this resp is not used anywhere,\nthis chan be changed to _, agent_xen.","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"123eae4b0d1fe82b21a74f3f2db27beb25bd1bc4","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":61,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":64,"context_line":"        self.addCleanup(self.client.delete_agent, agent_xen[\u0027agent_id\u0027])"},{"line_number":65,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":66,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F984k%3D","line":63,"in_reply_to":"AAAAWH%2F%2BNlM%3D","updated":"2014-04-01 01:08:43.000000000","message":"I\u0027ll do it in the next patch.","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"37e1f1553af334cffa97efd6dc9966be3962a7cf","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027,"},{"line_number":61,"context_line":"            \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        resp, agent_xen \u003d self.client.create_agent(**params_xen)"},{"line_number":64,"context_line":"        self.addCleanup(self.client.delete_agent, agent_xen[\u0027agent_id\u0027])"},{"line_number":65,"context_line":"        for expected_item, value in expected_xen.items():"},{"line_number":66,"context_line":"            self.assertEqual(value, agent_xen[expected_item])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9ykM%3D","line":63,"in_reply_to":"AAAAWH%2F984k%3D","updated":"2014-04-02 06:08:33.000000000","message":"Thanks","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"876fb31825268c7655d4f52fb91a99183d2cec9f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        cls.client \u003d cls.os_adm.agents_client"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _create_param_helper(self, hypervisor, os, architecture, version, url,"},{"line_number":31,"context_line":"                             md5hash):"},{"line_number":32,"context_line":"        param \u003d {}"},{"line_number":33,"context_line":"        if hypervisor is not None:"},{"line_number":34,"context_line":"            param[\u0027hypervisor\u0027] \u003d data_utils.rand_name(hypervisor)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9xFM%3D","line":31,"updated":"2014-04-02 09:15:07.000000000","message":"does above all parameters are manadatory ?\nIf not then declaration can be changed in **kwargs format.\n\nIn Line#73 I observe that u have passed \"None\" for some arguments. It seems that some arguments are not mandatory.\n\nSo you should changed declaration here as -\n\ndef _create_param_helper(self,  version, **kwargs) \n\nor in like way.","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c83bfed1303caef52c7c118a12a566f81558fc2d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        cls.client \u003d cls.os_adm.agents_client"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _create_param_helper(self, hypervisor, os, architecture, version, url,"},{"line_number":31,"context_line":"                             md5hash):"},{"line_number":32,"context_line":"        param \u003d {}"},{"line_number":33,"context_line":"        if hypervisor is not None:"},{"line_number":34,"context_line":"            param[\u0027hypervisor\u0027] \u003d data_utils.rand_name(hypervisor)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9wPw%3D","line":31,"in_reply_to":"AAAAWH%2F9xFM%3D","updated":"2014-04-02 11:13:58.000000000","message":"Done","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"8174ab007711ad1bd66653fc1798d0b88f1f12f0","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":46,"context_line":"    def test_create_update_list_delete_agents(self):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        1. Create 2 agents."},{"line_number":50,"context_line":"        2. Update one of the agents."}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9xAw%3D","line":47,"updated":"2014-04-02 09:56:02.000000000","message":"Let\u0027s remove this blank line (47)","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c83bfed1303caef52c7c118a12a566f81558fc2d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":46,"context_line":"    def test_create_update_list_delete_agents(self):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        1. Create 2 agents."},{"line_number":50,"context_line":"        2. Update one of the agents."}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9wPk%3D","line":47,"in_reply_to":"AAAAWH%2F9xAw%3D","updated":"2014-04-02 11:13:58.000000000","message":"Done","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"8174ab007711ad1bd66653fc1798d0b88f1f12f0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        resp, agents \u003d self.client.list_agents()"},{"line_number":84,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":85,"context_line":"        self.assertTrue(len(agents) \u003e 1,"},{"line_number":86,"context_line":"                        \u0027Can not get more than one agents, %s\u0027 % agents)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        hypervisorname_kvm \u003d agent_kvm[\u0027hypervisor\u0027]"},{"line_number":89,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: hypervisorname_kvm}"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9wxw%3D","line":86,"updated":"2014-04-02 09:56:02.000000000","message":"agents \u003e agent. (if it is only one agent)","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c83bfed1303caef52c7c118a12a566f81558fc2d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        resp, agents \u003d self.client.list_agents()"},{"line_number":84,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":85,"context_line":"        self.assertTrue(len(agents) \u003e 1,"},{"line_number":86,"context_line":"                        \u0027Can not get more than one agents, %s\u0027 % agents)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        hypervisorname_kvm \u003d agent_kvm[\u0027hypervisor\u0027]"},{"line_number":89,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: hypervisorname_kvm}"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9wPg%3D","line":86,"in_reply_to":"AAAAWH%2F9wxw%3D","updated":"2014-04-02 11:13:58.000000000","message":"Done","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"8174ab007711ad1bd66653fc1798d0b88f1f12f0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"},{"line_number":91,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":92,"context_line":"        self.assertTrue(len(agent) \u003e 0,"},{"line_number":93,"context_line":"                        \u0027Can not get agent, %s\u0027 % agents)"},{"line_number":94,"context_line":"        self.assertEqual(hypervisorname_kvm, agent[0][\u0027hypervisor\u0027])"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9wxc%3D","line":93,"updated":"2014-04-02 09:56:02.000000000","message":"fix \nagents  \u003e agent:\n\n\u0027Can not get agent, %s\u0027 % agent)","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c83bfed1303caef52c7c118a12a566f81558fc2d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"},{"line_number":91,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":92,"context_line":"        self.assertTrue(len(agent) \u003e 0,"},{"line_number":93,"context_line":"                        \u0027Can not get agent, %s\u0027 % agents)"},{"line_number":94,"context_line":"        self.assertEqual(hypervisorname_kvm, agent[0][\u0027hypervisor\u0027])"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9wPc%3D","line":93,"in_reply_to":"AAAAWH%2F9wxc%3D","updated":"2014-04-02 11:13:58.000000000","message":"Done","commit_id":"ecab082cdf1de74274f91a8f4a71a019e5ad2511"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"091dd1342086087633833f99ea7c536486a30906","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        hypervisorname_kvm \u003d agent_kvm[\u0027hypervisor\u0027]"},{"line_number":84,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: hypervisorname_kvm}"},{"line_number":85,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"},{"line_number":86,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":87,"context_line":"        self.assertTrue(len(agent) \u003e 0,"},{"line_number":88,"context_line":"                        \u0027Can not get agent, %s\u0027 % agent)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F9v3o%3D","line":85,"updated":"2014-04-02 12:18:09.000000000","message":"I\u0027m ok with this code, but looks like will be more clear to use \u0027agents\u0027 there, like in line 78.","commit_id":"f53449657a0396796d92172723c93e943cc66995"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"95c57944260a52724436229d2fb5057f5ac05287","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        hypervisorname_kvm \u003d agent_kvm[\u0027hypervisor\u0027]"},{"line_number":84,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: hypervisorname_kvm}"},{"line_number":85,"context_line":"        resp, agent \u003d self.client.list_agents(params_filter)"},{"line_number":86,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":87,"context_line":"        self.assertTrue(len(agent) \u003e 0,"},{"line_number":88,"context_line":"                        \u0027Can not get agent, %s\u0027 % agent)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F9vyo%3D","line":85,"in_reply_to":"AAAAWH%2F9v3o%3D","updated":"2014-04-02 12:29:39.000000000","message":"Thank for your review. I will do it:)","commit_id":"f53449657a0396796d92172723c93e943cc66995"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"d0ec4fc6c275e3764bc3cd97351bd5780c034631","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: hypervisorname_kvm}"},{"line_number":85,"context_line":"        resp, agents \u003d self.client.list_agents(params_filter)"},{"line_number":86,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":87,"context_line":"        self.assertTrue(len(agent) \u003e 0,"},{"line_number":88,"context_line":"                        \u0027Can not get any agent. (%s)\u0027 % agents)"},{"line_number":89,"context_line":"        self.assertEqual(hypervisorname_kvm, agent[0][\u0027hypervisor\u0027])"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F9vvE%3D","line":87,"updated":"2014-04-02 12:38:31.000000000","message":"sorry :)\n\nif we change \u0027agent\u0027 to \u0027agents\u0027 in line 85, need to change \u0027agent\u0027 to \u0027agents\u0027 in lines 87, 88 and 89 too.","commit_id":"1ace26dc5b11331aa42b377e367fff9c074268a4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6f0231c1f8f0d151df77078576e8ec71c6c17a75","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: hypervisorname_kvm}"},{"line_number":85,"context_line":"        resp, agents \u003d self.client.list_agents(params_filter)"},{"line_number":86,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":87,"context_line":"        self.assertTrue(len(agent) \u003e 0,"},{"line_number":88,"context_line":"                        \u0027Can not get any agent. (%s)\u0027 % agents)"},{"line_number":89,"context_line":"        self.assertEqual(hypervisorname_kvm, agent[0][\u0027hypervisor\u0027])"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F9vtI%3D","line":87,"in_reply_to":"AAAAWH%2F9vvE%3D","updated":"2014-04-02 12:40:11.000000000","message":"oops, right. nice catch.","commit_id":"1ace26dc5b11331aa42b377e367fff9c074268a4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"82698a6215d3baded87f418a26b5c81b560fb2da","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        2. Update one of the agents."},{"line_number":44,"context_line":"        3. List all agent builds."},{"line_number":45,"context_line":"        4. List the agent builds by the filter."},{"line_number":46,"context_line":"        5. Delete agents."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        params_kvm \u003d expected_kvm \u003d self._create_param_helper("},{"line_number":49,"context_line":"            hypervisor\u003d\u0027kvm\u0027, os\u003d\u0027win\u0027, architecture\u003d\u0027x86\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F9rEA%3D","line":46,"updated":"2014-04-02 22:10:05.000000000","message":"Should we verify the deleting? For example, \n\n 5. Delete agents\n 6. List the agents -\u003e Check that we can\u0027t get them.","commit_id":"d751d2cf4e00826e3f4d74481356476159de3fc3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5b0c631eb8ff0c11007dac97f4a5c6f7712f8c7a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        2. Update one of the agents."},{"line_number":44,"context_line":"        3. List all agent builds."},{"line_number":45,"context_line":"        4. List the agent builds by the filter."},{"line_number":46,"context_line":"        5. Delete agents."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        params_kvm \u003d expected_kvm \u003d self._create_param_helper("},{"line_number":49,"context_line":"            hypervisor\u003d\u0027kvm\u0027, os\u003d\u0027win\u0027, architecture\u003d\u0027x86\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F9qQE%3D","line":46,"in_reply_to":"AAAAWH%2F9rEA%3D","updated":"2014-04-03 01:01:57.000000000","message":"good point, and I feel this test seems long. so I will try to separate this to some tests for easy investigation when a gate failure happens.","commit_id":"d751d2cf4e00826e3f4d74481356476159de3fc3"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"82698a6215d3baded87f418a26b5c81b560fb2da","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        resp, agents \u003d self.client.list_agents()"},{"line_number":79,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":80,"context_line":"        self.assertTrue(len(agents) \u003e 1,"},{"line_number":81,"context_line":"                        \u0027Can not get more than one agent. (%s)\u0027 % agents)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        hypervisorname_kvm \u003d agent_kvm[\u0027hypervisor\u0027]"},{"line_number":84,"context_line":"        params_filter \u003d {\u0027hypervisor\u0027: hypervisorname_kvm}"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F9rCI%3D","line":81,"updated":"2014-04-02 22:10:05.000000000","message":"Can you assert not only the number of agents but also expected items here?","commit_id":"d751d2cf4e00826e3f4d74481356476159de3fc3"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"652a3f30557a2805f41af7cd5d141f077a6199cf","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def tearDown(self):"},{"line_number":40,"context_line":"        try:"},{"line_number":41,"context_line":"            self.client.delete_agent(self.agent_id)"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            pass"},{"line_number":44,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F9lxI%3D","line":42,"updated":"2014-04-03 14:14:26.000000000","message":"Can you use more specific exception?\nFor example from tempest/exceptions:\n\n\"except some_expected_exception\"\n\nor\n\nexcept (expected_exception1, expected_exception2)","commit_id":"956475bb3248ef7a172b063bd0adb62f96d51e48"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8e2346c23c91d823ba3050c8a430084a0c27b932","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def tearDown(self):"},{"line_number":40,"context_line":"        try:"},{"line_number":41,"context_line":"            self.client.delete_agent(self.agent_id)"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            pass"},{"line_number":44,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F9hoU%3D","line":42,"in_reply_to":"AAAAWH%2F9hzw%3D","updated":"2014-04-03 22:26:37.000000000","message":"+1 for the above link:-)\n\nI will fix it.\nThanks for good point!","commit_id":"956475bb3248ef7a172b063bd0adb62f96d51e48"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6758ceb22be2c9996b97a4a3957b1737add54eb1","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def tearDown(self):"},{"line_number":40,"context_line":"        try:"},{"line_number":41,"context_line":"            self.client.delete_agent(self.agent_id)"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            pass"},{"line_number":44,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F9hzw%3D","line":42,"in_reply_to":"AAAAWH%2F9lms%3D","updated":"2014-04-03 22:01:00.000000000","message":"I think the errors should be logged at least except NotFound errors otherwise we\u0027ll miss hidden bugs.\n\nHow about Like this?\nhttps://github.com/openstack/tempest/blob/master/tempest/api/compute/base.py#L106","commit_id":"956475bb3248ef7a172b063bd0adb62f96d51e48"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a431ffeca80f84e2666946d1c06a2473ba9fc143","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def tearDown(self):"},{"line_number":40,"context_line":"        try:"},{"line_number":41,"context_line":"            self.client.delete_agent(self.agent_id)"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            pass"},{"line_number":44,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F9lms%3D","line":42,"in_reply_to":"AAAAWH%2F9lxI%3D","updated":"2014-04-03 14:28:40.000000000","message":"@Sergey\n\nThanks for your comment.\n\ntearDown method is just for cleanup, not the test purpose.\nSo even if an unexpected exception happens, I feel it is better to avoid affecting the test result.\n\nThis is just my idea, but it is not so strong opinion. Is it wrong?","commit_id":"956475bb3248ef7a172b063bd0adb62f96d51e48"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c13639fad5dd57f20057d9cb91c7ca181f1f073c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            hypervisor\u003d\u0027common\u0027, os\u003d\u0027linux\u0027, architecture\u003d\u0027x86_64\u0027,"},{"line_number":38,"context_line":"            version\u003d\u00277.0\u0027, url\u003d\u0027xxx://xxxx/xxx/xxx\u0027,"},{"line_number":39,"context_line":"            md5hash\u003d\u0027add6bb58e139be103324d04d82d8f545\u0027)"},{"line_number":40,"context_line":"        _, body \u003d self.client.create_agent(**params)"},{"line_number":41,"context_line":"        self.agent_id \u003d body[\u0027agent_id\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F9gZs%3D","line":40,"updated":"2014-04-04 03:21:02.000000000","message":"Should check status here. Also I don\u0027t think its necessary to create this agent for every test?","commit_id":"7503db2182da762d48277fc7b247e178748fee6a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c57e8e95746068baf6bddaa3e081a8057a92d8a1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            hypervisor\u003d\u0027common\u0027, os\u003d\u0027linux\u0027, architecture\u003d\u0027x86_64\u0027,"},{"line_number":38,"context_line":"            version\u003d\u00277.0\u0027, url\u003d\u0027xxx://xxxx/xxx/xxx\u0027,"},{"line_number":39,"context_line":"            md5hash\u003d\u0027add6bb58e139be103324d04d82d8f545\u0027)"},{"line_number":40,"context_line":"        _, body \u003d self.client.create_agent(**params)"},{"line_number":41,"context_line":"        self.agent_id \u003d body[\u0027agent_id\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F9gN0%3D","line":40,"in_reply_to":"AAAAWH%2F9gZs%3D","updated":"2014-04-04 03:56:33.000000000","message":"Thanks, I will add status check in the next patch.\n\nIn most tests, some agent is necessary and the cost of the agent creation is low. so I feel it is good to create an agent for every tests.","commit_id":"7503db2182da762d48277fc7b247e178748fee6a"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c13639fad5dd57f20057d9cb91c7ca181f1f073c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        except exceptions.NotFound:"},{"line_number":47,"context_line":"            pass"},{"line_number":48,"context_line":"        except Exception as exc:"},{"line_number":49,"context_line":"            LOG.info(\u0027Exception raised deleting agent %s\u0027, self.agent_id)"},{"line_number":50,"context_line":"            LOG.exception(exc)"},{"line_number":51,"context_line":"            pass"},{"line_number":52,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F9gbc%3D","line":49,"updated":"2014-04-04 03:21:02.000000000","message":"I think its sufficient to just do LOG.exception(\u0027Exception ....\n\nto get it to log the exception info? Eg don\u0027t need the explicit LOG.exception(exc)","commit_id":"7503db2182da762d48277fc7b247e178748fee6a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c57e8e95746068baf6bddaa3e081a8057a92d8a1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        except exceptions.NotFound:"},{"line_number":47,"context_line":"            pass"},{"line_number":48,"context_line":"        except Exception as exc:"},{"line_number":49,"context_line":"            LOG.info(\u0027Exception raised deleting agent %s\u0027, self.agent_id)"},{"line_number":50,"context_line":"            LOG.exception(exc)"},{"line_number":51,"context_line":"            pass"},{"line_number":52,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F9gV8%3D","line":49,"in_reply_to":"AAAAWH%2F9gbc%3D","updated":"2014-04-04 03:56:33.000000000","message":"+1, Done","commit_id":"7503db2182da762d48277fc7b247e178748fee6a"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c13639fad5dd57f20057d9cb91c7ca181f1f073c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            if k in [\u0027hypervisor\u0027, \u0027os\u0027, \u0027architecture\u0027]:"},{"line_number":57,"context_line":"                # NOTE: This rand_name is for avoiding an agent conflicts."},{"line_number":58,"context_line":"                # If trying to create the same agent with hypervisor, os and"},{"line_number":59,"context_line":"                # architecture, Nova returns a HTTPConflict response."},{"line_number":60,"context_line":"                kwargs[k] \u003d data_utils.rand_name(kwargs[k])"},{"line_number":61,"context_line":"        return kwargs"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F9gaA%3D","line":59,"updated":"2014-04-04 03:21:02.000000000","message":"Maybe reword this as:\n\n\"The rand_name is for avoiding agent conflicts. If you try to create an agent with the same hypervisor, os and architecture as an exising agent, Nova will return an HTTPConflict or HTTPServerError\"\n\nAlso given the underlying db constraint you probably only need to randomise one of hypervisor, os or architecture but it doesn\u0027t hurt to randomise all of them.","commit_id":"7503db2182da762d48277fc7b247e178748fee6a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c57e8e95746068baf6bddaa3e081a8057a92d8a1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            if k in [\u0027hypervisor\u0027, \u0027os\u0027, \u0027architecture\u0027]:"},{"line_number":57,"context_line":"                # NOTE: This rand_name is for avoiding an agent conflicts."},{"line_number":58,"context_line":"                # If trying to create the same agent with hypervisor, os and"},{"line_number":59,"context_line":"                # architecture, Nova returns a HTTPConflict response."},{"line_number":60,"context_line":"                kwargs[k] \u003d data_utils.rand_name(kwargs[k])"},{"line_number":61,"context_line":"        return kwargs"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F9gWU%3D","line":59,"in_reply_to":"AAAAWH%2F9gaA%3D","updated":"2014-04-04 03:56:33.000000000","message":"Done","commit_id":"7503db2182da762d48277fc7b247e178748fee6a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"c0305193b43079365d918837b25e42851694203e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            pass"},{"line_number":49,"context_line":"        except Exception:"},{"line_number":50,"context_line":"            LOG.exception(\u0027Exception raised deleting agent %s\u0027, self.agent_id)"},{"line_number":51,"context_line":"            pass"},{"line_number":52,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _param_helper(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAWH%2F9enc%3D","line":51,"updated":"2014-04-04 09:44:11.000000000","message":"This pass statement is useless. You \"pass\" if you have no action do to but here you log something so pass is not required.","commit_id":"22dbf089bb54b1394a2a37e599e0e86343174854"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"cba91ea7911ab2a2bfa0699b37c0437812f75313","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            pass"},{"line_number":49,"context_line":"        except Exception:"},{"line_number":50,"context_line":"            LOG.exception(\u0027Exception raised deleting agent %s\u0027, self.agent_id)"},{"line_number":51,"context_line":"            pass"},{"line_number":52,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _param_helper(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAWH%2F9bcI%3D","line":51,"in_reply_to":"AAAAWH%2F9enc%3D","updated":"2014-04-04 15:27:02.000000000","message":"+1","commit_id":"22dbf089bb54b1394a2a37e599e0e86343174854"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"afd55990697e13b6bea0291d469d3e52e4d4b00c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            pass"},{"line_number":49,"context_line":"        except Exception:"},{"line_number":50,"context_line":"            LOG.exception(\u0027Exception raised deleting agent %s\u0027, self.agent_id)"},{"line_number":51,"context_line":"            pass"},{"line_number":52,"context_line":"        super(AgentsAdminTestJSON, self).tearDown()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _param_helper(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAWH%2F9VEw%3D","line":51,"in_reply_to":"AAAAWH%2F9enc%3D","updated":"2014-04-07 00:11:46.000000000","message":"Nice catch, thanks.\n\nI will fix here.","commit_id":"22dbf089bb54b1394a2a37e599e0e86343174854"}],"tempest/services/compute/json/agents_client.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"109bff6f578eed98f13a10a70ff03a86ff82af23","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import urllib"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common.rest_client import RestClient"},{"line_number":19,"context_line":"from tempest import config"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FSiE%3D","line":18,"updated":"2014-03-18 20:56:24.000000000","message":"According to http://docs.openstack.org/developer/hacking/#imports\n\nIts recommended to import modules.","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"66fcfdc00ff85d13601eec0e1d369e570ac55569","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import urllib"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common.rest_client import RestClient"},{"line_number":19,"context_line":"from tempest import config"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FPJ0%3D","line":18,"in_reply_to":"AAAAWH%2F%2FSiE%3D","updated":"2014-03-19 07:52:15.000000000","message":"Done","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"109bff6f578eed98f13a10a70ff03a86ff82af23","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FSi4%3D","line":40,"updated":"2014-03-18 20:56:24.000000000","message":"Lines 39, 40 can be replaced with \n\nreturn resp, self._parse_resp(body)\n\nThen that can be inherited by xml service client.\n\nFor xml client will be need specify next:\n\nself.list_tags \u003d [\"agents\", ]","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cbf006163af5cdcc219248272ce9891b5b23c91e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FO6g%3D","line":40,"in_reply_to":"AAAAWH%2F%2FO8E%3D","updated":"2014-03-19 08:37:41.000000000","message":"Little update:\n\nFixed example with body of \u0027list_agents\u0027 method (no need to redefine \u0027body\u0027 var):\n\nurl \u003d \u0027os-agents\u0027\nif params:\n    url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)\nresp, body \u003d self.get(url)\nif self._get_type() \u003d\u003d \"json\":\n    self.validate_response(schema.list_agents, resp, json.loads(body))\nreturn resp, self._parse_resp(body)","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"48199ee70422adb8a8f9369ad69b84ffe8da06cb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FPrQ%3D","line":40,"in_reply_to":"AAAAWH%2F%2FP6o%3D","updated":"2014-03-19 06:14:09.000000000","message":"Its absent here and for other methods here too. Anyway, if use new adiditional validation, its still can be simplified.","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"264d3aab39fd1fe020c8e023a3f5d93ea8c13839","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FO8E%3D","line":40,"in_reply_to":"AAAAWH%2F%2FPA4%3D","updated":"2014-03-19 08:34:20.000000000","message":"Still no problems. Body of \u0027list_agents\u0027 method can be next:\n\nurl \u003d \u0027os-agents\u0027\nif params:\n    url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)\nresp, body \u003d self.get(url)\nif self._get_type() \u003d\u003d \"json\":\n    body \u003d json.loads(body)\n    self.validate_response(schema.list_agents, resp, body)\nreturn resp, self._parse_resp(body)","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"d7d8c04a6590898195cb8fc6f2cf59fa301c18ec","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FPA4%3D","line":40,"in_reply_to":"AAAAWH%2F%2FPKI%3D","updated":"2014-03-19 08:19:35.000000000","message":"Please see:\nhttps://review.openstack.org/#/c/80923/","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"66fcfdc00ff85d13601eec0e1d369e570ac55569","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FPKI%3D","line":40,"in_reply_to":"AAAAWH%2F%2FPrQ%3D","updated":"2014-03-19 07:52:15.000000000","message":"I\u0027ll implement a new additional validation soon.","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"82039c77759e436d4a4dbb538d53c0eb099473a1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FP6o%3D","line":40,"in_reply_to":"AAAAWH%2F%2FSi4%3D","updated":"2014-03-19 05:59:12.000000000","message":"@Valeriy\n\nNow we don\u0027t need self._parse_resp(body) for Nova API tests, because of inserting a response body validation code after this like:\n\n         body \u003d json.loads(body)\n+        self.validate_response(schema.list_agents, resp, body)\n         return resp, body[\u0027agents\u0027]","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"21a551d8c4d5d2171097a1ed8feb705c4904884f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BPLs%3D","line":40,"updated":"2014-03-28 07:14:13.000000000","message":"can you change it on \"return resp, json.loads(body)[\u0027agents\u0027]\" ?","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"37e1f1553af334cffa97efd6dc9966be3962a7cf","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9ykA%3D","line":40,"in_reply_to":"AAAAWH%2F%2BPJQ%3D","updated":"2014-04-02 06:08:33.000000000","message":"My point is that, line 39,40 can be combined together as in previous comment.","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"18049fd9be5202ed9e44eca890609df1264fa266","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":38,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":39,"context_line":"        body \u003d json.loads(body)"},{"line_number":40,"context_line":"        return resp, body[\u0027agents\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_agent(self, **kwargs):"},{"line_number":43,"context_line":"        \"\"\"Create an agent build.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BPJQ%3D","line":40,"in_reply_to":"AAAAWH%2F%2BPLs%3D","updated":"2014-03-28 07:20:20.000000000","message":"We have to check the attribute of body.\nFor details, please see \nhttps://review.openstack.org/#/c/80923","commit_id":"eea5b82b3253ec832154ced36a534e01d8fdd522"}],"tempest/services/compute/xml/agents_client.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"109bff6f578eed98f13a10a70ff03a86ff82af23","unresolved":false,"context_lines":[{"line_number":24,"context_line":"CONF \u003d config.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class AgentsClientXML(rest_client.RestClient):"},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    Tests Agents API"},{"line_number":30,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FSl4%3D","line":27,"updated":"2014-03-18 20:56:24.000000000","message":"If use here tempest/services/compute/json/agents_client.py for inheritance, then code for this module can be simplified.\n\nSee: https://github.com/openstack/tempest/blob/master/tempest/services/identity/xml/identity_client.py\n\nCan be left only \"create_agent\" and \"update_agent\" methods, all other can be inherited.\n\nimport of urllib, config, etree will be redundant here.","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"109bff6f578eed98f13a10a70ff03a86ff82af23","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        super(AgentsClientXML, self).__init__(auth_provider)"},{"line_number":36,"context_line":"        self.service \u003d CONF.compute.catalog_type"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _parse_array(self, node):"},{"line_number":39,"context_line":"        return [xml_to_json(x) for x in node]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def list_agents(self, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FSkQ%3D","line":38,"updated":"2014-03-18 20:56:24.000000000","message":"See comment above, itis already implemented in method \"_parse_resp\" of rest-client.","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"264d3aab39fd1fe020c8e023a3f5d93ea8c13839","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        super(AgentsClientXML, self).__init__(auth_provider)"},{"line_number":36,"context_line":"        self.service \u003d CONF.compute.catalog_type"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _parse_array(self, node):"},{"line_number":39,"context_line":"        return [xml_to_json(x) for x in node]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def list_agents(self, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FO%2BY%3D","line":38,"in_reply_to":"AAAAWH%2F%2FPMw%3D","updated":"2014-03-19 08:34:20.000000000","message":"See body of \u0027_parse_resp\u0027 method, it uses \u0027self.list_tags\u0027. Result shows that it was not used.","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"66fcfdc00ff85d13601eec0e1d369e570ac55569","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        super(AgentsClientXML, self).__init__(auth_provider)"},{"line_number":36,"context_line":"        self.service \u003d CONF.compute.catalog_type"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _parse_array(self, node):"},{"line_number":39,"context_line":"        return [xml_to_json(x) for x in node]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def list_agents(self, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FPMw%3D","line":38,"in_reply_to":"AAAAWH%2F%2FSkQ%3D","updated":"2014-03-19 07:52:15.000000000","message":"The result of the method \"_parse_resp\" of rest-client and this method is different like below:\n* _parse_array\n[\n    {\n        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx2\u0027, \n        \u0027hypervisor\u0027: \u0027kvm\u0027, \n        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f547\u0027, \n        \u0027version\u0027: \u00278.0\u0027, \n        \u0027architecture\u0027: \u0027x86\u0027, \n        \u0027os\u0027: \u0027win\u0027, \n        \u0027agent_id\u0027: \u002796\u0027\n    }, \n    {\n    \t\u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027, \n    \t\u0027hypervisor\u0027: \u0027xen\u0027, \n    \t\u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027, \n    \t\u0027version\u0027: \u00277.0\u0027, \n    \t\u0027architecture\u0027: \u0027x86\u0027, \n    \t\u0027os\u0027: \u0027linux\u0027, \n    \t\u0027agent_id\u0027: \u002797\u0027\n    }\n]\n\n* \"_parse_resp\" of rest-client\n{\n    \u0027agent\u0027: \n    {\n        \u0027url\u0027: \u0027xxx://xxxx/xxx/xxx1\u0027, \n        \u0027hypervisor\u0027: \u0027xen\u0027, \n        \u0027md5hash\u0027: \u0027add6bb58e139be103324d04d82d8f546\u0027, \n        \u0027version\u0027: \u00277.0\u0027, \n        \u0027architecture\u0027: \u0027x86\u0027, \n        \u0027os\u0027: \u0027linux\u0027, \n        \u0027agent_id\u0027: \u002797\u0027\n    }\n}","commit_id":"d42ff9cbd0c51d2642257fb51ca841aa98147847"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3736523b5cc1541efcbcd1f85996e69cf265ad6b","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common import rest_client"},{"line_number":19,"context_line":"from tempest import config"},{"line_number":20,"context_line":"from tempest.services.compute.xml import common"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BPS0%3D","line":20,"updated":"2014-03-28 06:48:35.000000000","message":"By commit I42a8338fd507c1224fa9fd2cdc5c1b0700f7a26a , xml common code is moved. So here should be\n\n from tempest.common import xml_utils as common","commit_id":"a297141fdb03aaa4af9b350bfa108f69ba894a0a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"8c824a7f53c7589875f58c8d7acd737e79c5e719","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common import rest_client"},{"line_number":19,"context_line":"from tempest import config"},{"line_number":20,"context_line":"from tempest.services.compute.xml import common"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BPRM%3D","line":20,"in_reply_to":"AAAAWH%2F%2BPS0%3D","updated":"2014-03-28 06:53:47.000000000","message":"Done","commit_id":"a297141fdb03aaa4af9b350bfa108f69ba894a0a"}]}
