)]}'
{"neutron/agent/linux/dhcp.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c9bb4f50148fb281b7fc9eab53d66e38332fe3b","unresolved":false,"context_lines":[{"line_number":649,"context_line":"        # a device id that combines host and network ids"},{"line_number":650,"context_line":"        return get_dhcp_agent_device_id(network.id, self.conf.host)"},{"line_number":651,"context_line":"        #host_uuid \u003d uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())"},{"line_number":652,"context_line":"        #return \u0027dhcp%s-%s\u0027 % (host_uuid, network.id)"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    def _get_device(self, network):"},{"line_number":655,"context_line":"        \"\"\"Return DHCP ip_lib device for this host on the network.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FMx8%3D","line":652,"updated":"2014-03-07 17:34:37.000000000","message":"Above commented out code needs to be removed, I think?","commit_id":"56a080c572abbe7b4d4649406071657a581df6bf"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a4ff02874497cce71ca7f3251464d5d9d0ef760c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"NS_PREFIX \u003d \u0027qdhcp-\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def get_dhcp_agent_device_id(network_id, host):"},{"line_number":81,"context_line":"    host_uuid \u003d uuid.uuid5(uuid.NAMESPACE_DNS, str(host))"},{"line_number":82,"context_line":"    return \u0027dhcp%s-%s\u0027 % (host_uuid, network_id)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FBOE%3D","line":80,"updated":"2014-03-10 17:27:21.000000000","message":"This should go to somewhere like common/utils.py so that agentschedulers_db.py could import it from there without tying itself to importing this module.","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":5209,"name":"Ed Bak","email":"ed.bak2@hpe.com","username":"ed-bak2"},"change_message_id":"5ec8f633e26dc1a9648547167ecb1add03c18495","unresolved":false,"context_lines":[{"line_number":77,"context_line":"NS_PREFIX \u003d \u0027qdhcp-\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def get_dhcp_agent_device_id(network_id, host):"},{"line_number":81,"context_line":"    host_uuid \u003d uuid.uuid5(uuid.NAMESPACE_DNS, str(host))"},{"line_number":82,"context_line":"    return \u0027dhcp%s-%s\u0027 % (host_uuid, network_id)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FAf0%3D","line":80,"in_reply_to":"AAAAVn%2F%2FBOE%3D","updated":"2014-03-10 18:36:14.000000000","message":"Moved to common/utils.py","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"5434496d8d1dfe57723c3209b954b4a3d368489f","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        \"\"\"Return a unique DHCP device ID for this host on the network.\"\"\""},{"line_number":643,"context_line":"        # There could be more than one dhcp server per network, so create"},{"line_number":644,"context_line":"        # a device id that combines host and network ids"},{"line_number":645,"context_line":"        return commonutils.get_dhcp_agent_device_id(network.id, self.conf.host)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    def _get_device(self, network):"},{"line_number":648,"context_line":"        \"\"\"Return DHCP ip_lib device for this host on the network.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2F2ko%3D","line":645,"updated":"2014-04-16 23:31:27.000000000","message":"I think this causes UT failure.\n\ntest_get_device_id (in test_dhcp_agent.py) mocks socket.gethostname. But it is meaningless now.\n\n(I agree using self.conf.host is right instead of socket.gethostname)","commit_id":"f6fac307c602341d4bed6a92cf2f3ff6452b92ba"}],"neutron/common/constants.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a4ff02874497cce71ca7f3251464d5d9d0ef760c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"DEVICE_OWNER_FLOATINGIP \u003d \"network:floatingip\""},{"line_number":35,"context_line":"DEVICE_OWNER_DHCP \u003d \"network:dhcp\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"DEVICE_ID_RESERVED \u003d \"reserved\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"FLOATINGIP_KEY \u003d \u0027_floatingips\u0027"},{"line_number":40,"context_line":"INTERFACE_KEY \u003d \u0027_interfaces\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FBHA%3D","line":37,"updated":"2014-03-10 17:27:21.000000000","message":"Suggestion:  Maybe use something a little more descriptive like:\n\nDEVICE_ID_RESERVED_DHCP_PORT \u003d \"reserved_dhcp_port\"\n\nThe extra specificity might help in certain contexts.","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":5209,"name":"Ed Bak","email":"ed.bak2@hpe.com","username":"ed-bak2"},"change_message_id":"5ec8f633e26dc1a9648547167ecb1add03c18495","unresolved":false,"context_lines":[{"line_number":34,"context_line":"DEVICE_OWNER_FLOATINGIP \u003d \"network:floatingip\""},{"line_number":35,"context_line":"DEVICE_OWNER_DHCP \u003d \"network:dhcp\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"DEVICE_ID_RESERVED \u003d \"reserved\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"FLOATINGIP_KEY \u003d \u0027_floatingips\u0027"},{"line_number":40,"context_line":"INTERFACE_KEY \u003d \u0027_interfaces\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FAfY%3D","line":37,"in_reply_to":"AAAAVn%2F%2FBHA%3D","updated":"2014-03-10 18:36:14.000000000","message":"Changed to reserved_dhcp_port","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"aa240998d72490e6f65eaf2a7972831f2494a18d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"DEVICE_OWNER_FLOATINGIP \u003d \"network:floatingip\""},{"line_number":35,"context_line":"DEVICE_OWNER_DHCP \u003d \"network:dhcp\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"DEVICE_ID_RESERVED \u003d \"reserved_dhcp_port\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"FLOATINGIP_KEY \u003d \u0027_floatingips\u0027"},{"line_number":40,"context_line":"INTERFACE_KEY \u003d \u0027_interfaces\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2Fn8w%3D","line":37,"updated":"2014-03-14 22:26:04.000000000","message":"As Carl mentioned in patch set #2, the constant name (not value) should have DHCP in it somewhere, since it\u0027s specific to DHCP.","commit_id":"775e11b42780fda609f4e343e2d0d1404b7948cb"}],"neutron/common/utils.py":[{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"1145cb6c7b7692b665856e4d8f2a3212c03103fc","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    #Split host so as to always use only the hostname and"},{"line_number":211,"context_line":"    #not the domain name. This will guarantee consistentcy"},{"line_number":212,"context_line":"    #whether a local hostname or an fqdn is passed in."},{"line_number":213,"context_line":"    local_hostname \u003d None"},{"line_number":214,"context_line":"    if host:"},{"line_number":215,"context_line":"        hostname \u003d host.split(\u0027.\u0027)"},{"line_number":216,"context_line":"        local_hostname \u003d hostname[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FwbY%3D","line":213,"updated":"2014-03-14 00:57:59.000000000","message":"I think it is not allowed for host to be null.\n\nSo it can be just:\n\nlocal_hostname \u003d host.split(\u0027.\u0027)[0]","commit_id":"ba92b05008279b3d747090f1329e093493c60c5d"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"a0ab0805a24abac10b2ab4e46f075e919d01402b","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"def get_dhcp_agent_device_id(network_id, host):"},{"line_number":206,"context_line":"    #Split host so as to always use only the hostname and"},{"line_number":207,"context_line":"    #not the domain name. This will guarantee consistentcy"},{"line_number":208,"context_line":"    #whether a local hostname or an fqdn is passed in."},{"line_number":209,"context_line":"    local_hostname \u003d host.split(\u0027.\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_1e78cdf7","line":206,"updated":"2014-05-20 16:06:25.000000000","message":"Nit: Space before comments.","commit_id":"566909c60c6d4e4d5899080faaf0d36171adf0e2"}],"neutron/db/agentschedulers_db.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4c9bb4f50148fb281b7fc9eab53d66e38332fe3b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                help\u003d_(\u0027Allow auto scheduling networks to DHCP agent.\u0027)),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027dhcp_agents_per_network\u0027, default\u003d1,"},{"line_number":42,"context_line":"               help\u003d_(\u0027Number of DHCP agents scheduled to host a network.\u0027)),"},{"line_number":43,"context_line":"    cfg.BoolOpt(\u0027reserve_dhcp_port\u0027, default\u003dFalse,"},{"line_number":44,"context_line":"                help\u003d_(\u0027Reserve the dhcp port when doing a network remove.\u0027)),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FMxQ%3D","line":43,"updated":"2014-03-07 17:34:37.000000000","message":"How about \"reserve_dhcp_port_on_net_remove\" to make the option name as clear as possible?","commit_id":"56a080c572abbe7b4d4649406071657a581df6bf"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a4ff02874497cce71ca7f3251464d5d9d0ef760c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from sqlalchemy.orm import exc"},{"line_number":22,"context_line":"from sqlalchemy.orm import joinedload"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.agent.linux import dhcp"},{"line_number":25,"context_line":"from neutron.common import constants"},{"line_number":26,"context_line":"from neutron.db import agents_db"},{"line_number":27,"context_line":"from neutron.db import model_base"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FBOU%3D","line":24,"updated":"2014-03-10 17:27:21.000000000","message":"I\u0027d like to avoid this import here.","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":5209,"name":"Ed Bak","email":"ed.bak2@hpe.com","username":"ed-bak2"},"change_message_id":"5ec8f633e26dc1a9648547167ecb1add03c18495","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from sqlalchemy.orm import exc"},{"line_number":22,"context_line":"from sqlalchemy.orm import joinedload"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.agent.linux import dhcp"},{"line_number":25,"context_line":"from neutron.common import constants"},{"line_number":26,"context_line":"from neutron.db import agents_db"},{"line_number":27,"context_line":"from neutron.db import model_base"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FAgY%3D","line":24,"in_reply_to":"AAAAVn%2F%2FBOU%3D","updated":"2014-03-10 18:36:14.000000000","message":"Moved to common/utils.py","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a4ff02874497cce71ca7f3251464d5d9d0ef760c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                help\u003d_(\u0027Allow auto scheduling networks to DHCP agent.\u0027)),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027dhcp_agents_per_network\u0027, default\u003d1,"},{"line_number":42,"context_line":"               help\u003d_(\u0027Number of DHCP agents scheduled to host a network.\u0027)),"},{"line_number":43,"context_line":"    cfg.BoolOpt(\u0027reserve_dhcp_port_on_net_remove\u0027, default\u003dFalse,"},{"line_number":44,"context_line":"                help\u003d_(\u0027Reserve the dhcp port when doing a network remove.\u0027)),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FBMQ%3D","line":43,"updated":"2014-03-10 17:27:21.000000000","message":"Does it really need to be an option?  We have lots of options.\n\nIn my opinion, this is a problem for everyone.  The DNS server IP must be preserved and it doesn\u0027t hurt to save the DHCP server IP address.  So, is there really good grounds for rejecting this new code behavior?\n\nI will +1 either way but I\u0027d like other reviewers to chime in here.","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a4ff02874497cce71ca7f3251464d5d9d0ef760c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    cfg.IntOpt(\u0027dhcp_agents_per_network\u0027, default\u003d1,"},{"line_number":42,"context_line":"               help\u003d_(\u0027Number of DHCP agents scheduled to host a network.\u0027)),"},{"line_number":43,"context_line":"    cfg.BoolOpt(\u0027reserve_dhcp_port_on_net_remove\u0027, default\u003dFalse,"},{"line_number":44,"context_line":"                help\u003d_(\u0027Reserve the dhcp port when doing a network remove.\u0027)),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"cfg.CONF.register_opts(AGENTS_SCHEDULER_OPTS)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FBKw%3D","line":44,"updated":"2014-03-10 17:27:21.000000000","message":"If it is decided that it really should be an option then you need to add this to /etc/neutron.conf in this patch with a description and the default value commented out.","commit_id":"d9b8ab7d9aa2597b6d46ea7bb7de8e319657c426"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"83e087b3fe671c6a1064eef8a87c525989d98d43","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                help\u003d_(\u0027Allow auto scheduling networks to DHCP agent.\u0027)),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027dhcp_agents_per_network\u0027, default\u003d1,"},{"line_number":42,"context_line":"               help\u003d_(\u0027Number of DHCP agents scheduled to host a network.\u0027)),"},{"line_number":43,"context_line":"    cfg.BoolOpt(\u0027reserve_dhcp_port_on_net_remove\u0027, default\u003dFalse,"},{"line_number":44,"context_line":"                help\u003d_(\u0027Reserve the dhcp port when doing a network remove.\u0027)),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FAVY%3D","line":43,"updated":"2014-03-10 18:49:54.000000000","message":"See comments from this section in patch set 2.","commit_id":"4d12c3628439a0a343cef6185f56de388df8f52a"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"a0ab0805a24abac10b2ab4e46f075e919d01402b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                raise dhcpagentscheduler.NetworkNotHostedByDhcpAgent("},{"line_number":158,"context_line":"                    network_id\u003dnetwork_id, agent_id\u003did)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            #reserve the port, so the ip is reused on a subsequent add"},{"line_number":161,"context_line":"            device_id \u003d utils.get_dhcp_agent_device_id(network_id,"},{"line_number":162,"context_line":"                                                       agent[\u0027host\u0027])"},{"line_number":163,"context_line":"            filters \u003d dict(device_id\u003d[device_id])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_be68b922","line":160,"updated":"2014-05-20 16:06:25.000000000","message":"Nit: Space before comments.","commit_id":"566909c60c6d4e4d5899080faaf0d36171adf0e2"}],"neutron/tests/unit/test_dhcp_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b483178071f7627c358d64b8097a955fb0473268","unresolved":false,"context_lines":[{"line_number":1282,"context_line":"            uuid5.called_once_with(uuid.NAMESPACE_DNS, cfg.CONF.host)"},{"line_number":1283,"context_line":"            self.assertEqual(dh.get_device_id(fake_net), expected)"},{"line_number":1284,"context_line":""},{"line_number":1285,"context_line":"    def _get_device_manager_with_mock_device(self, conf, device):"},{"line_number":1286,"context_line":"            dh \u003d dhcp.DeviceManager(conf, cfg.CONF.root_helper, None)"},{"line_number":1287,"context_line":"            dh._get_device \u003d mock.Mock(return_value\u003ddevice)"},{"line_number":1288,"context_line":"            return dh"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad9bd40_5f06271e","line":1285,"updated":"2014-05-06 16:28:22.000000000","message":"Where is this called from?  Maybe you just need to rebase?","commit_id":"acb25c10a0d8ad94594d98e15a0eb1e31f60ee08"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"97018f8f6b9193abb20194a483be2a53da596c7f","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"            uuid5.called_once_with(uuid.NAMESPACE_DNS, cfg.CONF.host)"},{"line_number":1276,"context_line":"            self.assertEqual(dh.get_device_id(fake_net), expected)"},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"    def _get_device_manager_with_mock_device(self, conf, device):"},{"line_number":1279,"context_line":"            dh \u003d dhcp.DeviceManager(conf, cfg.CONF.root_helper, None)"},{"line_number":1280,"context_line":"            dh._get_device \u003d mock.Mock(return_value\u003ddevice)"},{"line_number":1281,"context_line":"            return dh"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_be23acbb","line":1278,"updated":"2014-05-06 23:24:27.000000000","message":"I think Brian made a good point about this.  Why is this method added here?  Did this accidentally get introduced with a botched conflict resolution?  This does look out of place.\n\nIf not needed, remove it.","commit_id":"613a6a433e4be3f1c66a9754887a952f347fec6c"}]}
