)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"07d10dacff85d4b3e1ae0952cef0e4b1df36df74","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Service parameter is in the documentation as a filter but is not"},{"line_number":10,"context_line":"implemented. Only the zone parameter is working."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The document http://api.openstack.org/api-ref.html#ext-os-hosts"},{"line_number":13,"context_line":"claims that service also supported."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The fix was add service as filter when get hosts."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAATn%2F9APc%3D","line":12,"updated":"2013-12-17 20:02:25.000000000","message":"that link didn\u0027t work fo rme","commit_id":"b7a2c815d131e63417cd34db8e75b38c1c1b21f8"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"7db40d3d8241e93052015d11e27338d829fdfbb4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Service parameter is in the documentation as a filter but is not"},{"line_number":10,"context_line":"implemented. Only the zone parameter is working."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The document http://api.openstack.org/api-ref.html#ext-os-hosts"},{"line_number":13,"context_line":"claims that service also supported."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The fix was add service as filter when get hosts."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAATn%2F8ty0%3D","line":12,"in_reply_to":"AAAATn%2F9APc%3D","updated":"2013-12-21 13:36:04.000000000","message":"This patch has been lasted for two months and the document has been changed, I also cannot find that description for now.","commit_id":"b7a2c815d131e63417cd34db8e75b38c1c1b21f8"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"07d10dacff85d4b3e1ae0952cef0e4b1df36df74","unresolved":false,"context_lines":[{"line_number":10,"context_line":"implemented. Only the zone parameter is working."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The document http://api.openstack.org/api-ref.html#ext-os-hosts"},{"line_number":13,"context_line":"claims that service also supported."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The fix was add service as filter when get hosts."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAATn%2F9APM%3D","line":13,"updated":"2013-12-17 20:02:25.000000000","message":"I\u0027m inclined to say the bug is in the api-ref and not here. adding in a parameter without changing the API version will just lead to confusion IMHO, so I think this should be an extension in v2 and we can add into core in v3 (as v3 experimental)","commit_id":"b7a2c815d131e63417cd34db8e75b38c1c1b21f8"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"7db40d3d8241e93052015d11e27338d829fdfbb4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"implemented. Only the zone parameter is working."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The document http://api.openstack.org/api-ref.html#ext-os-hosts"},{"line_number":13,"context_line":"claims that service also supported."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The fix was add service as filter when get hosts."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAATn%2F8tyg%3D","line":13,"in_reply_to":"AAAATn%2F9APM%3D","updated":"2013-12-21 13:36:04.000000000","message":"If you take a look at this patch, you will see that I was adding v2 extension and core in v3. Will update the commit message","commit_id":"b7a2c815d131e63417cd34db8e75b38c1c1b21f8"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"53af2bcd6e0007bf03aea51f75b850ff36173a35","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jay Lau \u003cliugya@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-27 23:07:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add service as filter when get hosts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The fix was adding service as filter when get hosts for v3 API."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAT3%2F%2F4OE%3D","line":7,"updated":"2013-12-28 11:17:47.000000000","message":"How about:\n\nAdds service request parameter filter for V3 API os-hosts request","commit_id":"718bf44fe7571689decbd35b5d6e9fa51c499a79"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"5d83f8a94fb531ce0348874f70287d06c40d8885","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jay Lau \u003cliugya@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-27 23:07:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add service as filter when get hosts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The fix was adding service as filter when get hosts for v3 API."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAT3%2F%2F4Ms%3D","line":7,"in_reply_to":"AAAAT3%2F%2F4OE%3D","updated":"2013-12-28 13:32:30.000000000","message":"Done","commit_id":"718bf44fe7571689decbd35b5d6e9fa51c499a79"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"53af2bcd6e0007bf03aea51f75b850ff36173a35","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add service as filter when get hosts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The fix was adding service as filter when get hosts for v3 API."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Please refer to api.openstack.org/api-ref-compute.html and search"},{"line_number":12,"context_line":"\"os-hosts\", click \"detail\" for \"Lists all hosts.\""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAT3%2F%2F4N8%3D","line":9,"updated":"2013-12-28 11:17:47.000000000","message":"How about: \"Adds the ability to filter a hosts list request by service for the V3 API.\"","commit_id":"718bf44fe7571689decbd35b5d6e9fa51c499a79"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"5d83f8a94fb531ce0348874f70287d06c40d8885","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add service as filter when get hosts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The fix was adding service as filter when get hosts for v3 API."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Please refer to api.openstack.org/api-ref-compute.html and search"},{"line_number":12,"context_line":"\"os-hosts\", click \"detail\" for \"Lists all hosts.\""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAT3%2F%2F4Mo%3D","line":9,"in_reply_to":"AAAAT3%2F%2F4N8%3D","updated":"2013-12-28 13:32:30.000000000","message":"Done","commit_id":"718bf44fe7571689decbd35b5d6e9fa51c499a79"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"53af2bcd6e0007bf03aea51f75b850ff36173a35","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The fix was adding service as filter when get hosts for v3 API."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Please refer to api.openstack.org/api-ref-compute.html and search"},{"line_number":12,"context_line":"\"os-hosts\", click \"detail\" for \"Lists all hosts.\""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAT3%2F%2F4OA%3D","line":12,"updated":"2013-12-28 11:17:47.000000000","message":"I don\u0027t think we need this bit about the doco anymore as it just applies to the V3 API","commit_id":"718bf44fe7571689decbd35b5d6e9fa51c499a79"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"5d83f8a94fb531ce0348874f70287d06c40d8885","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The fix was adding service as filter when get hosts for v3 API."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Please refer to api.openstack.org/api-ref-compute.html and search"},{"line_number":12,"context_line":"\"os-hosts\", click \"detail\" for \"Lists all hosts.\""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAT3%2F%2F4Mk%3D","line":12,"in_reply_to":"AAAAT3%2F%2F4OA%3D","updated":"2013-12-28 13:32:30.000000000","message":"Done","commit_id":"718bf44fe7571689decbd35b5d6e9fa51c499a79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b6120104c0b077b18e474833bdb9a0b15e778b3a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds service request parameter filter for V3 API os-hosts request"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"DocImpact"},{"line_number":10,"context_line":"Adds the ability to filter a hosts list request by service for"},{"line_number":11,"context_line":"the V3 API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAAU3%2F%2F%2FkA%3D","line":9,"updated":"2014-02-22 20:05:35.000000000","message":"Is this for the doc writers to cleanup the v2 API os-hosts docs to remove the service filter support if this isn\u0027t going to be fixed in v2?  Seems that should be called out as I had to read through all of the previous comments from Joe to understand what\u0027s going on here, i.e. why is this a v3-only change; that\u0027s important information for the commit message.","commit_id":"a228337a93ec5528f84b0de78cb9ece54847119b"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"dc98ba4ca3634b4808e5baf7293d42b427565c00","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds service request parameter filter for V3 API os-hosts request"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"DocImpact"},{"line_number":10,"context_line":"Adds the ability to filter a hosts list request by service for"},{"line_number":11,"context_line":"the V3 API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAAU3%2F%2F%2FMQ%3D","line":9,"in_reply_to":"AAAAU3%2F%2F%2FkA%3D","updated":"2014-02-23 00:44:28.000000000","message":"@Matt, OK, will update commit message. Thanks.","commit_id":"a228337a93ec5528f84b0de78cb9ece54847119b"}],"nova/api/openstack/compute/contrib/extended_hosts.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2570a293a3957b75f85ad37a7565a9050baa8e4f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.api.openstack import extensions"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Extended_hosts(extensions.ExtensionDescriptor):"},{"line_number":21,"context_line":"    \"\"\"Extended hosts support.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7rg%3D","line":20,"updated":"2013-10-25 01:16:58.000000000","message":"This probably be in it\u0027s own patch and then the service filter patch should build on top of it.\n\nAlso, is this the best class name?  Seems odd unless it\u0027s just being consistent with other classes like this.  I would think it should be ExtendedHosts.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d65b064692d2d2fd226134530316db2bdd7d001","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.api.openstack import extensions"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Extended_hosts(extensions.ExtensionDescriptor):"},{"line_number":21,"context_line":"    \"\"\"Extended hosts support.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F6KM%3D","line":20,"in_reply_to":"AAAATn%2F%2F6%2Fc%3D","updated":"2013-10-25 12:18:20.000000000","message":"It might be considered a bug if the docs were listing functionality that was never there, but having a new class like this to fix the \u0027bug\u0027 should at least be in it\u0027s own dependent patch as I suggested.  I also think you should bring the question up in IRC as to whether this needs a blueprint or not.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"97de876955f9bc2aee8bcca2886bcc731d94987f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.api.openstack import extensions"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Extended_hosts(extensions.ExtensionDescriptor):"},{"line_number":21,"context_line":"    \"\"\"Extended hosts support.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F6%2Fc%3D","line":20,"in_reply_to":"AAAATn%2F%2F7rg%3D","updated":"2013-10-25 07:22:29.000000000","message":"Thanks Matt, What about treat this as a bug because it involved less LOC and also openstack document has claimed that we did support host as filter.\n\nAlso for class name, all extensions as using names in such fomat. Please take a look at https://github.com/openstack/nova/tree/master/nova/api/openstack/compute/contrib/extended_xxx.py as example. \n\n1) https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/contrib/extended_availability_zone.py#L60\n2) https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/contrib/extended_floating_ips.py#L20","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"37a67e1564c660c28ad363379b8ccff1ca785066","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"\"\"Extended hosts support.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""},{"line_number":24,"context_line":"    alias \u003d \"os-extended-hosts\""},{"line_number":25,"context_line":"    namespace \u003d (\"http://docs.openstack.org/compute/ext/\""},{"line_number":26,"context_line":"                \"extended_hosts/api/v1.1\")"},{"line_number":27,"context_line":"    updated \u003d \"2013-10-21T00:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F1fA%3D","line":24,"updated":"2013-10-28 08:44:35.000000000","message":"is this a appropriate name when we extend a extension? I mean would it be better to have a specific name than the generic one like, os-hosts-service or something?","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"1e36460130a50308a6c9d74729fb2c435e379105","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"\"\"Extended hosts support.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""},{"line_number":24,"context_line":"    alias \u003d \"os-extended-hosts\""},{"line_number":25,"context_line":"    namespace \u003d (\"http://docs.openstack.org/compute/ext/\""},{"line_number":26,"context_line":"                \"extended_hosts/api/v1.1\")"},{"line_number":27,"context_line":"    updated \u003d \"2013-10-21T00:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FxSQ%3D","line":24,"in_reply_to":"AAAATn%2F%2F1YU%3D","updated":"2013-10-29 10:23:15.000000000","message":"actually some doesn\u0027t, see https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/contrib/image_size.py#L80, the reason why I feel with the specific name might be appropriate here is because if we need to extend the host in future again, we can\u0027t name it os-extended-hosts again, right? but it is not a big deal I think.","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"236573e7ea5d5a03bff34a768913c49343ee22b6","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"\"\"Extended hosts support.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""},{"line_number":24,"context_line":"    alias \u003d \"os-extended-hosts\""},{"line_number":25,"context_line":"    namespace \u003d (\"http://docs.openstack.org/compute/ext/\""},{"line_number":26,"context_line":"                \"extended_hosts/api/v1.1\")"},{"line_number":27,"context_line":"    updated \u003d \"2013-10-21T00:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F1YU%3D","line":24,"in_reply_to":"AAAATn%2F%2F1fA%3D","updated":"2013-10-28 09:11:41.000000000","message":"I was following other files, seems most of the names are using os-extended-xxx for extended_xxxx.py.\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/contrib/extended_quotas.py#L25\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/contrib/extended_services.py#L8","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"b0bdc88787281e411fe89f9aa9316f20800029c5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""},{"line_number":24,"context_line":"    alias \u003d \"os-extended-hosts\""},{"line_number":25,"context_line":"    namespace \u003d (\"http://docs.openstack.org/compute/ext/\""},{"line_number":26,"context_line":"                \"extended_hosts/api/v1.1\")"},{"line_number":27,"context_line":"    updated \u003d \"2013-10-21T00:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F2xA%3D","line":26,"updated":"2013-10-27 02:42:03.000000000","message":"the version sould be v2, right?","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"37a67e1564c660c28ad363379b8ccff1ca785066","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""},{"line_number":24,"context_line":"    alias \u003d \"os-extended-hosts\""},{"line_number":25,"context_line":"    namespace \u003d (\"http://docs.openstack.org/compute/ext/\""},{"line_number":26,"context_line":"                \"extended_hosts/api/v1.1\")"},{"line_number":27,"context_line":"    updated \u003d \"2013-10-21T00:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F1gE%3D","line":26,"in_reply_to":"AAAATn%2F%2F2sQ%3D","updated":"2013-10-28 08:44:35.000000000","message":"ok, you are right, thanks.","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e44f4f7e205e9574e5929d95b7192ac72d0fa190","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    name \u003d \"ExtendedHosts\""},{"line_number":24,"context_line":"    alias \u003d \"os-extended-hosts\""},{"line_number":25,"context_line":"    namespace \u003d (\"http://docs.openstack.org/compute/ext/\""},{"line_number":26,"context_line":"                \"extended_hosts/api/v1.1\")"},{"line_number":27,"context_line":"    updated \u003d \"2013-10-21T00:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F2sQ%3D","line":26,"in_reply_to":"AAAATn%2F%2F2xA%3D","updated":"2013-10-27 06:23:31.000000000","message":"I think it should be v1.1 as hosts.py version is 1.1\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/contrib/hosts.py#L358","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"}],"nova/api/openstack/compute/contrib/hosts.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2570a293a3957b75f85ad37a7565a9050baa8e4f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        zone \u003d req.GET.get(\u0027zone\u0027, None)"},{"line_number":140,"context_line":"        if zone:"},{"line_number":141,"context_line":"            filters[\u0027availability_zone\u0027] \u003d zone"},{"line_number":142,"context_line":"        service \u003d req.GET.get(\u0027service\u0027, None)"},{"line_number":143,"context_line":"        if service:"},{"line_number":144,"context_line":"            filters[\u0027topic\u0027] \u003d service"},{"line_number":145,"context_line":"        services \u003d self.api.service_get_all(context, filters\u003dfilters,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7r0%3D","line":142,"updated":"2013-10-25 01:16:58.000000000","message":"Doing dict.get(key, None) is redundant, it will return None by default if the key isn\u0027t found.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"97de876955f9bc2aee8bcca2886bcc731d94987f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        zone \u003d req.GET.get(\u0027zone\u0027, None)"},{"line_number":140,"context_line":"        if zone:"},{"line_number":141,"context_line":"            filters[\u0027availability_zone\u0027] \u003d zone"},{"line_number":142,"context_line":"        service \u003d req.GET.get(\u0027service\u0027, None)"},{"line_number":143,"context_line":"        if service:"},{"line_number":144,"context_line":"            filters[\u0027topic\u0027] \u003d service"},{"line_number":145,"context_line":"        services \u003d self.api.service_get_all(context, filters\u003dfilters,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F6%2FU%3D","line":142,"in_reply_to":"AAAATn%2F%2F7r0%3D","updated":"2013-10-25 07:22:29.000000000","message":"Done","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3421da577a907a86cfc48891cc6a8a65ce7a5a3b","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class HostController(object):"},{"line_number":92,"context_line":"    \"\"\"The Hosts API controller for the OpenStack API.\"\"\""},{"line_number":93,"context_line":"    def __init__(self, ext_mgr\u003dNone, *args, **kwargs):"},{"line_number":94,"context_line":"        self.api \u003d compute.HostAPI()"},{"line_number":95,"context_line":"        super(HostController, self).__init__()"},{"line_number":96,"context_line":"        self.ext_mgr \u003d ext_mgr"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BjRs%3D","line":93,"updated":"2013-11-24 03:20:17.000000000","message":"Why need args and kwargs?","commit_id":"f09f755d8bcdd4addbcc63cffef53651242d6239"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"f3c543b499ba16ca191cf0e590d0ab9e4a9a7de5","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class HostController(object):"},{"line_number":92,"context_line":"    \"\"\"The Hosts API controller for the OpenStack API.\"\"\""},{"line_number":93,"context_line":"    def __init__(self, ext_mgr\u003dNone, *args, **kwargs):"},{"line_number":94,"context_line":"        self.api \u003d compute.HostAPI()"},{"line_number":95,"context_line":"        super(HostController, self).__init__()"},{"line_number":96,"context_line":"        self.ext_mgr \u003d ext_mgr"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BjP0%3D","line":93,"in_reply_to":"AAAATn%2F%2BjRs%3D","updated":"2013-11-24 04:37:26.000000000","message":"Done","commit_id":"f09f755d8bcdd4addbcc63cffef53651242d6239"}],"nova/api/openstack/compute/plugins/v3/hosts.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2570a293a3957b75f85ad37a7565a9050baa8e4f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        zone \u003d req.GET.get(\u0027zone\u0027, None)"},{"line_number":104,"context_line":"        if zone:"},{"line_number":105,"context_line":"            filters[\u0027availability_zone\u0027] \u003d zone"},{"line_number":106,"context_line":"        service \u003d req.GET.get(\u0027service\u0027, None)"},{"line_number":107,"context_line":"        if service:"},{"line_number":108,"context_line":"            filters[\u0027topic\u0027] \u003d service"},{"line_number":109,"context_line":"        services \u003d self.api.service_get_all(context, filters\u003dfilters,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7rw%3D","line":106,"updated":"2013-10-25 01:16:58.000000000","message":"Don\u0027t need to specify None here, it\u0027s already the default.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"97de876955f9bc2aee8bcca2886bcc731d94987f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        zone \u003d req.GET.get(\u0027zone\u0027, None)"},{"line_number":104,"context_line":"        if zone:"},{"line_number":105,"context_line":"            filters[\u0027availability_zone\u0027] \u003d zone"},{"line_number":106,"context_line":"        service \u003d req.GET.get(\u0027service\u0027, None)"},{"line_number":107,"context_line":"        if service:"},{"line_number":108,"context_line":"            filters[\u0027topic\u0027] \u003d service"},{"line_number":109,"context_line":"        services \u003d self.api.service_get_all(context, filters\u003dfilters,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F6%2FQ%3D","line":106,"in_reply_to":"AAAATn%2F%2F7rw%3D","updated":"2013-10-25 07:22:29.000000000","message":"Done","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"}],"nova/tests/api/openstack/compute/contrib/test_hosts.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"d712334240ed1e9608636bed48a33b1d82d8363b","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def test_list_hosts_with_service(self):"},{"line_number":179,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":180,"context_line":"        self.assertIn(\u0027hosts\u0027, result)"},{"line_number":181,"context_line":"        hosts \u003d result[\u0027hosts\u0027]"},{"line_number":182,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts)"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F6FQ%3D","line":180,"updated":"2013-10-25 12:36:59.000000000","message":"The assertIn is not needed: the lookup in the next line will fail if hosts is not in result.","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"d712334240ed1e9608636bed48a33b1d82d8363b","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":180,"context_line":"        self.assertIn(\u0027hosts\u0027, result)"},{"line_number":181,"context_line":"        hosts \u003d result[\u0027hosts\u0027]"},{"line_number":182,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_disable_host(self):"},{"line_number":185,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F6FI%3D","line":182,"updated":"2013-10-25 12:36:59.000000000","message":"in fact, you can just write\n\n self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, result[\u0027hosts\u0027])\n\nand have a perfectly clear test.","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"367d743262809a825871b31a7d88d7fcd35d7c34","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":180,"context_line":"        self.assertIn(\u0027hosts\u0027, result)"},{"line_number":181,"context_line":"        hosts \u003d result[\u0027hosts\u0027]"},{"line_number":182,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_disable_host(self):"},{"line_number":185,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F50Q%3D","line":182,"in_reply_to":"AAAATn%2F%2F5%2F0%3D","updated":"2013-10-25 13:24:32.000000000","message":"Done","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"30023e481ce51f315fe0e52a061f2af878b291c4","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":180,"context_line":"        self.assertIn(\u0027hosts\u0027, result)"},{"line_number":181,"context_line":"        hosts \u003d result[\u0027hosts\u0027]"},{"line_number":182,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_disable_host(self):"},{"line_number":185,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F5%2F0%3D","line":182,"in_reply_to":"AAAATn%2F%2F6CA%3D","updated":"2013-10-25 12:48:42.000000000","message":"It will, which will fail the test and signal that \u0027hosts\u0027 is not in result - precisely the same behaviour.","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce2bbca3c4615a074530307ddf49fe9c707f3903","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":180,"context_line":"        self.assertIn(\u0027hosts\u0027, result)"},{"line_number":181,"context_line":"        hosts \u003d result[\u0027hosts\u0027]"},{"line_number":182,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_disable_host(self):"},{"line_number":185,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F6CA%3D","line":182,"in_reply_to":"AAAATn%2F%2F6FI%3D","updated":"2013-10-25 12:39:38.000000000","message":"Wouldn\u0027t that result in a KeyError?  Should be safer to do result.get(\u0027hosts\u0027) here.","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"51ccd2da511a8e26bbfcb6d47480f04eb156e74b","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        self.ext_mgr.extensions[\u0027os-extended-hosts\u0027] \u003d True"},{"line_number":183,"context_line":"        self.controller \u003d os_hosts.HostController(self.ext_mgr)"},{"line_number":184,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":185,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, result[\u0027hosts\u0027])"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_disable_host(self):"},{"line_number":188,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FP9M%3D","line":185,"updated":"2013-11-12 09:18:29.000000000","message":"This doesn\u0027t seem to test that something that doesn\u0027t match the service is not included.","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"1ac0a6306f7e8efa7008b461844847b0c1792846","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        self.ext_mgr.extensions[\u0027os-extended-hosts\u0027] \u003d True"},{"line_number":183,"context_line":"        self.controller \u003d os_hosts.HostController(self.ext_mgr)"},{"line_number":184,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":185,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, result[\u0027hosts\u0027])"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_disable_host(self):"},{"line_number":188,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FPt0%3D","line":185,"in_reply_to":"AAAATn%2F%2FP9M%3D","updated":"2013-11-12 10:31:10.000000000","message":"Done","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"}],"nova/tests/api/openstack/compute/plugins/v3/test_hosts.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"51ccd2da511a8e26bbfcb6d47480f04eb156e74b","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_list_hosts_with_service(self):"},{"line_number":184,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":185,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, result[\u0027hosts\u0027])"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_disable_host(self):"},{"line_number":188,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FP9I%3D","line":185,"updated":"2013-11-12 09:18:29.000000000","message":"same test comment here","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"1ac0a6306f7e8efa7008b461844847b0c1792846","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_list_hosts_with_service(self):"},{"line_number":184,"context_line":"        result \u003d self.controller.index(FakeRequestWithNovaService())"},{"line_number":185,"context_line":"        self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, result[\u0027hosts\u0027])"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_disable_host(self):"},{"line_number":188,"context_line":"        self._test_host_update(\u0027host_c1\u0027, \u0027status\u0027, \u0027disable\u0027, \u0027disabled\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FPt4%3D","line":185,"in_reply_to":"AAAATn%2F%2FP9I%3D","updated":"2013-11-12 10:31:10.000000000","message":"Done","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"}],"nova/tests/integrated/test_api_samples.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2570a293a3957b75f85ad37a7565a9050baa8e4f","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    ctype \u003d \u0027xml\u0027"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"class ExtendedHostsJsonTest(ApiSampleTestBaseV2):"},{"line_number":388,"context_line":"    \"\"\""},{"line_number":389,"context_line":"    This extension is extending the functionalities of the"},{"line_number":390,"context_line":"    Hosts extension so the funcionalities introduced by this extension"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7q4%3D","line":387,"updated":"2013-10-25 01:16:58.000000000","message":"There should be a v3 version of this test.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"affbef12e4339a76f3ad097be026d717c479f9bf","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    ctype \u003d \u0027xml\u0027"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"class ExtendedHostsJsonTest(ApiSampleTestBaseV2):"},{"line_number":388,"context_line":"    \"\"\""},{"line_number":389,"context_line":"    This extension is extending the functionalities of the"},{"line_number":390,"context_line":"    Hosts extension so the funcionalities introduced by this extension"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F6GI%3D","line":387,"in_reply_to":"AAAATn%2F%2F6J4%3D","updated":"2013-10-25 12:25:20.000000000","message":"Nevermind, I dug around a bit in the API samples tests and it doesn\u0027t look like it\u0027s a 1:1 with all v2 tests for the v3 stuff, I\u0027ll admit I don\u0027t fully understand that, but you can ignore my comment for now.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d65b064692d2d2fd226134530316db2bdd7d001","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    ctype \u003d \u0027xml\u0027"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"class ExtendedHostsJsonTest(ApiSampleTestBaseV2):"},{"line_number":388,"context_line":"    \"\"\""},{"line_number":389,"context_line":"    This extension is extending the functionalities of the"},{"line_number":390,"context_line":"    Hosts extension so the funcionalities introduced by this extension"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F6J4%3D","line":387,"in_reply_to":"AAAATn%2F%2F7Aw%3D","updated":"2013-10-25 12:18:20.000000000","message":"Right....but you\u0027re adding code to the V3 API too, so there has to be similar test coverage for that.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"97de876955f9bc2aee8bcca2886bcc731d94987f","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    ctype \u003d \u0027xml\u0027"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"class ExtendedHostsJsonTest(ApiSampleTestBaseV2):"},{"line_number":388,"context_line":"    \"\"\""},{"line_number":389,"context_line":"    This extension is extending the functionalities of the"},{"line_number":390,"context_line":"    Hosts extension so the funcionalities introduced by this extension"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7Aw%3D","line":387,"in_reply_to":"AAAATn%2F%2F7q4%3D","updated":"2013-10-25 07:22:29.000000000","message":"The host extension is mainly for V2 to make sure that the change in V2 API can be detectable.","commit_id":"3ce71b7769adc5de6897ad7c384dff1c0068b4a1"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"d712334240ed1e9608636bed48a33b1d82d8363b","unresolved":false,"context_lines":[{"line_number":389,"context_line":"    This extension is extending the functionalities of the"},{"line_number":390,"context_line":"    Hosts extension so the funcionalities introduced by this extension"},{"line_number":391,"context_line":"    are tested in the HostsJsonTest and HostsXmlTest classes."},{"line_number":392,"context_line":"    \"\"\""},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    extension_name \u003d (\"nova.api.openstack.compute.contrib.\""},{"line_number":395,"context_line":"                      \"extended_hosts.Extended_hosts\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F6C4%3D","line":392,"updated":"2013-10-25 12:36:59.000000000","message":"Bad docstring: first line should be a self contained paragraph. Also you have typographical errors and the class names you give don\u0027t match the classes, and you are documenting two classes in one docstring.\n\nE.g.\n\n \"\"\"Test extended-hosts with JSON parameters.\"\"\"\n\nbut, test classes usually don\u0027t have docstrings - for instance the rest of the file doesn\u0027t seem to have them. I\u0027d just remove this problematic docstring and the one on the next class.","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"367d743262809a825871b31a7d88d7fcd35d7c34","unresolved":false,"context_lines":[{"line_number":389,"context_line":"    This extension is extending the functionalities of the"},{"line_number":390,"context_line":"    Hosts extension so the funcionalities introduced by this extension"},{"line_number":391,"context_line":"    are tested in the HostsJsonTest and HostsXmlTest classes."},{"line_number":392,"context_line":"    \"\"\""},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    extension_name \u003d (\"nova.api.openstack.compute.contrib.\""},{"line_number":395,"context_line":"                      \"extended_hosts.Extended_hosts\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F50k%3D","line":392,"in_reply_to":"AAAATn%2F%2F6C4%3D","updated":"2013-10-25 13:24:32.000000000","message":"Thanks lifeless. OK, I will remove the doc string.","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"d712334240ed1e9608636bed48a33b1d82d8363b","unresolved":false,"context_lines":[{"line_number":392,"context_line":"    \"\"\""},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    extension_name \u003d (\"nova.api.openstack.compute.contrib.\""},{"line_number":395,"context_line":"                      \"extended_hosts.Extended_hosts\")"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"class ExtendedHostsXmlTest(ExtendedHostsJsonTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F6DY%3D","line":395,"updated":"2013-10-25 12:36:59.000000000","message":"This may fit on one line if you wrap it:\n\n extension_name \u003d (\n     \u0027nova.api.openstack.compute.contrib.extended_hosts.Extended_hosts\u0027)\n\nOr it may not :)","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"367d743262809a825871b31a7d88d7fcd35d7c34","unresolved":false,"context_lines":[{"line_number":392,"context_line":"    \"\"\""},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    extension_name \u003d (\"nova.api.openstack.compute.contrib.\""},{"line_number":395,"context_line":"                      \"extended_hosts.Extended_hosts\")"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"class ExtendedHostsXmlTest(ExtendedHostsJsonTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F50g%3D","line":395,"in_reply_to":"AAAATn%2F%2F6DY%3D","updated":"2013-10-25 13:24:32.000000000","message":"Done","commit_id":"c1911baa946bbb2a8b12c35fafd74b73b0f5db05"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4c918511e62e245a6c6bb4da3a106e21ffcf6b95","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        self._verify_response(\u0027host-get-resp\u0027, subs, response, 200)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def test_hosts_list(self):"},{"line_number":381,"context_line":"        self.stubs.Set(extensions.ExtensionManager, \"is_loaded\","},{"line_number":382,"context_line":"                       self.fake_load)"},{"line_number":383,"context_line":"        response \u003d self._do_get(\u0027os-hosts\u0027)"},{"line_number":384,"context_line":"        subs \u003d self._get_regexes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FqHA%3D","line":381,"updated":"2013-10-30 18:46:47.000000000","message":"You could use extends_name (I know, I know) class attribute to load two extensions and you don\u0027t need to mock the is_loaded.\n\nAnd anyway - you should not be changing this test iiuc, since we added an extension - the basic behaviour should not change.","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"1ac0a6306f7e8efa7008b461844847b0c1792846","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        self._verify_response(\u0027host-get-resp\u0027, subs, response, 200)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def test_hosts_list(self):"},{"line_number":381,"context_line":"        self.stubs.Set(extensions.ExtensionManager, \"is_loaded\","},{"line_number":382,"context_line":"                       self.fake_load)"},{"line_number":383,"context_line":"        response \u003d self._do_get(\u0027os-hosts\u0027)"},{"line_number":384,"context_line":"        subs \u003d self._get_regexes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FPxA%3D","line":381,"in_reply_to":"AAAATn%2F%2FP2o%3D","updated":"2013-11-12 10:31:10.000000000","message":"Done","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"248bf9cc88d93254d0342de1dd04af4c842a7066","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        self._verify_response(\u0027host-get-resp\u0027, subs, response, 200)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def test_hosts_list(self):"},{"line_number":381,"context_line":"        self.stubs.Set(extensions.ExtensionManager, \"is_loaded\","},{"line_number":382,"context_line":"                       self.fake_load)"},{"line_number":383,"context_line":"        response \u003d self._do_get(\u0027os-hosts\u0027)"},{"line_number":384,"context_line":"        subs \u003d self._get_regexes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FP2o%3D","line":381,"in_reply_to":"AAAATn%2F%2Fopk%3D","updated":"2013-11-12 09:51:33.000000000","message":"So - my point is the following (I don\u0027t think we understood eachother):\n\nApiSampleTestBaseV2 class provides you with the tooling to load two extensions by just defining class attributes extension_name and extends_name.\n\nThese are horribly named - but are still preferred to be used over mocking is_loaded to return True always imho, as we want to keep tests as deterministic as possible.\n\nSo basically instead of stubbing - just do\n\n  extends_name \u003d \"nova.api.openstack.compute.contrib.extended_hosts\"\n\nOn line 350 - and I\u0027m cool with it. It really is not a big deal though.","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"1539797994c824ff173b6abd16805d96d7067559","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        self._verify_response(\u0027host-get-resp\u0027, subs, response, 200)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def test_hosts_list(self):"},{"line_number":381,"context_line":"        self.stubs.Set(extensions.ExtensionManager, \"is_loaded\","},{"line_number":382,"context_line":"                       self.fake_load)"},{"line_number":383,"context_line":"        response \u003d self._do_get(\u0027os-hosts\u0027)"},{"line_number":384,"context_line":"        subs \u003d self._get_regexes()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fopk%3D","line":381,"in_reply_to":"AAAATn%2F%2FqHA%3D","updated":"2013-10-31 05:28:42.000000000","message":"@Nikola, the reason that I add is_loaded is that I want hosts api to check if extension is loaded or not so as to make sure if the new filter service is supported or not.\n\nPlease take a look at https://review.openstack.org/#/c/52867/4/nova/api/openstack/compute/contrib/hosts.py line 143\n\nI think what I did here did not change the behavior. Can you please show me more comments why I changed the behavior?","commit_id":"32d9b85a3ed5f7fa5770020a5a4e0efc72e006d4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"45c507051044aa8ee5d8e1777213917fc3bf00df","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        self._verify_response(\u0027host-get-resp\u0027, subs, response, 200)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def test_hosts_list(self):"},{"line_number":378,"context_line":"        extends_name \u003d \"nova.api.openstack.compute.contrib.extended_hosts\""},{"line_number":379,"context_line":"        response \u003d self._do_get(\u0027os-hosts\u0027)"},{"line_number":380,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":381,"context_line":"        self._verify_response(\u0027hosts-list-resp\u0027, subs, response, 200)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Boh8%3D","line":378,"updated":"2013-11-22 07:54:15.000000000","message":"this looks like useless.","commit_id":"8ea66b000d525192e593fd61be2feebe3474818d"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"09379ef7a3400622c6c8caa6bc5b3c5d943c2823","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        self._verify_response(\u0027host-get-resp\u0027, subs, response, 200)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def test_hosts_list(self):"},{"line_number":378,"context_line":"        extends_name \u003d \"nova.api.openstack.compute.contrib.extended_hosts\""},{"line_number":379,"context_line":"        response \u003d self._do_get(\u0027os-hosts\u0027)"},{"line_number":380,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":381,"context_line":"        self._verify_response(\u0027hosts-list-resp\u0027, subs, response, 200)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BnvQ%3D","line":378,"in_reply_to":"AAAATn%2F%2Boh8%3D","updated":"2013-11-22 11:05:07.000000000","message":"Done","commit_id":"8ea66b000d525192e593fd61be2feebe3474818d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3421da577a907a86cfc48891cc6a8a65ce7a5a3b","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    def fake_load(self, *args):"},{"line_number":383,"context_line":"        return True"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def test_hosts_list_compute_service(self):"},{"line_number":386,"context_line":"        self.stubs.Set(extensions.ExtensionManager, \"is_loaded\","},{"line_number":387,"context_line":"                       self.fake_load)"},{"line_number":388,"context_line":"        response \u003d self._do_get(\u0027os-hosts?service\u003dcompute\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BjRc%3D","line":385,"updated":"2013-11-24 03:20:17.000000000","message":"Jay, this need put in ExtendedHostsJsonTest. And needn\u0027t the fake_load. You can reference ExtendedQuotas.","commit_id":"f09f755d8bcdd4addbcc63cffef53651242d6239"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"f3c543b499ba16ca191cf0e590d0ab9e4a9a7de5","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    def fake_load(self, *args):"},{"line_number":383,"context_line":"        return True"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def test_hosts_list_compute_service(self):"},{"line_number":386,"context_line":"        self.stubs.Set(extensions.ExtensionManager, \"is_loaded\","},{"line_number":387,"context_line":"                       self.fake_load)"},{"line_number":388,"context_line":"        response \u003d self._do_get(\u0027os-hosts?service\u003dcompute\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BjP4%3D","line":385,"in_reply_to":"AAAATn%2F%2BjRc%3D","updated":"2013-11-24 04:37:26.000000000","message":"Done","commit_id":"f09f755d8bcdd4addbcc63cffef53651242d6239"}],"nova/tests/integrated/v3/test_hosts.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"d2cb3c2d78c3999ffbe3d85180b9cb2fe070d3dc","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        response \u003d self._do_get(\u0027os-hosts?service\u003dcompute\u0027)"},{"line_number":55,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":56,"context_line":"        self._verify_response(\u0027hosts-list-compute-service-resp\u0027,"},{"line_number":57,"context_line":"                               subs, response, 200)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUX%2F%2BRyU%3D","line":57,"updated":"2014-02-22 16:23:20.000000000","message":"There doesn\u0027t seem to be any test that verifies that the filter does what it\u0027s supposed to do","commit_id":"a228337a93ec5528f84b0de78cb9ece54847119b"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"dc98ba4ca3634b4808e5baf7293d42b427565c00","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        response \u003d self._do_get(\u0027os-hosts?service\u003dcompute\u0027)"},{"line_number":55,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":56,"context_line":"        self._verify_response(\u0027hosts-list-compute-service-resp\u0027,"},{"line_number":57,"context_line":"                               subs, response, 200)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2FMU%3D","line":57,"in_reply_to":"AAAAU3%2F%2F%2F2I%3D","updated":"2014-02-23 00:44:28.000000000","message":"@Russell, nevermind, thanks for your help on reviewing this. ;-)","commit_id":"a228337a93ec5528f84b0de78cb9ece54847119b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"67a987dcfde825960a5cd1990cb8a8d210681fc1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        response \u003d self._do_get(\u0027os-hosts?service\u003dcompute\u0027)"},{"line_number":55,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":56,"context_line":"        self._verify_response(\u0027hosts-list-compute-service-resp\u0027,"},{"line_number":57,"context_line":"                               subs, response, 200)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2F%2F2I%3D","line":57,"in_reply_to":"AAAAUX%2F%2BRvM%3D","updated":"2014-02-22 18:10:39.000000000","message":"Oops, nevermind, I wasn\u0027t paying close enough attention on this one ... sorry.","commit_id":"a228337a93ec5528f84b0de78cb9ece54847119b"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"b2fdd350102c303f70a76c8f3a69986d5380967e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        response \u003d self._do_get(\u0027os-hosts?service\u003dcompute\u0027)"},{"line_number":55,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":56,"context_line":"        self._verify_response(\u0027hosts-list-compute-service-resp\u0027,"},{"line_number":57,"context_line":"                               subs, response, 200)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUX%2F%2BRvM%3D","line":57,"in_reply_to":"AAAAUX%2F%2BRyU%3D","updated":"2014-02-22 16:37:02.000000000","message":"@Russell, not quite catch your point. IMHO, \"os-hosts?service\u003dcompute\" is going to get a service with service name as compute and this is what the fix want to do, is there anything that i am missing? Thanks.","commit_id":"a228337a93ec5528f84b0de78cb9ece54847119b"}]}
