)]}'
{"tempest/api/compute/admin/test_hosts_negative.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"e03128afac538099e01e7f178bdee8a2cfeb74fb","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":64,"context_line":"    def test_update_host_with_non_admin_user(self):"},{"line_number":65,"context_line":"        if self._interface \u003d\u003d \u0027xml\u0027:"},{"line_number":66,"context_line":"            # The JSON request of Nova v2 update_host API is"},{"line_number":67,"context_line":"            #   {\u0027status\u0027: \u0027enable\u0027,"},{"line_number":68,"context_line":"            #    \u0027maintenance_mode\u0027: \u0027enable\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9w4M%3D","line":65,"updated":"2013-12-06 08:33:04.000000000","message":"Don\u0027t suggest skip these tests. The failure should be caused by the update_host function in xml client.","commit_id":"da64bf2e08d41b689a6b7f244e14ca3b3b6c5c8f"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"e8159dd567db616195b69e9612e30c7f21993395","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            # does not happen. The detail is HostUpdateDeserializer of"},{"line_number":77,"context_line":"            # Nova."},{"line_number":78,"context_line":"            raise self.skipException(\"BadRequest exception does not happen \""},{"line_number":79,"context_line":"                                     \"if xml request\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # only \u0027status\u0027 and \u0027maintenance_mode\u0027 are the valid params."},{"line_number":82,"context_line":"        hostname \u003d self._get_host_name()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9rQ4%3D","line":79,"updated":"2013-12-08 14:15:34.000000000","message":"I think this is a nova bug. We should keep consistence between xml and json.","commit_id":"e958a5e971e4b222e41b0ec97955f1cc45a1a1ee"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"1b88547c4907085e68919b99517a990c1bb738b8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            # does not happen. The detail is HostUpdateDeserializer of"},{"line_number":77,"context_line":"            # Nova."},{"line_number":78,"context_line":"            raise self.skipException(\"BadRequest exception does not happen \""},{"line_number":79,"context_line":"                                     \"if xml request\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # only \u0027status\u0027 and \u0027maintenance_mode\u0027 are the valid params."},{"line_number":82,"context_line":"        hostname \u003d self._get_host_name()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9kPo%3D","line":79,"in_reply_to":"AAAATn%2F9q4Y%3D","updated":"2013-12-10 06:38:11.000000000","message":"If it\u0027s only nova v2 api bug, it\u0027s ok, Thanks for your reply.","commit_id":"e958a5e971e4b222e41b0ec97955f1cc45a1a1ee"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5a24047ca4f6b9ac6025be20f9c2907c87fd0b03","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            # does not happen. The detail is HostUpdateDeserializer of"},{"line_number":77,"context_line":"            # Nova."},{"line_number":78,"context_line":"            raise self.skipException(\"BadRequest exception does not happen \""},{"line_number":79,"context_line":"                                     \"if xml request\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # only \u0027status\u0027 and \u0027maintenance_mode\u0027 are the valid params."},{"line_number":82,"context_line":"        hostname \u003d self._get_host_name()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9q4Y%3D","line":79,"in_reply_to":"AAAATn%2F9rQ4%3D","updated":"2013-12-08 23:45:07.000000000","message":"You are right, and this bug is Nova v2 API only. not Nova v3 API as you know well.\n\nI think it is difficult to fix this bug for Nova v2 API, because API would be changed and one purpose of Nova v3 API is for fixing this kind of bug.\n\nHow about adding the above description to here?\nWe could remove this skip easily for Nova v3 API tests.","commit_id":"e958a5e971e4b222e41b0ec97955f1cc45a1a1ee"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"91d4c5e65ffeb809ff7df665109079355ca700a0","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            # of Nova."},{"line_number":78,"context_line":"            # This behavior is fixed in Nova v3 API, so this skipException"},{"line_number":79,"context_line":"            # should be removed if Nova v3 API."},{"line_number":80,"context_line":"            raise self.skipException(\"BadRequest exception does not happen \""},{"line_number":81,"context_line":"                                     \"if xml request\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # only \u0027status\u0027 and \u0027maintenance_mode\u0027 are the valid params."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F9Haw%3D","line":80,"updated":"2013-12-16 17:02:32.000000000","message":"It sounds like a bug, which should have a bug number.","commit_id":"357659d7fc94e48c9f974b465f9e5bbb0b88811d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9a08e81325e1057be6ccf61353aef0ada37caaee","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            # of Nova."},{"line_number":78,"context_line":"            # This behavior is fixed in Nova v3 API, so this skipException"},{"line_number":79,"context_line":"            # should be removed if Nova v3 API."},{"line_number":80,"context_line":"            raise self.skipException(\"BadRequest exception does not happen \""},{"line_number":81,"context_line":"                                     \"if xml request\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # only \u0027status\u0027 and \u0027maintenance_mode\u0027 are the valid params."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F8%2Fs0%3D","line":80,"in_reply_to":"AAAATn%2F9Ah8%3D","updated":"2013-12-17 22:27:43.000000000","message":"I see, many people have the same opinions.\nI have changed my mind.\n\nI will post a bug report about this, and will add its bug number here.","commit_id":"357659d7fc94e48c9f974b465f9e5bbb0b88811d"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"093f1d3c2e0acb202021994e4d333fbd691e12e6","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            # of Nova."},{"line_number":78,"context_line":"            # This behavior is fixed in Nova v3 API, so this skipException"},{"line_number":79,"context_line":"            # should be removed if Nova v3 API."},{"line_number":80,"context_line":"            raise self.skipException(\"BadRequest exception does not happen \""},{"line_number":81,"context_line":"                                     \"if xml request\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # only \u0027status\u0027 and \u0027maintenance_mode\u0027 are the valid params."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F9Ah8%3D","line":80,"in_reply_to":"AAAATn%2F9FNc%3D","updated":"2013-12-17 18:59:44.000000000","message":"anyway I feel like a bug should be filled and marked as won\u0027t fix by nova team","commit_id":"357659d7fc94e48c9f974b465f9e5bbb0b88811d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea9ec12ca6c54927c3cf502a234a0b3bc371f130","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            # of Nova."},{"line_number":78,"context_line":"            # This behavior is fixed in Nova v3 API, so this skipException"},{"line_number":79,"context_line":"            # should be removed if Nova v3 API."},{"line_number":80,"context_line":"            raise self.skipException(\"BadRequest exception does not happen \""},{"line_number":81,"context_line":"                                     \"if xml request\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # only \u0027status\u0027 and \u0027maintenance_mode\u0027 are the valid params."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F9FNc%3D","line":80,"in_reply_to":"AAAATn%2F9Haw%3D","updated":"2013-12-16 23:45:51.000000000","message":"Through patchset11 discussion, this is not a bug for v2 API.\nPlease see Christopher\u0027s comment.\n\nAlso this behavior has been fixed in v3 API with I8a9ca6765f448f787fd69ff1cb0f8f9e6e315522 .","commit_id":"357659d7fc94e48c9f974b465f9e5bbb0b88811d"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8d36e30bb2a34a167c6acd5a86606953ea2d83f9","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":72,"context_line":"    def test_update_host_with_extra_param(self):"},{"line_number":73,"context_line":"        if self._interface \u003d\u003d \u0027xml\u0027:"},{"line_number":74,"context_line":"            # If sending xml request to Nova v2 API, Nova does not deserialize"},{"line_number":75,"context_line":"            # extra parameter and ignores it. As the result, this BadRequest"},{"line_number":76,"context_line":"            # exception does not happen. The detail is HostUpdateDeserializer"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F88%2FU%3D","line":73,"updated":"2013-12-18 12:56:48.000000000","message":"can we change the skipBug decorator to handle only skipping xml. This won\u0027t show up in our skip tracker, which is bad, as we won\u0027t realize there is an upstream bug we need to close.","commit_id":"bdf909cfdc8543c9c1d8bdedc4cb3d19c09478cf"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f118bbd4d5808ac39273cc3094eb2ceeb5664152","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":72,"context_line":"    def test_update_host_with_extra_param(self):"},{"line_number":73,"context_line":"        if self._interface \u003d\u003d \u0027xml\u0027:"},{"line_number":74,"context_line":"            # If sending xml request to Nova v2 API, Nova does not deserialize"},{"line_number":75,"context_line":"            # extra parameter and ignores it. As the result, this BadRequest"},{"line_number":76,"context_line":"            # exception does not happen. The detail is HostUpdateDeserializer"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F88QY%3D","line":73,"in_reply_to":"AAAATn%2F88%2FU%3D","updated":"2013-12-18 15:04:52.000000000","message":"Good point, I see.\n\nwill try it in the next patch.","commit_id":"bdf909cfdc8543c9c1d8bdedc4cb3d19c09478cf"}],"tempest/services/compute/xml/hosts_client.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"e03128afac538099e01e7f178bdee8a2cfeb74fb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"Update a host.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        request_body \u003d Element(status\u003dstatus,"},{"line_number":58,"context_line":"                               maintenance_mode\u003dmaintenance_mode)"},{"line_number":59,"context_line":"        if kwargs:"},{"line_number":60,"context_line":"            for k, v in kwargs.iteritem():"},{"line_number":61,"context_line":"                request_body.add_attr(k, v)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9w5Q%3D","line":58,"updated":"2013-12-06 08:33:04.000000000","message":"The xml data format should be:\n\u003cupdates\u003e\n    \u003cstatus\u003eenable\u003c/status\u003e\n    \u003cmaintenance_mode\u003edisable\u003c/maintenance_mode\u003e\n\u003c/updates\u003e\n\nrequest_body \u003d Element(\"updates\")\n\nrequest_body.append(Element(\"status\", status))\n\nrequest_body.append(Element(\"maintenance_mode\", maintenance_mode))","commit_id":"da64bf2e08d41b689a6b7f244e14ca3b3b6c5c8f"}],"tempest/test.py":[{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"b7085bdec06cc55a3a867c7856a208fc2c2cb0a2","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                if kwargs[\"interface\"] \u003d\u003d self._interface:"},{"line_number":122,"context_line":"                    skip \u003d True"},{"line_number":123,"context_line":"                else:"},{"line_number":124,"context_line":"                    skip \u003d False"},{"line_number":125,"context_line":"            if \"bug\" in kwargs and skip is True:"},{"line_number":126,"context_line":"                msg \u003d \"Skipped until Bug: %s is resolved.\" % kwargs[\"bug\"]"},{"line_number":127,"context_line":"                raise testtools.TestCase.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F85PY%3D","line":124,"updated":"2013-12-19 03:09:11.000000000","message":"What if the condition is False, but interface is True?","commit_id":"90aab4cb8c1c9eca7d2d261f05076eb918dd180b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"317290de9f4399edb9acca69d2cf43da673f27d3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                if kwargs[\"interface\"] \u003d\u003d self._interface:"},{"line_number":122,"context_line":"                    skip \u003d True"},{"line_number":123,"context_line":"                else:"},{"line_number":124,"context_line":"                    skip \u003d False"},{"line_number":125,"context_line":"            if \"bug\" in kwargs and skip is True:"},{"line_number":126,"context_line":"                msg \u003d \"Skipped until Bug: %s is resolved.\" % kwargs[\"bug\"]"},{"line_number":127,"context_line":"                raise testtools.TestCase.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F85LQ%3D","line":124,"in_reply_to":"AAAATn%2F85PY%3D","updated":"2013-12-19 03:31:46.000000000","message":"thanks for your review again, Ivan.\n\nGood point, will fix here in the next patch.","commit_id":"90aab4cb8c1c9eca7d2d261f05076eb918dd180b"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"25b3781151593eff3d44578c3e8a40e78e69d1d2","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            if \"condition\" in kwargs:"},{"line_number":120,"context_line":"                if kwargs[\"condition\"] is True:"},{"line_number":121,"context_line":"                    skip \u003d True"},{"line_number":122,"context_line":"            elif \"interface\" in kwargs:"},{"line_number":123,"context_line":"                if kwargs[\"interface\"] \u003d\u003d self._interface:"},{"line_number":124,"context_line":"                    skip \u003d True"},{"line_number":125,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F85BY%3D","line":122,"updated":"2013-12-19 05:00:55.000000000","message":"the interface will be ignored if condition in in kwargs, and it is True.\nhow about writing it like this:\nif \"condition\" not in kwargs or kwargs[\"condition\"] is True:\n     if \"interface\" not in kwargs or kwargs[\"interface\"]\u003d\u003dself._interface:\n             if \"bug\" in kwargs:\n                       skip.....\n\n\nActually I think the interface should be one element of conditions, if we can use it like the following will be better, but I havn\u0027t figured out how to implement it. The condition is calculated when the method is defined. So in the following case, the json tests will be skipped, and xml tests will also be skipped.\n\n@skip_because(bug\u003d\"1183436\",  condition\u003d(CONF.service_available.neutron and _interface\u003d\u003d\"json\"))\n\nThe current method, we can\u0027t cover the following case, but I think it\u0027s ok.\n@skip_because(bug\u003d\"1183436\",  condition\u003d(CONF.service_available.neutron or _interface\u003d\u003d\"json\"))\n\nthought?","commit_id":"a1aa44c4ca788105d08973ac20cacc1ac271ee9e"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"d832d1583926091815945982383c39eebf2347d9","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            if \"condition\" in kwargs:"},{"line_number":120,"context_line":"                if kwargs[\"condition\"] is True:"},{"line_number":121,"context_line":"                    skip \u003d True"},{"line_number":122,"context_line":"            elif \"interface\" in kwargs:"},{"line_number":123,"context_line":"                if kwargs[\"interface\"] \u003d\u003d self._interface:"},{"line_number":124,"context_line":"                    skip \u003d True"},{"line_number":125,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F83Eo%3D","line":122,"in_reply_to":"AAAATn%2F83Mc%3D","updated":"2013-12-19 13:46:06.000000000","message":"it\u0027s ok.","commit_id":"a1aa44c4ca788105d08973ac20cacc1ac271ee9e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3568826c1b2323bcf0a9f1586ec8c1a07cd8fdb1","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            if \"condition\" in kwargs:"},{"line_number":120,"context_line":"                if kwargs[\"condition\"] is True:"},{"line_number":121,"context_line":"                    skip \u003d True"},{"line_number":122,"context_line":"            elif \"interface\" in kwargs:"},{"line_number":123,"context_line":"                if kwargs[\"interface\"] \u003d\u003d self._interface:"},{"line_number":124,"context_line":"                    skip \u003d True"},{"line_number":125,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F83Mc%3D","line":122,"in_reply_to":"AAAATn%2F83fE%3D","updated":"2013-12-19 13:22:49.000000000","message":"\u003e @skip_because(bug\u003d\"1183436\", condition\u003dTrue, interface\u003d\"json\")\n\nThat is a point of my previous comment.\nI don\u0027t have how @skip_because() should work in the above case, because that is not current requirement.\n\nI don\u0027t have a strong opinion which (\"condition\" and \"interface\") -\u003e skip or (\"condition\" or \"interface\") -\u003e skip is better.\n\nand there is no use case for considering which is best.\nCurrent implementation is (\"condition\" or \"interface\") -\u003e skip, and it is because of readable code.\n\nis it enough to change the condition when we need to change it?","commit_id":"a1aa44c4ca788105d08973ac20cacc1ac271ee9e"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"e784466e0ec06d5d37497ee24bddbd9ce91f8cdf","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            if \"condition\" in kwargs:"},{"line_number":120,"context_line":"                if kwargs[\"condition\"] is True:"},{"line_number":121,"context_line":"                    skip \u003d True"},{"line_number":122,"context_line":"            elif \"interface\" in kwargs:"},{"line_number":123,"context_line":"                if kwargs[\"interface\"] \u003d\u003d self._interface:"},{"line_number":124,"context_line":"                    skip \u003d True"},{"line_number":125,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F83fE%3D","line":122,"in_reply_to":"AAAATn%2F84Sk%3D","updated":"2013-12-19 12:28:33.000000000","message":"OK, forget my requirement.\n\nbut how can you handle this case, in your code?\n\n@skip_because(bug\u003d\"1183436\", condition\u003dTrue, interface\u003d\"json\")\n\nIt will skip the json test, and xml test will **also be skipped**.\nIs it what we want?\n\nor we only permit one of them: condition or interface? it is enough to handle the issue in this patch.","commit_id":"a1aa44c4ca788105d08973ac20cacc1ac271ee9e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"94be6b282df1afbc9574beabeea43f50cbfcc82d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            if \"condition\" in kwargs:"},{"line_number":120,"context_line":"                if kwargs[\"condition\"] is True:"},{"line_number":121,"context_line":"                    skip \u003d True"},{"line_number":122,"context_line":"            elif \"interface\" in kwargs:"},{"line_number":123,"context_line":"                if kwargs[\"interface\"] \u003d\u003d self._interface:"},{"line_number":124,"context_line":"                    skip \u003d True"},{"line_number":125,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F84Sk%3D","line":122,"in_reply_to":"AAAATn%2F85BY%3D","updated":"2013-12-19 08:42:31.000000000","message":"I\u0027m not sure your idea is right. That seems a little overkill for current requirement().\nAlso the code is a little difficult to see because of many nests.\n\nthat is not so strong opinion, just feeling.","commit_id":"a1aa44c4ca788105d08973ac20cacc1ac271ee9e"}]}
