)]}'
{"tempest/api/volume/admin/test_volume_hosts.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"026c69c71b86e882f486604e957e8bd3944e9586","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class VolumeHostsTest(BaseVolumeTest):"},{"line_number":26,"context_line":"    _interface \u003d \"xml\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FEbA%3D","line":26,"updated":"2013-10-04 22:22:21.000000000","message":"this is also wrong I think","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"e428cc5390b8869dfb4fff34d9311d617b6b02da","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class VolumeHostsTest(BaseVolumeTest):"},{"line_number":26,"context_line":"    _interface \u003d \"xml\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2Fvmg%3D","line":26,"in_reply_to":"AAAAS3%2F%2FEbA%3D","updated":"2013-10-10 12:37:17.000000000","message":"Done","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ddc3d5b210910f9296155161a495dbe2b99f29bc","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":"        super(VolumeHostsTest, cls).setUpClass()"},{"line_number":31,"context_line":"        adm_user \u003d cls.config.identity.admin_username"},{"line_number":32,"context_line":"        adm_pass \u003d cls.config.identity.admin_password"},{"line_number":33,"context_line":"        adm_tenant \u003d cls.config.identity.admin_tenant_name"},{"line_number":34,"context_line":"        auth_url \u003d cls.config.identity.uri"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FEnI%3D","line":31,"updated":"2013-10-04 21:30:09.000000000","message":"No, you can\u0027t get admin credentials like this. If tenant isolation is used this won\u0027t use the right credentials. You need to pull them from the test class. (they are acquired in the super class)","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"e428cc5390b8869dfb4fff34d9311d617b6b02da","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":"        super(VolumeHostsTest, cls).setUpClass()"},{"line_number":31,"context_line":"        adm_user \u003d cls.config.identity.admin_username"},{"line_number":32,"context_line":"        adm_pass \u003d cls.config.identity.admin_password"},{"line_number":33,"context_line":"        adm_tenant \u003d cls.config.identity.admin_tenant_name"},{"line_number":34,"context_line":"        auth_url \u003d cls.config.identity.uri"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2Fvmc%3D","line":31,"in_reply_to":"AAAAS3%2F%2FEnI%3D","updated":"2013-10-10 12:37:17.000000000","message":"Done","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ddc3d5b210910f9296155161a495dbe2b99f29bc","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        auth_url \u003d cls.config.identity.uri"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        if cls._interface \u003d\u003d \"json\":"},{"line_number":37,"context_line":"            cls.client \u003d volume_hosts_client.VolumeHostsClientJSON(cls.config,"},{"line_number":38,"context_line":"                                                                   adm_user,"},{"line_number":39,"context_line":"                                                                   adm_pass,"},{"line_number":40,"context_line":"                                                                   auth_url,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FEm8%3D","line":37,"updated":"2013-10-04 21:30:09.000000000","message":"why are you doing this here? You alread did this with the other client definitions in tempest.clients. This actually solves your admin credentials issue above because you pull it in from manager (which has already instantiated the client with the proper credentials)","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"e428cc5390b8869dfb4fff34d9311d617b6b02da","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        auth_url \u003d cls.config.identity.uri"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        if cls._interface \u003d\u003d \"json\":"},{"line_number":37,"context_line":"            cls.client \u003d volume_hosts_client.VolumeHostsClientJSON(cls.config,"},{"line_number":38,"context_line":"                                                                   adm_user,"},{"line_number":39,"context_line":"                                                                   adm_pass,"},{"line_number":40,"context_line":"                                                                   auth_url,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FvmY%3D","line":37,"in_reply_to":"AAAAS3%2F%2FEm8%3D","updated":"2013-10-10 12:37:17.000000000","message":"Done","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ddc3d5b210910f9296155161a495dbe2b99f29bc","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                                         adm_tenant)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":50,"context_line":"    def test_list_hosts(self):"},{"line_number":51,"context_line":"        expected_services \u003d [\u0027cinder-scheduler\u0027, \u0027cinder-volume\u0027]"},{"line_number":52,"context_line":"        resp, hosts \u003d self.client.list_hosts()"},{"line_number":53,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FEmI%3D","line":50,"updated":"2013-10-04 21:30:09.000000000","message":"This name is misleading. You\u0027re really checking the services are listed properly not the hosts. I\u0027m also not sure that this is a safe test to do for the gate necessarily, I could see potential issues with a static list of services to say have to be running. I\u0027m not saying this won\u0027t work per say, but I have concerns about this in the future. \n\nYou should take a look at tempest.api.compute.admin.test_hosts to see what is being tested there.","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"e428cc5390b8869dfb4fff34d9311d617b6b02da","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                                         adm_tenant)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":50,"context_line":"    def test_list_hosts(self):"},{"line_number":51,"context_line":"        expected_services \u003d [\u0027cinder-scheduler\u0027, \u0027cinder-volume\u0027]"},{"line_number":52,"context_line":"        resp, hosts \u003d self.client.list_hosts()"},{"line_number":53,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2Fvks%3D","line":50,"in_reply_to":"AAAAS3%2F%2FEmI%3D","updated":"2013-10-10 12:37:17.000000000","message":"Hi Matthew, I have made changes according to the test case in compute admin hosts test, I would like to share the issue on remaining test cases of tempest.api.compute.admin.test_hosts.I have raised a bug on LP. https://bugs.launchpad.net/tempest/+bug/1230175\n\nCan you please look into it.","commit_id":"4cea2cc4b9a63045c633377e2171c0e12fd576ba"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"b302243d70df293b41cc69be9e6a52fed3333464","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def test_list_hosts(self):"},{"line_number":27,"context_line":"        resp, hosts \u003d self.hosts_client.list_hosts()"},{"line_number":28,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":29,"context_line":"        self.assertTrue(len(hosts) \u003e\u003d 2)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class VolumeHostsAdminTestsXML(VolumeHostsAdminTestsJSON):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FW%2F0%3D","line":29,"updated":"2013-10-17 08:54:54.000000000","message":"Please add the str(hosts) as 2th argument for providing a detailed info about a failure.","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"7538164e2670d06ea35644218658d63a3611a1e7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def test_list_hosts(self):"},{"line_number":27,"context_line":"        resp, hosts \u003d self.hosts_client.list_hosts()"},{"line_number":28,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":29,"context_line":"        self.assertTrue(len(hosts) \u003e\u003d 2)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class VolumeHostsAdminTestsXML(VolumeHostsAdminTestsJSON):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FR50%3D","line":29,"in_reply_to":"AAAATH%2F%2FW%2F0%3D","updated":"2013-10-18 14:06:39.000000000","message":"Done","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f4079d13b138d7609eb4f8eaae4f8285e6dc4a89","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        resp, hosts \u003d self.hosts_client.list_hosts()"},{"line_number":28,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":29,"context_line":"        self.assertTrue(len(hosts) \u003e\u003d 2, \"No. of hosts are \u003c 2,\""},{"line_number":30,"context_line":"                        \"response of list hosts is: % s\" % hosts)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class VolumeHostsAdminTestsXML(VolumeHostsAdminTestsJSON):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATH%2F%2FK68%3D","line":30,"updated":"2013-10-22 02:45:10.000000000","message":"I felt this 2 is a little difficult to understand.\n\nso how about adding the existence check for \"cinder-scheduler\" and \"cinder-volume\" after this?","commit_id":"9a91d996e392a317097570c93ff9c0f201e00964"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"d27c7298883b955596a553fa950912e489d37c62","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        resp, hosts \u003d self.hosts_client.list_hosts()"},{"line_number":28,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":29,"context_line":"        self.assertTrue(len(hosts) \u003e\u003d 2, \"No. of hosts are \u003c 2,\""},{"line_number":30,"context_line":"                        \"response of list hosts is: % s\" % hosts)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class VolumeHostsAdminTestsXML(VolumeHostsAdminTestsJSON):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATX%2F%2F%2B5I%3D","line":30,"in_reply_to":"AAAATH%2F%2FK68%3D","updated":"2013-10-23 10:17:56.000000000","message":"Hi Ken\u0027ichi Ohmichi,\n\nAccording to Matthew\u0027s comment in Patch Set 2, I have removed check for \"static list of services\"\n\n\"Matthew Treinish\t\tOct 5\n\nThis name is misleading. You\u0027re really checking the services are listed properly not the hosts. I\u0027m also not sure that this is a safe test to do for the gate necessarily, I could see potential issues with a static list of services to say have to be running. I\u0027m not saying this won\u0027t work per say, but I have concerns about this in the future.\n\nYou should take a look at tempest.api.compute.admin.test_hosts to see what is being tested there.\"\n\nPlease let me know on how to proceed\n\n-Harika","commit_id":"9a91d996e392a317097570c93ff9c0f201e00964"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"1f275066cc7173018956f993313875dfabe19ddb","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        resp, hosts \u003d self.hosts_client.list_hosts()"},{"line_number":28,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":29,"context_line":"        self.assertTrue(len(hosts) \u003e\u003d 2, \"No. of hosts are \u003c 2,\""},{"line_number":30,"context_line":"                        \"response of list hosts is: % s\" % hosts)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class VolumeHostsAdminTestsXML(VolumeHostsAdminTestsJSON):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FquI%3D","line":30,"in_reply_to":"AAAATX%2F%2F%2B5I%3D","updated":"2013-10-30 16:47:57.000000000","message":"I agree with Matthew the name is somehow misleading but the endpoint is actually called \"os-hosts\" so it is coherent with the API and it is also consistent with the naming choice in compute.admin.test_hosts ; I\u0027m +2","commit_id":"9a91d996e392a317097570c93ff9c0f201e00964"}],"tempest/services/volume/json/admin/volume_hosts_client.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"879d8d97164e905beaf9a68a30f7309a0a9046f8","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VolumeHostsClientJSON(RestClient):"},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    Client class to send CRUD Volume Types API requests to a Cinder endpoint"},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, config, username, password, auth_url, tenant_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FW04%3D","line":26,"updated":"2013-10-17 09:48:04.000000000","message":"this isn\u0027t the volume types client","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"7538164e2670d06ea35644218658d63a3611a1e7","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VolumeHostsClientJSON(RestClient):"},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    Client class to send CRUD Volume Types API requests to a Cinder endpoint"},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, config, username, password, auth_url, tenant_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FR5o%3D","line":26,"in_reply_to":"AAAATH%2F%2FW04%3D","updated":"2013-10-18 14:06:39.000000000","message":"Done","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"}],"tempest/services/volume/xml/admin/volume_hosts_client.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"879d8d97164e905beaf9a68a30f7309a0a9046f8","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class VolumeHostsClientXML(RestClientXML):"},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":"    Client class to send CRUD Volume Types API requests to a Cinder endpoint"},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, config, username, password, auth_url, tenant_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FX4o%3D","line":28,"updated":"2013-10-17 09:48:04.000000000","message":"I think this comes from volume_types_client and should be updated","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"7538164e2670d06ea35644218658d63a3611a1e7","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class VolumeHostsClientXML(RestClientXML):"},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":"    Client class to send CRUD Volume Types API requests to a Cinder endpoint"},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, config, username, password, auth_url, tenant_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FR5c%3D","line":28,"in_reply_to":"AAAATH%2F%2FX4o%3D","updated":"2013-10-18 14:06:39.000000000","message":"Done","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"879d8d97164e905beaf9a68a30f7309a0a9046f8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def _parse_array(self, node):"},{"line_number":39,"context_line":"        array \u003d []"},{"line_number":40,"context_line":"        for child in node.getchildren():"},{"line_number":41,"context_line":"            tag_list \u003d child.tag.split(\u0027}\u0027, 1)"},{"line_number":42,"context_line":"            if tag_list[0] \u003d\u003d \"host\":"},{"line_number":43,"context_line":"                array.append(xml_to_json(child))"},{"line_number":44,"context_line":"        return array"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FW08%3D","line":41,"updated":"2013-10-17 09:48:04.000000000","message":"to me this is a bit unclear, I think it\u0027d be nice to have a comment with a sample string returned so one knows what the parse function is doing","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"7538164e2670d06ea35644218658d63a3611a1e7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def _parse_array(self, node):"},{"line_number":39,"context_line":"        array \u003d []"},{"line_number":40,"context_line":"        for child in node.getchildren():"},{"line_number":41,"context_line":"            tag_list \u003d child.tag.split(\u0027}\u0027, 1)"},{"line_number":42,"context_line":"            if tag_list[0] \u003d\u003d \"host\":"},{"line_number":43,"context_line":"                array.append(xml_to_json(child))"},{"line_number":44,"context_line":"        return array"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FR5Y%3D","line":41,"in_reply_to":"AAAATH%2F%2FW08%3D","updated":"2013-10-18 14:06:39.000000000","message":"Done","commit_id":"6aa44ba6361fc3ba14e206184581db3f912f297a"}]}
