)]}'
{"tempest/api/compute/admin/test_availability_zone.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"c85e7bd19faa5b87e1bec1adeb963d4d60ed4880","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _key_hosts \u003d \u0027hosts\u0027"},{"line_number":29,"context_line":"    _key_zone_state \u003d \u0027zoneState\u0027"},{"line_number":30,"context_line":"    _key_zone_name \u003d \u0027zoneName\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2Fg6c%3D","line":28,"updated":"2014-03-05 16:59:03.000000000","message":"There\u0027s no need to use class attribute here.","commit_id":"ccb5896a412847cd1992bb7df5e7604b1dd64e2e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"6c0703f4978108ec3baec716e51759721a77cfb1","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _key_hosts \u003d \u0027hosts\u0027"},{"line_number":29,"context_line":"    _key_zone_state \u003d \u0027zoneState\u0027"},{"line_number":30,"context_line":"    _key_zone_name \u003d \u0027zoneName\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FZzY%3D","line":28,"in_reply_to":"AAAAVn%2F%2Fcw8%3D","updated":"2014-03-06 09:57:56.000000000","message":"Okay.","commit_id":"ccb5896a412847cd1992bb7df5e7604b1dd64e2e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"69fc9c93c3d005ce96ffcb6ae297863aedf1470a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _key_hosts \u003d \u0027hosts\u0027"},{"line_number":29,"context_line":"    _key_zone_state \u003d \u0027zoneState\u0027"},{"line_number":30,"context_line":"    _key_zone_name \u003d \u0027zoneName\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2Fcw8%3D","line":28,"in_reply_to":"AAAAVn%2F%2Fg6c%3D","updated":"2014-03-06 01:14:22.000000000","message":"@Jordan\n\nThanks for your review, your point would be right in many cases.\nHowever, I\u0027d like to add them as class attributes because of clarifying the difference of a response body between Nova v2 API and v3 API.\n\nThis patch adds not only v2 API tests but also v3 API tests. By using class attributes, we can know the differences easily just by seeing particular places. That means it is important that we can know the same attribute names also.","commit_id":"ccb5896a412847cd1992bb7df5e7604b1dd64e2e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"44cd0cb70e9281a29b252c56e90d67cdef8b7c4b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            # The best way is to fix it, but now xml format has been marked"},{"line_number":41,"context_line":"            # as \"deprecated\" in Nova API and xml client will be removed from"},{"line_number":42,"context_line":"            # Tempest. So now this test does not check attributes if xml."},{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        for az in availability_zones:"},{"line_number":46,"context_line":"            self.assertIn(self._key_hosts, az)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2Fa%2FU%3D","line":43,"updated":"2014-03-06 06:40:34.000000000","message":"I found the way how we should define the \u0027xmlns\u0027 attributes for XML. After that test will be pass.\n- XML has different \u0027xmlns\u0027 format for some of the attributes.\n- To get the exact format- Run the API with XML response and get the exact \u0027xmlns\u0027 format of the xml attributes.\n- Define those in XML class.","commit_id":"ccb5896a412847cd1992bb7df5e7604b1dd64e2e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"c85e7bd19faa5b87e1bec1adeb963d4d60ed4880","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        for az in availability_zones:"},{"line_number":46,"context_line":"            self.assertIn(self._key_hosts, az)"},{"line_number":47,"context_line":"            self.assertIn(self._key_zone_state, az)"},{"line_number":48,"context_line":"            self.assertIn(self._key_zone_name, az)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2Fg6E%3D","line":46,"updated":"2014-03-05 16:59:03.000000000","message":"Maybe use a for loop instead of 3 calls to assertIn.","commit_id":"ccb5896a412847cd1992bb7df5e7604b1dd64e2e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"6c0703f4978108ec3baec716e51759721a77cfb1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        for az in availability_zones:"},{"line_number":46,"context_line":"            self.assertIn(self._key_hosts, az)"},{"line_number":47,"context_line":"            self.assertIn(self._key_zone_state, az)"},{"line_number":48,"context_line":"            self.assertIn(self._key_zone_name, az)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2FZyg%3D","line":46,"in_reply_to":"AAAAVn%2F%2Fcvw%3D","updated":"2014-03-06 09:57:56.000000000","message":"I found it clearer and simpler to use something like :\n\nfor az in availability_zones:\n  for key in (self._key_hosts, self._key_zone_state, self._key_zone_name):\n      self.assertIn(key, az)\n\nPlus, if we want to check that other keys are also in the response, we just have to extend the list.","commit_id":"ccb5896a412847cd1992bb7df5e7604b1dd64e2e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"69fc9c93c3d005ce96ffcb6ae297863aedf1470a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        for az in availability_zones:"},{"line_number":46,"context_line":"            self.assertIn(self._key_hosts, az)"},{"line_number":47,"context_line":"            self.assertIn(self._key_zone_state, az)"},{"line_number":48,"context_line":"            self.assertIn(self._key_zone_name, az)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAVn%2F%2Fcvw%3D","line":46,"in_reply_to":"AAAAVn%2F%2Fg6E%3D","updated":"2014-03-06 01:14:22.000000000","message":"Sorry, I\u0027m not sure I understand your comment rightly.\nCould you give a sample code for it?","commit_id":"ccb5896a412847cd1992bb7df5e7604b1dd64e2e"}],"tempest/api_schema/compute/availability_zone.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"408cfe00e0b859536e43dc1bbc7c50b0bf70d45b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":20,"context_line":"        # NOTE: Here is for a hostname"},{"line_number":21,"context_line":"        \u0027^[a-zA-Z0-9-_.]{1,255}$\u0027: {"},{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BQCc%3D","line":21,"updated":"2014-03-28 04:28:37.000000000","message":"Do we need to check the string length?","commit_id":"a116773795f07b2a7e897a17307f62f8dbe1e4ad"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1ca3a4380532bb7e566d9122953ea8224d6d0288","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":20,"context_line":"        # NOTE: Here is for a hostname"},{"line_number":21,"context_line":"        \u0027^[a-zA-Z0-9-_.]{1,255}$\u0027: {"},{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BPY8%3D","line":21,"in_reply_to":"AAAAWH%2F%2BQCc%3D","updated":"2014-03-28 06:29:58.000000000","message":"Thanks for your review.\noh,  the string length check is unnecessary. I will remove this.","commit_id":"a116773795f07b2a7e897a17307f62f8dbe1e4ad"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"408cfe00e0b859536e43dc1bbc7c50b0bf70d45b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"},{"line_number":25,"context_line":"                \u0027^[a-zA-Z0-9-_.]{1,255}$\u0027: {"},{"line_number":26,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":27,"context_line":"                    \u0027properties\u0027: {"},{"line_number":28,"context_line":"                        \u0027available\u0027: {\u0027type\u0027: \u0027boolean\u0027},"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BQCY%3D","line":25,"updated":"2014-03-28 04:28:37.000000000","message":"ditto","commit_id":"a116773795f07b2a7e897a17307f62f8dbe1e4ad"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"a1d685101f65f239acae3d9bd0272b32b5f60a3c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":20,"context_line":"        # NOTE: Here is for a hostname"},{"line_number":21,"context_line":"        \u0027^[a-zA-Z0-9-_.]$\u0027: {"},{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F9c00%3D","line":21,"updated":"2014-04-04 12:44:41.000000000","message":"_ is not valid for hostname.","commit_id":"bdf2163963b38d675435da559531028525614521"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a092a7db68dc253bdb13fc365bd112507ec82cce","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":20,"context_line":"        # NOTE: Here is for a hostname"},{"line_number":21,"context_line":"        \u0027^[a-zA-Z0-9-_.]$\u0027: {"},{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F9VDQ%3D","line":21,"in_reply_to":"AAAAWH%2F9c00%3D","updated":"2014-04-07 00:30:43.000000000","message":"Yes, right.\n\nHowever users may use _ as the part of hostname in many cases, and the schema of Nova allows it with https://github.com/openstack/nova/blob/master/nova/api/validation/parameter_types.py#L26","commit_id":"bdf2163963b38d675435da559531028525614521"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"a1d685101f65f239acae3d9bd0272b32b5f60a3c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"},{"line_number":25,"context_line":"                \u0027^[a-zA-Z0-9-_.]$\u0027: {"},{"line_number":26,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":27,"context_line":"                    \u0027properties\u0027: {"},{"line_number":28,"context_line":"                        \u0027available\u0027: {\u0027type\u0027: \u0027boolean\u0027},"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F9c0g%3D","line":25,"updated":"2014-04-04 12:44:41.000000000","message":"What limits the services to not using any utf-8 string ?","commit_id":"bdf2163963b38d675435da559531028525614521"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a092a7db68dc253bdb13fc365bd112507ec82cce","unresolved":false,"context_lines":[{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"},{"line_number":25,"context_line":"                \u0027^[a-zA-Z0-9-_.]$\u0027: {"},{"line_number":26,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":27,"context_line":"                    \u0027properties\u0027: {"},{"line_number":28,"context_line":"                        \u0027available\u0027: {\u0027type\u0027: \u0027boolean\u0027},"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F9VDI%3D","line":25,"in_reply_to":"AAAAWH%2F9c0g%3D","updated":"2014-04-07 00:30:43.000000000","message":"Nice catch, thanks.\nI will fix it in the next patch.","commit_id":"bdf2163963b38d675435da559531028525614521"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1f288dd09bb969fb93ac50c95ca62b53d7e05c47","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":20,"context_line":"        # NOTE: Here is for a hostname"},{"line_number":21,"context_line":"        \u0027^[a-zA-Z0-9-_.]$\u0027: {"},{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWn%2F%2F8Vg%3D","line":21,"updated":"2014-04-08 11:05:24.000000000","message":"Same as https://review.openstack.org/#/c/80147/8/tempest/api_schema/compute/parameter_types.py","commit_id":"43813035059221f2c9c8c0c139c43e8f58b57fff"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1a0bb166bec9290b4f7da210e331020dd18dbe91","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027patternProperties\u0027: {"},{"line_number":20,"context_line":"        # NOTE: Here is for a hostname"},{"line_number":21,"context_line":"        \u0027^[a-zA-Z0-9-_.]$\u0027: {"},{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027patternProperties\u0027: {"},{"line_number":24,"context_line":"                # NOTE: Here is for a service name"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWn%2F%2F8HA%3D","line":21,"in_reply_to":"AAAAWn%2F%2F8Vg%3D","updated":"2014-04-08 11:37:07.000000000","message":"Nice catch, Thanks!","commit_id":"43813035059221f2c9c8c0c139c43e8f58b57fff"}],"tempest/api_schema/compute/v2/availability_zone.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93ed9d7300312fa5a1b40adc475e8c98160dc33d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"                        \u0027zoneState\u0027: {"},{"line_number":27,"context_line":"                            \u0027type\u0027: \u0027object\u0027,"},{"line_number":28,"context_line":"                            \u0027properties\u0027: {"},{"line_number":29,"context_line":"                                \u0027available\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":30,"context_line":"                            },"},{"line_number":31,"context_line":"                            \u0027required\u0027: [\u0027available\u0027]"},{"line_number":32,"context_line":"                        },"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2FRDU%3D","line":29,"updated":"2014-03-19 00:57:09.000000000","message":"nit- trailing comma present.","commit_id":"f6110b63952edb26930f3ec9b346d27aee5e4d07"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"6e0b21269f441c1e27abbfe19e9f3697760293d9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                        },"},{"line_number":33,"context_line":"                        # NOTE: If os-availability-zone/detail, the response"},{"line_number":34,"context_line":"                        # body includes \"hosts\" information."},{"line_number":35,"context_line":"                        \u0027hosts\u0027: {\u0027type\u0027: [\u0027null\u0027, \u0027object\u0027]}"},{"line_number":36,"context_line":"                    },"},{"line_number":37,"context_line":"                    \u0027required\u0027: [\u0027zoneName\u0027, \u0027zoneState\u0027, \u0027hosts\u0027]"},{"line_number":38,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2FXhE%3D","line":35,"updated":"2014-03-18 10:39:29.000000000","message":"so could we  define it just as null here. And then for the detail test initialize say get_availability_zone_detail to get_availability_zone_list then just make the additions required for the host detail information?","commit_id":"f6110b63952edb26930f3ec9b346d27aee5e4d07"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c11ede297500dd6adb01909fe1bfe814b2a83d1d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                        },"},{"line_number":33,"context_line":"                        # NOTE: If os-availability-zone/detail, the response"},{"line_number":34,"context_line":"                        # body includes \"hosts\" information."},{"line_number":35,"context_line":"                        \u0027hosts\u0027: {\u0027type\u0027: [\u0027null\u0027, \u0027object\u0027]}"},{"line_number":36,"context_line":"                    },"},{"line_number":37,"context_line":"                    \u0027required\u0027: [\u0027zoneName\u0027, \u0027zoneState\u0027, \u0027hosts\u0027]"},{"line_number":38,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2FRoQ%3D","line":35,"in_reply_to":"AAAAWH%2F%2FXhE%3D","updated":"2014-03-18 23:02:17.000000000","message":"Nice idea, will apply it. thanks!","commit_id":"f6110b63952edb26930f3ec9b346d27aee5e4d07"}],"tempest/api_schema/compute/v3/availability_zone.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93ed9d7300312fa5a1b40adc475e8c98160dc33d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"                        \u0027zone_state\u0027: {"},{"line_number":27,"context_line":"                            \u0027type\u0027: \u0027object\u0027,"},{"line_number":28,"context_line":"                            \u0027properties\u0027: {"},{"line_number":29,"context_line":"                                \u0027available\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":30,"context_line":"                            },"},{"line_number":31,"context_line":"                            \u0027required\u0027: [\u0027available\u0027]"},{"line_number":32,"context_line":"                        },"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2FRDk%3D","line":29,"updated":"2014-03-19 00:57:09.000000000","message":"nit- trailing comma present.","commit_id":"f6110b63952edb26930f3ec9b346d27aee5e4d07"}]}
