)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"fb0f76837f282afa3066e411aa86a83a21db5b28","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OS::Neutron::NetDHCPAgent for neutron/net.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This resourse supports part of"},{"line_number":10,"context_line":"\"agent management and scheduler extensions\" in Neutron."},{"line_number":11,"context_line":"It associates network with dhcp-agent."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F9mSM%3D","line":9,"updated":"2013-12-09 20:20:41.000000000","message":"misspelled \"resource\". Also this is wrapped very strangely, it should be wrapped at 72 chars.\n\nif using vim for your git editor you already have the settings so just do:\n\n- put cursor on any word in the paragraph\n- type \u0027gq\u0027 and press any arrow. This will wrap your text at 72 chars","commit_id":"e60a03e01530921073e5c562e962ea672ab1582e"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"38e27a18d571e95a8f0e7b8a27a1d865b7e4f93e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OS::Neutron::NetDHCPAgent for neutron/net.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This resourse supports part of"},{"line_number":10,"context_line":"\"agent management and scheduler extensions\" in Neutron."},{"line_number":11,"context_line":"It associates network with dhcp-agent."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F9k8s%3D","line":9,"in_reply_to":"AAAATn%2F9mSM%3D","updated":"2013-12-10 02:03:40.000000000","message":"I\u0027ll try vim function. I treat \"agent management and scheduler extensions\" as a word.","commit_id":"e60a03e01530921073e5c562e962ea672ab1582e"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"a8cd12aa6964f58d21fecc1cdf3fbd13be2df447","unresolved":false,"context_lines":[{"line_number":12,"context_line":"I think, it may be needed by administrators who want to decide agents to"},{"line_number":13,"context_line":"work. (e.g. to use HA functionality)"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fixes bug #1245366"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I3dc663c4c51824bd3e69c74ff1d9b50a8ce598c9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F9kxc%3D","line":15,"updated":"2013-12-10 02:59:49.000000000","message":"Now encourage using Closes-Bug: #1245366","commit_id":"19ef496f2f4423dc797efdaec94f01ac34648632"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"c3a2adb2433d9e09a28a7ff5ebc9d59a4cc2dbe1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"I think, it may be needed by administrators who want to decide agents to"},{"line_number":13,"context_line":"work. (e.g. to use HA functionality)"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fixes bug #1245366"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I3dc663c4c51824bd3e69c74ff1d9b50a8ce598c9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F9kfs%3D","line":15,"in_reply_to":"AAAATn%2F9kxc%3D","updated":"2013-12-10 05:04:15.000000000","message":"Thank you, I will fix it.","commit_id":"19ef496f2f4423dc797efdaec94f01ac34648632"}],"heat/engine/resources/neutron/net.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"696af6856916b79ed69822fd8d2679764d0072fb","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            raise ex"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"class NetDhcpAgent(neutron.NeutronResource):"},{"line_number":120,"context_line":"    properties_schema \u003d {"},{"line_number":121,"context_line":"        \u0027network_id\u0027: {"},{"line_number":122,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F96yw%3D","line":119,"updated":"2013-12-04 14:06:10.000000000","message":"I would use the name \"NetDHCPAgent\", here and in the type name.","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"930c99729f9130f25ed30e328800b81b900b1d55","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            raise ex"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"class NetDhcpAgent(neutron.NeutronResource):"},{"line_number":120,"context_line":"    properties_schema \u003d {"},{"line_number":121,"context_line":"        \u0027network_id\u0027: {"},{"line_number":122,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F93ko%3D","line":119,"in_reply_to":"AAAATn%2F96yw%3D","updated":"2013-12-05 02:29:56.000000000","message":"Done","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"696af6856916b79ed69822fd8d2679764d0072fb","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the network you want to be scheduled \u0027"},{"line_number":125,"context_line":"                             \u0027by the dhcp_agent. Note that the default policy \u0027"},{"line_number":126,"context_line":"                             \u0027setting restricts usage of this attribute to \u0027"},{"line_number":127,"context_line":"                             \u0027administrative users only.\u0027),"},{"line_number":128,"context_line":"        },"},{"line_number":129,"context_line":"        \u0027dhcp_agent_id\u0027: {"},{"line_number":130,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F96yg%3D","line":127,"updated":"2013-12-04 14:06:10.000000000","message":"It feels a bit weird to refer to attributes in a property. Is it relevant here?","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"930c99729f9130f25ed30e328800b81b900b1d55","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the network you want to be scheduled \u0027"},{"line_number":125,"context_line":"                             \u0027by the dhcp_agent. Note that the default policy \u0027"},{"line_number":126,"context_line":"                             \u0027setting restricts usage of this attribute to \u0027"},{"line_number":127,"context_line":"                             \u0027administrative users only.\u0027),"},{"line_number":128,"context_line":"        },"},{"line_number":129,"context_line":"        \u0027dhcp_agent_id\u0027: {"},{"line_number":130,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F93kk%3D","line":127,"in_reply_to":"AAAATn%2F96yg%3D","updated":"2013-12-05 02:29:56.000000000","message":"I will change a word in Description (attribute -\u003e property).\n\nIf I misunderstood, please comment again.","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"65b8642c0eedc66e6b661fa27aab2b7305ade18a","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def handle_create(self):"},{"line_number":140,"context_line":"        network_id \u003d self.properties.get(\u0027network_id\u0027)"},{"line_number":141,"context_line":"        dhcp_agent_id \u003d self.properties.get(\u0027dhcp_agent_id\u0027)"},{"line_number":142,"context_line":"        self.neutron().add_network_to_dhcp_agent("},{"line_number":143,"context_line":"            dhcp_agent_id, {\u0027network_id\u0027: network_id})"},{"line_number":144,"context_line":"        self.resource_id_set(\u0027%s:%s\u0027 % (network_id, dhcp_agent_id))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F96kw%3D","line":141,"updated":"2013-12-04 14:49:15.000000000","message":"You don\u0027t have to use get here, just access the properties directly.","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"930c99729f9130f25ed30e328800b81b900b1d55","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def handle_create(self):"},{"line_number":140,"context_line":"        network_id \u003d self.properties.get(\u0027network_id\u0027)"},{"line_number":141,"context_line":"        dhcp_agent_id \u003d self.properties.get(\u0027dhcp_agent_id\u0027)"},{"line_number":142,"context_line":"        self.neutron().add_network_to_dhcp_agent("},{"line_number":143,"context_line":"            dhcp_agent_id, {\u0027network_id\u0027: network_id})"},{"line_number":144,"context_line":"        self.resource_id_set(\u0027%s:%s\u0027 % (network_id, dhcp_agent_id))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F93kg%3D","line":141,"in_reply_to":"AAAATn%2F96kw%3D","updated":"2013-12-05 02:29:56.000000000","message":"Done","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"696af6856916b79ed69822fd8d2679764d0072fb","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        if not self.resource_id:"},{"line_number":148,"context_line":"            return"},{"line_number":149,"context_line":"        client \u003d self.neutron()"},{"line_number":150,"context_line":"        (network_id, dhcp_agent_id) \u003d self.resource_id.split(\u0027:\u0027)"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            client.remove_network_from_dhcp_agent("},{"line_number":153,"context_line":"                dhcp_agent_id, network_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F96yI%3D","line":150,"updated":"2013-12-04 14:06:10.000000000","message":"You can remove the parenthesis:\n\nnetwork_id, dhcp_agent_id \u003d self.resource_id.split(\u0027:\u0027)","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"930c99729f9130f25ed30e328800b81b900b1d55","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        if not self.resource_id:"},{"line_number":148,"context_line":"            return"},{"line_number":149,"context_line":"        client \u003d self.neutron()"},{"line_number":150,"context_line":"        (network_id, dhcp_agent_id) \u003d self.resource_id.split(\u0027:\u0027)"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            client.remove_network_from_dhcp_agent("},{"line_number":153,"context_line":"                dhcp_agent_id, network_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F93kc%3D","line":150,"in_reply_to":"AAAATn%2F96yI%3D","updated":"2013-12-05 02:29:56.000000000","message":"Done","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"7e07e95d0cd878274434c27e62a4bcb9041d2fd8","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the network you want to be scheduled \u0027"},{"line_number":125,"context_line":"                             \u0027by the dhcp_agent. Note that the default policy \u0027"},{"line_number":126,"context_line":"                             \u0027setting restricts usage of this property to \u0027"},{"line_number":127,"context_line":"                             \u0027administrative users only.\u0027),"},{"line_number":128,"context_line":"        },"},{"line_number":129,"context_line":"        \u0027dhcp_agent_id\u0027: {"},{"line_number":130,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9sms%3D","line":127,"updated":"2013-12-07 05:07:14.000000000","message":"I think we should qualify \"the default policy setting\", so it should be \"the default policy setting in Neutron\". Heat isn\u0027t going to restrict this resource\u0027s property to administrative users.","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"63fab87035e6d2967ec9c51b0457c343aafa4468","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the network you want to be scheduled \u0027"},{"line_number":125,"context_line":"                             \u0027by the dhcp_agent. Note that the default policy \u0027"},{"line_number":126,"context_line":"                             \u0027setting restricts usage of this property to \u0027"},{"line_number":127,"context_line":"                             \u0027administrative users only.\u0027),"},{"line_number":128,"context_line":"        },"},{"line_number":129,"context_line":"        \u0027dhcp_agent_id\u0027: {"},{"line_number":130,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9qgY%3D","line":127,"in_reply_to":"AAAATn%2F9sms%3D","updated":"2013-12-09 04:05:58.000000000","message":"Done","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"7e07e95d0cd878274434c27e62a4bcb9041d2fd8","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the dhcp-agent to schedule \u0027"},{"line_number":133,"context_line":"                             \u0027the network. Note that the default policy \u0027"},{"line_number":134,"context_line":"                             \u0027setting restricts usage of this property to \u0027"},{"line_number":135,"context_line":"                             \u0027administrative users only.\u0027),"},{"line_number":136,"context_line":"        }"},{"line_number":137,"context_line":"    }"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9smo%3D","line":135,"updated":"2013-12-07 05:07:14.000000000","message":"same for this one.","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"63fab87035e6d2967ec9c51b0457c343aafa4468","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the dhcp-agent to schedule \u0027"},{"line_number":133,"context_line":"                             \u0027the network. Note that the default policy \u0027"},{"line_number":134,"context_line":"                             \u0027setting restricts usage of this property to \u0027"},{"line_number":135,"context_line":"                             \u0027administrative users only.\u0027),"},{"line_number":136,"context_line":"        }"},{"line_number":137,"context_line":"    }"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9qgU%3D","line":135,"in_reply_to":"AAAATn%2F9smo%3D","updated":"2013-12-09 04:05:58.000000000","message":"Done","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bc0ca99901c8117912f5d4a643bdf235eade93d0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        dhcp_agent_id \u003d self.properties[\u0027dhcp_agent_id\u0027]"},{"line_number":142,"context_line":"        self.neutron().add_network_to_dhcp_agent("},{"line_number":143,"context_line":"            dhcp_agent_id, {\u0027network_id\u0027: network_id})"},{"line_number":144,"context_line":"        self.resource_id_set(\u0027%s:%s\u0027 % (network_id, dhcp_agent_id))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def handle_delete(self):"},{"line_number":147,"context_line":"        if not self.resource_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9paw%3D","line":144,"updated":"2013-12-09 10:46:46.000000000","message":"It would be better to avoid such string formatting.\nPlease use \u0027%(key)s\u0027 % {\u0027key\u0027: \u0027value\u0027}","commit_id":"809136d5731ac2fc11c155cb1db26ff5d286e4cf"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"2b6df08b22f3123b6af6d6ac05e63a626c4cab97","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        dhcp_agent_id \u003d self.properties[\u0027dhcp_agent_id\u0027]"},{"line_number":142,"context_line":"        self.neutron().add_network_to_dhcp_agent("},{"line_number":143,"context_line":"            dhcp_agent_id, {\u0027network_id\u0027: network_id})"},{"line_number":144,"context_line":"        self.resource_id_set(\u0027%s:%s\u0027 % (network_id, dhcp_agent_id))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def handle_delete(self):"},{"line_number":147,"context_line":"        if not self.resource_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9ov4%3D","line":144,"in_reply_to":"AAAATn%2F9pBQ%3D","updated":"2013-12-09 13:28:00.000000000","message":"I somewhat disagree with that (don\u0027t change it again though). It doesn\u0027t improve readability IMHO. If anything, switch to \"\".format().","commit_id":"809136d5731ac2fc11c155cb1db26ff5d286e4cf"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"a69d9cdecbc7f53f85d3f05a09ce3dfd421630aa","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        dhcp_agent_id \u003d self.properties[\u0027dhcp_agent_id\u0027]"},{"line_number":142,"context_line":"        self.neutron().add_network_to_dhcp_agent("},{"line_number":143,"context_line":"            dhcp_agent_id, {\u0027network_id\u0027: network_id})"},{"line_number":144,"context_line":"        self.resource_id_set(\u0027%s:%s\u0027 % (network_id, dhcp_agent_id))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def handle_delete(self):"},{"line_number":147,"context_line":"        if not self.resource_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9pBQ%3D","line":144,"in_reply_to":"AAAATn%2F9paw%3D","updated":"2013-12-09 12:26:15.000000000","message":"Thank you for comments.\n\nI will do it.","commit_id":"809136d5731ac2fc11c155cb1db26ff5d286e4cf"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"fb0f76837f282afa3066e411aa86a83a21db5b28","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the network you want to be scheduled \u0027"},{"line_number":125,"context_line":"                             \u0027by the dhcp_agent. Note that the default policy \u0027"},{"line_number":126,"context_line":"                             \u0027setting in Neutron restricts usage of \u0027"},{"line_number":127,"context_line":"                             \u0027this property to administrative users only.\u0027),"},{"line_number":128,"context_line":"        },"},{"line_number":129,"context_line":"        \u0027dhcp_agent_id\u0027: {"},{"line_number":130,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9mRM%3D","line":127,"updated":"2013-12-09 20:20:41.000000000","message":"Also weird word wrapping here. \u0027this\u0027 would fit fine after of\u0027. The way it is now interrupts the text flow quite a bit.","commit_id":"e60a03e01530921073e5c562e962ea672ab1582e"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"38e27a18d571e95a8f0e7b8a27a1d865b7e4f93e","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027Description\u0027: _(\u0027The ID of the network you want to be scheduled \u0027"},{"line_number":125,"context_line":"                             \u0027by the dhcp_agent. Note that the default policy \u0027"},{"line_number":126,"context_line":"                             \u0027setting in Neutron restricts usage of \u0027"},{"line_number":127,"context_line":"                             \u0027this property to administrative users only.\u0027),"},{"line_number":128,"context_line":"        },"},{"line_number":129,"context_line":"        \u0027dhcp_agent_id\u0027: {"},{"line_number":130,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9k7o%3D","line":127,"in_reply_to":"AAAATn%2F9mRM%3D","updated":"2013-12-10 02:03:40.000000000","message":"Thank you. I learned the rule :)","commit_id":"e60a03e01530921073e5c562e962ea672ab1582e"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"a8cd12aa6964f58d21fecc1cdf3fbd13be2df447","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                             \u0027setting in Neutron restricts usage of this \u0027"},{"line_number":135,"context_line":"                             \u0027property to administrative users only.\u0027),"},{"line_number":136,"context_line":"        }"},{"line_number":137,"context_line":"    }"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def handle_create(self):"},{"line_number":140,"context_line":"        network_id \u003d self.properties[\u0027network_id\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9kys%3D","line":137,"updated":"2013-12-10 02:59:49.000000000","message":"so no attributes_schema defined for NetDHCPAgent?","commit_id":"19ef496f2f4423dc797efdaec94f01ac34648632"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"c3a2adb2433d9e09a28a7ff5ebc9d59a4cc2dbe1","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                             \u0027setting in Neutron restricts usage of this \u0027"},{"line_number":135,"context_line":"                             \u0027property to administrative users only.\u0027),"},{"line_number":136,"context_line":"        }"},{"line_number":137,"context_line":"    }"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def handle_create(self):"},{"line_number":140,"context_line":"        network_id \u003d self.properties[\u0027network_id\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9kgM%3D","line":137,"in_reply_to":"AAAATn%2F9kys%3D","updated":"2013-12-10 05:04:15.000000000","message":"This resource is similar to RouterInterface or CinderVolumeAttachment, that defines connectivity of resources. They doesn\u0027t have attribute_schema, so I didn\u0027t add.\n\nMaybe, the attributes should be referenced by other correct resource or inputted parameter.","commit_id":"19ef496f2f4423dc797efdaec94f01ac34648632"}],"heat/tests/test_neutron.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"696af6856916b79ed69822fd8d2679764d0072fb","unresolved":false,"context_lines":[{"line_number":112,"context_line":"{"},{"line_number":113,"context_line":"  \"AWSTemplateFormatVersion\" : \"2010-09-09\","},{"line_number":114,"context_line":"  \"Description\" : \"Template to test Neutron resources\","},{"line_number":115,"context_line":"  \"Parameters\" : {},"},{"line_number":116,"context_line":"  \"Resources\" : {"},{"line_number":117,"context_line":"    \"network_dhcp_agent\": {"},{"line_number":118,"context_line":"      \"Type\": \"OS::Neutron::NetDhcpAgent\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F96yA%3D","line":115,"updated":"2013-12-04 14:06:10.000000000","message":"You can remove this line.","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"930c99729f9130f25ed30e328800b81b900b1d55","unresolved":false,"context_lines":[{"line_number":112,"context_line":"{"},{"line_number":113,"context_line":"  \"AWSTemplateFormatVersion\" : \"2010-09-09\","},{"line_number":114,"context_line":"  \"Description\" : \"Template to test Neutron resources\","},{"line_number":115,"context_line":"  \"Parameters\" : {},"},{"line_number":116,"context_line":"  \"Resources\" : {"},{"line_number":117,"context_line":"    \"network_dhcp_agent\": {"},{"line_number":118,"context_line":"      \"Type\": \"OS::Neutron::NetDhcpAgent\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F93j4%3D","line":115,"in_reply_to":"AAAATn%2F96yA%3D","updated":"2013-12-05 02:29:56.000000000","message":"Done","commit_id":"e0644d10c6dd464f351921c42f32bcfe982d54b8"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"d2069e35506ccd20540e31bf38b1627af2946e0e","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)"},{"line_number":448,"context_line":"        self.assertEqual(scheduler.TaskRunner(rsrc.delete)(), None)"},{"line_number":449,"context_line":"        rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, \u0027to delete again\u0027)"},{"line_number":450,"context_line":"        self.assertEqual(scheduler.TaskRunner(rsrc.delete)(), None)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        self.m.VerifyAll()"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9xU0%3D","line":450,"updated":"2013-12-06 05:26:20.000000000","message":"It would be nice to keep consistency when by always calling self.assertEqual(expected, returned).\n\nThe assertions on the TaskRunner seem to be all reversed here and on the tests below.","commit_id":"13d2ad4313321be3af49ab459c817b291c3c32c7"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"f0283a2da4cda7efe501f69b7df6316be11535da","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)"},{"line_number":448,"context_line":"        self.assertEqual(scheduler.TaskRunner(rsrc.delete)(), None)"},{"line_number":449,"context_line":"        rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, \u0027to delete again\u0027)"},{"line_number":450,"context_line":"        self.assertEqual(scheduler.TaskRunner(rsrc.delete)(), None)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        self.m.VerifyAll()"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9w%2Bw%3D","line":450,"in_reply_to":"AAAATn%2F9xU0%3D","updated":"2013-12-06 07:44:36.000000000","message":"Mr. Anderson Mesquita\n\nThank you for comments.\n\nI found all of codes in this file are also reversed.\n\nSo, I\u0027ll update all reversed code in this file like below:\n\nself.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())","commit_id":"13d2ad4313321be3af49ab459c817b291c3c32c7"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"7e07e95d0cd878274434c27e62a4bcb9041d2fd8","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                                t[\u0027Resources\u0027][\u0027network_dhcp_agent\u0027], stack)"},{"line_number":446,"context_line":"        scheduler.TaskRunner(rsrc.create)()"},{"line_number":447,"context_line":"        self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)"},{"line_number":448,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":449,"context_line":"        rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, \u0027to delete again\u0027)"},{"line_number":450,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9skE%3D","line":448,"updated":"2013-12-07 05:07:14.000000000","message":"Don\u0027t forget to fix these to be assertIsNone while you\u0027re at it. (see below)","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"63fab87035e6d2967ec9c51b0457c343aafa4468","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                                t[\u0027Resources\u0027][\u0027network_dhcp_agent\u0027], stack)"},{"line_number":446,"context_line":"        scheduler.TaskRunner(rsrc.create)()"},{"line_number":447,"context_line":"        self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)"},{"line_number":448,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":449,"context_line":"        rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, \u0027to delete again\u0027)"},{"line_number":450,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9qgQ%3D","line":448,"in_reply_to":"AAAATn%2F9skE%3D","updated":"2013-12-09 04:05:58.000000000","message":"Done","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"77c70e364ba400471d45da45d3d4d9bcdb2f6015","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        }"},{"line_number":640,"context_line":"        rsrc.handle_update(update_snippet, {}, {})"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":643,"context_line":"        rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, \u0027to delete again\u0027)"},{"line_number":644,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":645,"context_line":"        self.m.VerifyAll()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9u1M%3D","line":642,"updated":"2013-12-06 16:09:17.000000000","message":"I\u0027m not sure if assertEqual(None, ...) has any benefit over using assertIsNone? (nicer assertion display maybe?)","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"63fab87035e6d2967ec9c51b0457c343aafa4468","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        }"},{"line_number":640,"context_line":"        rsrc.handle_update(update_snippet, {}, {})"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":643,"context_line":"        rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, \u0027to delete again\u0027)"},{"line_number":644,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":645,"context_line":"        self.m.VerifyAll()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9qgA%3D","line":642,"in_reply_to":"AAAATn%2F9skc%3D","updated":"2013-12-09 04:05:58.000000000","message":"I reported another bug.\n\nAssertEqual(None, AAA) should be AssertIsNone(AAA) in unittests\n\nhttps://bugs.launchpad.net/heat/+bug/1259023","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"7e07e95d0cd878274434c27e62a4bcb9041d2fd8","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        }"},{"line_number":640,"context_line":"        rsrc.handle_update(update_snippet, {}, {})"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":643,"context_line":"        rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, \u0027to delete again\u0027)"},{"line_number":644,"context_line":"        self.assertEqual(None, scheduler.TaskRunner(rsrc.delete)())"},{"line_number":645,"context_line":"        self.m.VerifyAll()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9skc%3D","line":642,"in_reply_to":"AAAATn%2F9u1M%3D","updated":"2013-12-07 05:07:14.000000000","message":"TIL assertIsNone is more correct. This article explains it nicely:\n\nhttp://jaredgrubb.blogspot.com/2009/04/python-is-none-vs-none.html\n\nI think we do this \"wrong\" all over the place, but may as well start spreading the gospel. Note that PEP8 also says this:\n\n\"Comparisons to singletons like None should always be done with is or is not, never the equality operators.\"\n\nhttp://www.python.org/dev/peps/pep-0008/#programming-recommendations\n\nAnyway, these are unrelated to the commit message, they seem like \"oops I left these in\" rather than \"part of my tests for this code.\" Please move these changes to a different patch, and fix them to be assertIsNone.","commit_id":"c5f9c11d989629e37f412adb9acb894178d21588"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"bc0ca99901c8117912f5d4a643bdf235eade93d0","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            fakes.FakeKeystoneClient())"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        neutronclient.Client.add_network_to_dhcp_agent("},{"line_number":427,"context_line":"            u\u00279f0df05b-4846-4d3d-971e-a2e1a06b1622\u0027,"},{"line_number":428,"context_line":"            {\u0027network_id\u0027: u\u002766a426ef-8b77-4e25-8098-b3a7c0964b93\u0027}"},{"line_number":429,"context_line":"        ).AndReturn(None)"},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9pX4%3D","line":427,"updated":"2013-12-09 10:46:46.000000000","message":"would it be better to externalize this constants?","commit_id":"809136d5731ac2fc11c155cb1db26ff5d286e4cf"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"2b6df08b22f3123b6af6d6ac05e63a626c4cab97","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            fakes.FakeKeystoneClient())"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        neutronclient.Client.add_network_to_dhcp_agent("},{"line_number":427,"context_line":"            u\u00279f0df05b-4846-4d3d-971e-a2e1a06b1622\u0027,"},{"line_number":428,"context_line":"            {\u0027network_id\u0027: u\u002766a426ef-8b77-4e25-8098-b3a7c0964b93\u0027}"},{"line_number":429,"context_line":"        ).AndReturn(None)"},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9ovk%3D","line":427,"in_reply_to":"AAAATn%2F9pBU%3D","updated":"2013-12-09 13:28:00.000000000","message":"I don\u0027t see why we would do this. This is a simple test internal values, there is no need to externalize it.","commit_id":"809136d5731ac2fc11c155cb1db26ff5d286e4cf"},{"author":{"_account_id":9000,"name":"Ryo Miki","email":"miki.ryo@po.ntt-tx.co.jp","username":"miki.ryo"},"change_message_id":"a69d9cdecbc7f53f85d3f05a09ce3dfd421630aa","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            fakes.FakeKeystoneClient())"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        neutronclient.Client.add_network_to_dhcp_agent("},{"line_number":427,"context_line":"            u\u00279f0df05b-4846-4d3d-971e-a2e1a06b1622\u0027,"},{"line_number":428,"context_line":"            {\u0027network_id\u0027: u\u002766a426ef-8b77-4e25-8098-b3a7c0964b93\u0027}"},{"line_number":429,"context_line":"        ).AndReturn(None)"},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9pBU%3D","line":427,"in_reply_to":"AAAATn%2F9pX4%3D","updated":"2013-12-09 12:26:15.000000000","message":"umm.. I have no idea which is better since most of UT codes seem having constants.\n\nI\u0027ll wait for otther reviewer\u0027s opinion.","commit_id":"809136d5731ac2fc11c155cb1db26ff5d286e4cf"}]}
