)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a1b2381d7ee6cb1a73be762e89974dc8c608f4a1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Change-Id: Id787bfac497fab0bec767871557f7aacb45fcef1"},{"line_number":14,"context_line":"Related-bug: #1585170"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Move add-option part when reciving  DHCP-packet to function"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"(also add unit test that create fake-l2-port"},{"line_number":19,"context_line":"and send fake-dhcp-packet to this port and check that"},{"line_number":20,"context_line":"we are getting an answer"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Id787bfac497fab0bec767871557f7aacb45fcef1"},{"line_number":23,"context_line":"Related-bug: #1585170"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5f201791_c00a34d0","line":23,"range":{"start_line":16,"start_character":0,"end_line":23,"end_character":21},"updated":"2017-06-28 07:58:19.000000000","message":"Duplicated commit message?","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1ae9a8c04db6e2a3eaeeff83610932e35a1ec3c3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eyal Leshem \u003ceyal.leshem@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-03 08:11:21 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move add-option part when reciving  DHCP-packet to function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"(also add unit test that create fake-l2-port"},{"line_number":10,"context_line":"and send fake-dhcp-packet to this port and check that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3f1d235d_95319aef","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":34},"updated":"2017-07-03 14:00:25.000000000","message":"nit: receiving","commit_id":"a1e46d9d0eda98e11b5bd212f2e431b6d81aded6"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"ef337803ea28d71d0ce1171a927c0de7a0d42c95","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eyal Leshem \u003ceyal.leshem@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-17 11:32:00 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move add-option part when reciving  DHCP-packet to function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"(also add unit test that create fake-l2-port"},{"line_number":10,"context_line":"and send fake-dhcp-packet to this port and check that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"1f1a1f67_ed167b49","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":34},"updated":"2017-07-18 09:08:53.000000000","message":"Nit: receiving","commit_id":"773e262ff22a53320f4473395a6162e1f5a78620"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"24bc0c905b02d6420bd37a572d57f446a553294e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eyal Leshem \u003ceyal.leshem@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-17 11:32:00 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move add-option part when reciving  DHCP-packet to function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"(also add unit test that create fake-l2-port"},{"line_number":10,"context_line":"and send fake-dhcp-packet to this port and check that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"1f1a1f67_8232315d","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":34},"in_reply_to":"1f1a1f67_ed167b49","updated":"2017-07-18 11:17:48.000000000","message":"changed","commit_id":"773e262ff22a53320f4473395a6162e1f5a78620"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move add-option part when receiving  DHCP-packet to function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"(also add unit test that create fake-l2-port"},{"line_number":10,"context_line":"and send fake-dhcp-packet to this port and check that"},{"line_number":11,"context_line":"we are getting an answer"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"ff346bd7_d483d003","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":5},"updated":"2017-07-24 09:03:39.000000000","message":"In addition","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move add-option part when receiving  DHCP-packet to function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"(also add unit test that create fake-l2-port"},{"line_number":10,"context_line":"and send fake-dhcp-packet to this port and check that"},{"line_number":11,"context_line":"we are getting an answer"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"ff346bd7_5477e03b","line":9,"range":{"start_line":9,"start_character":25,"end_line":9,"end_character":31},"updated":"2017-07-24 09:03:39.000000000","message":"creates","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Move add-option part when receiving  DHCP-packet to function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"(also add unit test that create fake-l2-port"},{"line_number":10,"context_line":"and send fake-dhcp-packet to this port and check that"},{"line_number":11,"context_line":"we are getting an answer"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Id787bfac497fab0bec767871557f7aacb45fcef1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"ff346bd7_148f1824","line":10,"range":{"start_line":10,"start_character":4,"end_line":10,"end_character":8},"updated":"2017-07-24 09:03:39.000000000","message":"sends","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"}],"dragonflow/controller/apps/dhcp.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"94e0aa0eaad7f899b94efbf3d252f752639e6e90","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _build_dhcp_options(self, dhcp_request, response_type,"},{"line_number":187,"context_line":"                            lport, subnet, srv_addr):"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":"        according the RFC the server need to response with"},{"line_number":191,"context_line":"        with all the option that \"explicitly configured options\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1f1a1f67_e315a29d","line":188,"updated":"2017-07-16 10:34:12.000000000","message":"extra line","commit_id":"cba135502f63fb8d1e5c9d075f00112dd1382ffd"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"ef337803ea28d71d0ce1171a927c0de7a0d42c95","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        gw_ip \u003d self._get_port_gateway_address(subnet, lport)"},{"line_number":231,"context_line":"        if gw_ip:"},{"line_number":232,"context_line":"            gw_ip_bin \u003d netaddr.IPAddress(gw_ip).packed"},{"line_number":233,"context_line":"            options_dict[dhcp.DHCP_GATEWAY_ADDR_OPT] \u003d gw_ip_bin"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        if response_type \u003d\u003d dhcp.DHCP_ACK:"}],"source_content_type":"text/x-python","patch_set":21,"id":"1f1a1f67_cdea9f0d","line":232,"range":{"start_line":232,"start_character":24,"end_line":232,"end_character":41},"updated":"2017-07-18 09:08:53.000000000","message":"Doesn\u0027t _get_port_gateway_address returns an IPAddress object? (subnet.ip)","commit_id":"773e262ff22a53320f4473395a6162e1f5a78620"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"24bc0c905b02d6420bd37a572d57f446a553294e","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        gw_ip \u003d self._get_port_gateway_address(subnet, lport)"},{"line_number":231,"context_line":"        if gw_ip:"},{"line_number":232,"context_line":"            gw_ip_bin \u003d netaddr.IPAddress(gw_ip).packed"},{"line_number":233,"context_line":"            options_dict[dhcp.DHCP_GATEWAY_ADDR_OPT] \u003d gw_ip_bin"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        if response_type \u003d\u003d dhcp.DHCP_ACK:"}],"source_content_type":"text/x-python","patch_set":21,"id":"1f1a1f67_621035a9","line":232,"range":{"start_line":232,"start_character":24,"end_line":232,"end_character":41},"in_reply_to":"1f1a1f67_cdea9f0d","updated":"2017-07-18 11:17:48.000000000","message":"Indeed - fixed ..","commit_id":"773e262ff22a53320f4473395a6162e1f5a78620"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def _build_dhcp_options(self, dhcp_request, response_type,"},{"line_number":186,"context_line":"                            lport, subnet, srv_addr):"},{"line_number":187,"context_line":"        \"\"\""},{"line_number":188,"context_line":"        according the RFC the server need to response with"},{"line_number":189,"context_line":"        with all the option that \"explicitly configured options\""},{"line_number":190,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":191,"context_line":"        possible"}],"source_content_type":"text/x-python","patch_set":27,"id":"ff346bd7_d7b192e3","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":9},"updated":"2017-07-24 09:03:39.000000000","message":"A","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def _build_dhcp_options(self, dhcp_request, response_type,"},{"line_number":186,"context_line":"                            lport, subnet, srv_addr):"},{"line_number":187,"context_line":"        \"\"\""},{"line_number":188,"context_line":"        according the RFC the server need to response with"},{"line_number":189,"context_line":"        with all the option that \"explicitly configured options\""},{"line_number":190,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":191,"context_line":"        possible"}],"source_content_type":"text/x-python","patch_set":27,"id":"ff346bd7_b7b60ed9","line":188,"range":{"start_line":188,"start_character":37,"end_line":188,"end_character":41},"updated":"2017-07-24 09:03:39.000000000","message":"needs","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                            lport, subnet, srv_addr):"},{"line_number":187,"context_line":"        \"\"\""},{"line_number":188,"context_line":"        according the RFC the server need to response with"},{"line_number":189,"context_line":"        with all the option that \"explicitly configured options\""},{"line_number":190,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":191,"context_line":"        possible"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ff346bd7_b7ebaeae","line":189,"range":{"start_line":189,"start_character":21,"end_line":189,"end_character":27},"updated":"2017-07-24 09:03:39.000000000","message":"options","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                            lport, subnet, srv_addr):"},{"line_number":187,"context_line":"        \"\"\""},{"line_number":188,"context_line":"        according the RFC the server need to response with"},{"line_number":189,"context_line":"        with all the option that \"explicitly configured options\""},{"line_number":190,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":191,"context_line":"        possible"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ff346bd7_57c5a23b","line":189,"range":{"start_line":189,"start_character":7,"end_line":189,"end_character":13},"updated":"2017-07-24 09:03:39.000000000","message":"redundant","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"}],"dragonflow/controller/dhcp_app.py":[{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"6a75c329bfcfdc3d83beb8421fe838ec10be3661","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        \"\"\""},{"line_number":182,"context_line":"        according the RFC the server need to response with"},{"line_number":183,"context_line":"        with all all the option that \"explicitly configured options\""},{"line_number":184,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":185,"context_line":"        possible"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_9267ed4d","line":183,"range":{"start_line":183,"start_character":17,"end_line":183,"end_character":20},"updated":"2017-06-19 07:56:51.000000000","message":"can be removed","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"6a75c329bfcfdc3d83beb8421fe838ec10be3661","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        \"\"\""},{"line_number":182,"context_line":"        according the RFC the server need to response with"},{"line_number":183,"context_line":"        with all all the option that \"explicitly configured options\""},{"line_number":184,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":185,"context_line":"        possible"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        https://www.ietf.org/rfc/rfc2131.txt (page 29)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_8d07ce18","line":184,"range":{"start_line":184,"start_character":35,"end_line":184,"end_character":55},"updated":"2017-06-19 07:56:51.000000000","message":"Where do you see which parameters are the \"requested parameters\"?","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"976822a870e9f326c6efff224c794a24e5f2a3ec","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        \"\"\""},{"line_number":182,"context_line":"        according the RFC the server need to response with"},{"line_number":183,"context_line":"        with all all the option that \"explicitly configured options\""},{"line_number":184,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":185,"context_line":"        possible"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        https://www.ietf.org/rfc/rfc2131.txt (page 29)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_c08b48bd","line":184,"range":{"start_line":184,"start_character":35,"end_line":184,"end_character":55},"in_reply_to":"7f231b9d_8d07ce18","updated":"2017-06-19 10:56:29.000000000","message":"The DHCP-request should contain option 55  \"Parameter Request List\"\n(see: https://tools.ietf.org/html/rfc2132 [page 9] and \n       https://www.ietf.org/rfc/rfc2131.txt [page 21]  )","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c7092b5504c452816279a774d36b464c2336b29b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        \"\"\""},{"line_number":182,"context_line":"        according the RFC the server need to response with"},{"line_number":183,"context_line":"        with all all the option that \"explicitly configured options\""},{"line_number":184,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":185,"context_line":"        possible"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        https://www.ietf.org/rfc/rfc2131.txt (page 29)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_263e94c0","line":184,"range":{"start_line":184,"start_character":35,"end_line":184,"end_character":55},"in_reply_to":"7f231b9d_a3f2966e","updated":"2017-06-19 11:21:35.000000000","message":"yep , \ncurrently we don\u0027t support that - and only return a predefined  - parameter list (what define by the RFC as \"explicitly configured options\" (if I understand it right...)). \nIn the next commit I planned to add the support in \"Parameter request list\" , where there is only comment now(line 197)\"","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"a66e1d64d02d8bfd9d781759726ee6d5cd1a537e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        \"\"\""},{"line_number":182,"context_line":"        according the RFC the server need to response with"},{"line_number":183,"context_line":"        with all all the option that \"explicitly configured options\""},{"line_number":184,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":185,"context_line":"        possible"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        https://www.ietf.org/rfc/rfc2131.txt (page 29)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_a3f2966e","line":184,"range":{"start_line":184,"start_character":35,"end_line":184,"end_character":55},"in_reply_to":"7f231b9d_c08b48bd","updated":"2017-06-19 11:12:32.000000000","message":"Where do read and supply the requested parameters in our dhcp_app? _build_response_default_options (and the previous code) simply add predefined parameters to the response","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"6a75c329bfcfdc3d83beb8421fe838ec10be3661","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        # explicitly configured options"},{"line_number":192,"context_line":"        self._build_response_default_options(response_type, lport,"},{"line_number":193,"context_line":"                                             subnet, options_dict)"},{"line_number":194,"context_line":"        if not options_dict:"},{"line_number":195,"context_line":"            return"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        # Here the code for requested-dhcp-options should come"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_f29061ef","line":195,"range":{"start_line":194,"start_character":8,"end_line":195,"end_character":18},"updated":"2017-06-19 07:56:51.000000000","message":"According to [1] (page 9) dhcp options is optional. Why not build the packet without options?\n\n[1] https://www.ietf.org/rfc/rfc2131.txt","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"976822a870e9f326c6efff224c794a24e5f2a3ec","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        # explicitly configured options"},{"line_number":192,"context_line":"        self._build_response_default_options(response_type, lport,"},{"line_number":193,"context_line":"                                             subnet, options_dict)"},{"line_number":194,"context_line":"        if not options_dict:"},{"line_number":195,"context_line":"            return"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        # Here the code for requested-dhcp-options should come"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_8352fa11","line":195,"range":{"start_line":194,"start_character":8,"end_line":195,"end_character":18},"in_reply_to":"7f231b9d_f29061ef","updated":"2017-06-19 10:56:29.000000000","message":"In page 9 it\u0027s describe the packet-structure - DHCP packet is valid without options .. \nBut when the RFC describe the server replay it\u0027s enforce the server to include some fields (see the table in the top of page 29 ..).","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"6a75c329bfcfdc3d83beb8421fe838ec10be3661","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        pkt_type_packed \u003d struct.pack(\u0027!B\u0027, response_type)"},{"line_number":209,"context_line":"        dns \u003d self._get_dns_address_list_bin(subnet)"},{"line_number":210,"context_line":"        host_routes \u003d self._get_host_routes_list_bin(subnet, lport)"},{"line_number":211,"context_line":"        dhcp_server_address \u003d subnet.dhcp_ip"},{"line_number":212,"context_line":"        if not dhcp_server_address:"},{"line_number":213,"context_line":"            LOG.warning(\"Could not find DHCP server address for subnet %s\","},{"line_number":214,"context_line":"                        subnet.id)"},{"line_number":215,"context_line":"            return"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        server_addr_bin \u003d dhcp_server_address.packed"},{"line_number":218,"context_line":"        netmask_bin \u003d subnet.cidr.netmask.packed"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_3227f9cc","line":215,"range":{"start_line":211,"start_character":8,"end_line":215,"end_character":18},"updated":"2017-06-19 07:56:51.000000000","message":"Why not write this test in _create_dhcp_response instead?","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"976822a870e9f326c6efff224c794a24e5f2a3ec","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        pkt_type_packed \u003d struct.pack(\u0027!B\u0027, response_type)"},{"line_number":209,"context_line":"        dns \u003d self._get_dns_address_list_bin(subnet)"},{"line_number":210,"context_line":"        host_routes \u003d self._get_host_routes_list_bin(subnet, lport)"},{"line_number":211,"context_line":"        dhcp_server_address \u003d subnet.dhcp_ip"},{"line_number":212,"context_line":"        if not dhcp_server_address:"},{"line_number":213,"context_line":"            LOG.warning(\"Could not find DHCP server address for subnet %s\","},{"line_number":214,"context_line":"                        subnet.id)"},{"line_number":215,"context_line":"            return"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        server_addr_bin \u003d dhcp_server_address.packed"},{"line_number":218,"context_line":"        netmask_bin \u003d subnet.cidr.netmask.packed"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_a39df6bc","line":215,"range":{"start_line":211,"start_character":8,"end_line":215,"end_character":18},"in_reply_to":"7f231b9d_3227f9cc","updated":"2017-06-19 10:56:29.000000000","message":"it\u0027s would be better - \nand then i will be able to remove the check on the empty list - because after moving it to the \"_create_dhcp_response\" there will be no situation that this function will return an empty dictionary ..","commit_id":"95e1a3dc2c40d472dee0ac075420f2b871ebd29b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"df462cad55453c9c268818e5bd843358ee229b49","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        # Here the code for requested-dhcp-options should come"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        option_list \u003d []"},{"line_number":209,"context_line":"        for option_tag in options_dict:"},{"line_number":210,"context_line":"            option \u003d dhcp.option(option_tag, options_dict[option_tag])"},{"line_number":211,"context_line":"            option_list.append(option)"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_ff16baf1","line":209,"updated":"2017-06-20 12:36:35.000000000","message":"Shouldn\u0027t this be options_dict.keys()?\n\nOr:\nfor tag, value in options_dict.items():\n    option \u003d dhcp.option(tag, value)\n    option_list.append(option)\n\nOr even:\noption_list \u003d [dhcp.option(tag, value)\n               for tag, value in options_dict.items()]","commit_id":"ee4ce2a39cbb0e3f7459342d96f21abf4c4e1693"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"89e9968a8e202fd688e5ef89e1cdb181f9898fc5","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        # Here the code for requested-dhcp-options should come"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        option_list \u003d []"},{"line_number":209,"context_line":"        for option_tag in options_dict:"},{"line_number":210,"context_line":"            option \u003d dhcp.option(option_tag, options_dict[option_tag])"},{"line_number":211,"context_line":"            option_list.append(option)"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_18ee4988","line":209,"in_reply_to":"7f231b9d_ff16baf1","updated":"2017-06-20 13:58:35.000000000","message":"according to this answer : https://stackoverflow.com/questions/4730993/python-key-in-dict-keys-performance-for-large-dictionaries . \nThe first option is not optimize.. (while the actually do the same) \n\ni will change it to the third option - that indeed much more elegant ...","commit_id":"ee4ce2a39cbb0e3f7459342d96f21abf4c4e1693"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"df462cad55453c9c268818e5bd843358ee229b49","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        return option_list"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def _build_response_default_options(self, response_type, lport,"},{"line_number":216,"context_line":"                                        subnet, options_dict, srv_addr):"},{"line_number":217,"context_line":"        pkt_type_packed \u003d struct.pack(\u0027!B\u0027, response_type)"},{"line_number":218,"context_line":"        dns \u003d self._get_dns_address_list_bin(subnet)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_7f9cea5c","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":39},"updated":"2017-06-20 12:36:35.000000000","message":"nit: Why not just return the options_dict, rather than pass a dictionary and populate it?","commit_id":"ee4ce2a39cbb0e3f7459342d96f21abf4c4e1693"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"89e9968a8e202fd688e5ef89e1cdb181f9898fc5","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        return option_list"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def _build_response_default_options(self, response_type, lport,"},{"line_number":216,"context_line":"                                        subnet, options_dict, srv_addr):"},{"line_number":217,"context_line":"        pkt_type_packed \u003d struct.pack(\u0027!B\u0027, response_type)"},{"line_number":218,"context_line":"        dns \u003d self._get_dns_address_list_bin(subnet)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_3b569f08","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":39},"in_reply_to":"7f231b9d_7f9cea5c","updated":"2017-06-20 13:58:35.000000000","message":"As i am planning to use same dict in the function that answer  to the requested params - \nI felt more clean to create the dict in the father function and passed to the two child function - \nInstead  create the dict in child function - pass it to the father - and then pass it to the second child function .. \n(The third option is to create different dictionary in each child - but then it\u0027s required a merge logic...)","commit_id":"ee4ce2a39cbb0e3f7459342d96f21abf4c4e1693"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a1b2381d7ee6cb1a73be762e89974dc8c608f4a1","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                                               subnet,"},{"line_number":161,"context_line":"                                               dhcp_server_address)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if not option_list:"},{"line_number":164,"context_line":"            return"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        options \u003d dhcp.options(option_list\u003doption_list)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_20efa8e9","line":164,"range":{"start_line":163,"start_character":9,"end_line":164,"end_character":18},"updated":"2017-06-28 07:58:19.000000000","message":"Why this check is needed? The list will never be empty if we always send at least some tags.","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"da3b00be4d7f84104bb4cbfdab75814729e27e21","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                                               subnet,"},{"line_number":161,"context_line":"                                               dhcp_server_address)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if not option_list:"},{"line_number":164,"context_line":"            return"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        options \u003d dhcp.options(option_list\u003doption_list)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_b0a4f309","line":164,"range":{"start_line":163,"start_character":9,"end_line":164,"end_character":18},"in_reply_to":"5f201791_20efa8e9","updated":"2017-07-01 19:00:12.000000000","message":"yep , leftover from old code , will remove ..","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"ca1878602adf93c6c95830835f612113aa5bb80a","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        options_dict \u003d {}"},{"line_number":202,"context_line":"        # explicitly configured options"},{"line_number":203,"context_line":"        self._build_response_default_options(response_type, lport,"},{"line_number":204,"context_line":"                                             subnet, options_dict, srv_addr)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        # Here the code for requested-dhcp-options should come"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_00014c06","line":203,"range":{"start_line":203,"start_character":13,"end_line":203,"end_character":44},"updated":"2017-06-28 08:15:36.000000000","message":"Nitpicks: It might be my own preference, but I think\n\n options_dict \u003d self._build_response_default_options(\n     response_type, lports, subnet, srv_addr)\n\nis a bit more readable, because rather than reading the function and seeing the side-effect, this shows right away what it does.\n\nAnd if any other function is added, you can just call\n\n options_dict.update(new_function_returning_updated_keys())","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"da3b00be4d7f84104bb4cbfdab75814729e27e21","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        options_dict \u003d {}"},{"line_number":202,"context_line":"        # explicitly configured options"},{"line_number":203,"context_line":"        self._build_response_default_options(response_type, lport,"},{"line_number":204,"context_line":"                                             subnet, options_dict, srv_addr)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        # Here the code for requested-dhcp-options should come"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_50c23f87","line":203,"range":{"start_line":203,"start_character":13,"end_line":203,"end_character":44},"in_reply_to":"5f201791_00014c06","updated":"2017-07-01 19:00:12.000000000","message":"not sure that is my preference - \nbut as i see this note in second time for this code i will change it ..","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1ae9a8c04db6e2a3eaeeff83610932e35a1ec3c3","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        and supply as many of the \"requested parameters\" as"},{"line_number":193,"context_line":"        possible"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        https://www.ietf.org/rfc/rfc2131.txt (page 29)"},{"line_number":196,"context_line":"         \"\"\""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        # explicitly configured options"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f1d235d_f5132e5b","line":195,"range":{"start_line":195,"start_character":0,"end_line":195,"end_character":54},"updated":"2017-07-03 14:00:25.000000000","message":"I think you might be interested, I usually quote to the RFC in this way:\n\nhttps://tools.ietf.org/html/rfc2131#page-29","commit_id":"a1e46d9d0eda98e11b5bd212f2e431b6d81aded6"}],"dragonflow/tests/unit/test_dhcp_app.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a1b2381d7ee6cb1a73be762e89974dc8c608f4a1","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        req \u003d dhcp.dhcp(op\u003ddhcp.DHCP_DISCOVER, chaddr\u003d\u0027aa:aa:aa:aa:aa:aa\u0027)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        fake_loprt \u003d test_app_base.make_fake_local_port("},{"line_number":164,"context_line":"            lswitch\u003dtest_app_base.fake_logic_switch1,"},{"line_number":165,"context_line":"            subnets\u003dtest_app_base.fake_lswitch_default_subnets,"},{"line_number":166,"context_line":"            ips\u003d(\u00271.2.3.4\u0027,)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_00714c44","line":163,"range":{"start_line":163,"start_character":8,"end_line":163,"end_character":18},"updated":"2017-06-28 07:58:19.000000000","message":"typo","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"da3b00be4d7f84104bb4cbfdab75814729e27e21","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        req \u003d dhcp.dhcp(op\u003ddhcp.DHCP_DISCOVER, chaddr\u003d\u0027aa:aa:aa:aa:aa:aa\u0027)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        fake_loprt \u003d test_app_base.make_fake_local_port("},{"line_number":164,"context_line":"            lswitch\u003dtest_app_base.fake_logic_switch1,"},{"line_number":165,"context_line":"            subnets\u003dtest_app_base.fake_lswitch_default_subnets,"},{"line_number":166,"context_line":"            ips\u003d(\u00271.2.3.4\u0027,)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_a5d7f3bf","line":163,"range":{"start_line":163,"start_character":8,"end_line":163,"end_character":18},"in_reply_to":"5f201791_00714c44","updated":"2017-07-01 19:00:12.000000000","message":"fixed","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a1b2381d7ee6cb1a73be762e89974dc8c608f4a1","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                                           dhcp.DHCP_OFFER,"},{"line_number":173,"context_line":"                                                           fake_loprt)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.assertTrue(dhcp_response_pkt)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        dhcp_response \u003d dhcp_response_pkt.get_protocol(dhcp.dhcp)"},{"line_number":178,"context_line":"        self.assertEqual(str(dhcp_response.yiaddr), \u00271.2.3.4\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_00a6ecab","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":42},"updated":"2017-06-28 07:58:19.000000000","message":"What can cause this to be false?","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"da3b00be4d7f84104bb4cbfdab75814729e27e21","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                                           dhcp.DHCP_OFFER,"},{"line_number":173,"context_line":"                                                           fake_loprt)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.assertTrue(dhcp_response_pkt)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        dhcp_response \u003d dhcp_response_pkt.get_protocol(dhcp.dhcp)"},{"line_number":178,"context_line":"        self.assertEqual(str(dhcp_response.yiaddr), \u00271.2.3.4\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_45c7ff13","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":42},"in_reply_to":"5f201791_00a6ecab","updated":"2017-07-01 19:00:12.000000000","message":"Error during response create \n(For example port that not associated to subnet  )","commit_id":"140e46657f7224339c35c0ff4a6e82952c8ebaf6"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"94e0aa0eaad7f899b94efbf3d252f752639e6e90","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        gateway_ip \u003d self.app._get_port_gateway_address("},{"line_number":144,"context_line":"            subnet, test_app_base.fake_local_port1)"},{"line_number":145,"context_line":"        self.assertEqual(\u002710.0.0.1\u0027, str(gateway_ip))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_extra_dhcp_opts_serilization(self):"},{"line_number":148,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":149,"context_line":"        json \u003d fake_lport.to_json()"},{"line_number":150,"context_line":"        loaded_lport \u003d l2.LogicalPort.from_json(json)"},{"line_number":151,"context_line":"        loaded_lport.validate()"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _create_fake_empty_packet(self):"},{"line_number":154,"context_line":"        pkt \u003d ryu_packet.Packet()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f1a1f67_83370e4e","line":151,"range":{"start_line":146,"start_character":0,"end_line":151,"end_character":31},"updated":"2017-07-16 10:34:12.000000000","message":".to_json() executes .validate() pre-serialization, if there\u0027s some flow you think is absent in the framework tests, please check it in a generic way and put it in the framework tests.","commit_id":"cba135502f63fb8d1e5c9d075f00112dd1382ffd"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"b278609874e6a289d04f61e402e9d521cf2b7f97","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        gateway_ip \u003d self.app._get_port_gateway_address("},{"line_number":144,"context_line":"            subnet, test_app_base.fake_local_port1)"},{"line_number":145,"context_line":"        self.assertEqual(\u002710.0.0.1\u0027, str(gateway_ip))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_extra_dhcp_opts_serilization(self):"},{"line_number":148,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":149,"context_line":"        json \u003d fake_lport.to_json()"},{"line_number":150,"context_line":"        loaded_lport \u003d l2.LogicalPort.from_json(json)"},{"line_number":151,"context_line":"        loaded_lport.validate()"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _create_fake_empty_packet(self):"},{"line_number":154,"context_line":"        pkt \u003d ryu_packet.Packet()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f1a1f67_064aecaa","line":151,"range":{"start_line":146,"start_character":0,"end_line":151,"end_character":31},"in_reply_to":"1f1a1f67_83370e4e","updated":"2017-07-16 14:36:37.000000000","message":"I will remove it - \nThis test moved to test_model_fields.py in \n\"Create field type of DhcpOptsDictField\"(I9b24e2968bbef09f5b6b630f6e7a1ba49f3bfef7)","commit_id":"cba135502f63fb8d1e5c9d075f00112dd1382ffd"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"94e0aa0eaad7f899b94efbf3d252f752639e6e90","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                                                           dhcp.DHCP_OFFER,"},{"line_number":174,"context_line":"                                                           fake_lport)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        self.assertTrue(dhcp_response_pkt)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        dhcp_response \u003d dhcp_response_pkt.get_protocol(dhcp.dhcp)"},{"line_number":179,"context_line":"        self.assertEqual(str(dhcp_response.yiaddr), \u00271.2.3.4\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f1a1f67_0343feb0","line":176,"range":{"start_line":176,"start_character":13,"end_line":176,"end_character":23},"updated":"2017-07-16 10:34:12.000000000","message":"I think assertIsNotNone is a better assertion, maybe event compare to the actual expected reply..","commit_id":"cba135502f63fb8d1e5c9d075f00112dd1382ffd"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"b278609874e6a289d04f61e402e9d521cf2b7f97","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                                                           dhcp.DHCP_OFFER,"},{"line_number":174,"context_line":"                                                           fake_lport)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        self.assertTrue(dhcp_response_pkt)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        dhcp_response \u003d dhcp_response_pkt.get_protocol(dhcp.dhcp)"},{"line_number":179,"context_line":"        self.assertEqual(str(dhcp_response.yiaddr), \u00271.2.3.4\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f1a1f67_a6ce982a","line":176,"range":{"start_line":176,"start_character":13,"end_line":176,"end_character":23},"in_reply_to":"1f1a1f67_0343feb0","updated":"2017-07-16 14:36:37.000000000","message":"I think that can be remove as the test will crash on the next lines if it\u0027s None ..(the content validate by the yiaddr)","commit_id":"cba135502f63fb8d1e5c9d075f00112dd1382ffd"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"788accda25607016f5680764642cc3d1e6d5d80e","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from dragonflow.controller.common import constants as const"},{"line_number":23,"context_line":"from dragonflow.tests.unit import test_app_base"},{"line_number":24,"context_line":"from ryu.lib import addrconv"},{"line_number":25,"context_line":"from ryu.lib.packet import dhcp"},{"line_number":26,"context_line":"from ryu.lib.packet import ethernet"},{"line_number":27,"context_line":"from ryu.lib.packet import ipv4"},{"line_number":28,"context_line":"from ryu.lib.packet import packet as ryu_packet"},{"line_number":29,"context_line":"from ryu.ofproto import ether"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Option(object):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1f1a1f67_cc6738b7","line":29,"range":{"start_line":24,"start_character":0,"end_line":29,"end_character":29},"updated":"2017-07-18 14:04:48.000000000","message":"This should go in the second bunch of imports.","commit_id":"112536fa0f7bfa2dc28e628a6c0954b337e940a7"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c79ea031237b5db92a53f052a8a6762a6f88b67c","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from dragonflow.controller.common import constants as const"},{"line_number":23,"context_line":"from dragonflow.tests.unit import test_app_base"},{"line_number":24,"context_line":"from ryu.lib import addrconv"},{"line_number":25,"context_line":"from ryu.lib.packet import dhcp"},{"line_number":26,"context_line":"from ryu.lib.packet import ethernet"},{"line_number":27,"context_line":"from ryu.lib.packet import ipv4"},{"line_number":28,"context_line":"from ryu.lib.packet import packet as ryu_packet"},{"line_number":29,"context_line":"from ryu.ofproto import ether"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Option(object):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1f1a1f67_fa0ba68a","line":29,"range":{"start_line":24,"start_character":0,"end_line":29,"end_character":29},"in_reply_to":"1f1a1f67_cc6738b7","updated":"2017-07-19 07:32:30.000000000","message":"Done","commit_id":"112536fa0f7bfa2dc28e628a6c0954b337e940a7"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"02ae4978d1984d693c9c67f0b79f12d72a88d0a5","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        requested_option_connected \u003d \u0027\u0027.join(requested_option)"},{"line_number":207,"context_line":"        option_list \u003d [dhcp.option(dhcp.DHCP_PARAMETER_REQUEST_LIST_OPT,"},{"line_number":208,"context_line":"                                   requested_option_connected,"},{"line_number":209,"context_line":"                                   len(requested_option)) "},{"line_number":210,"context_line":"                       ]"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        dhcp_response_pkt \u003d self._send_dhcp_req_to_app(fake_lport,"}],"source_content_type":"text/x-python","patch_set":27,"id":"ff346bd7_b7396e42","line":209,"range":{"start_line":209,"start_character":57,"end_line":209,"end_character":58},"updated":"2017-07-24 09:03:39.000000000","message":"remove white-space","commit_id":"67f063e30a56ea2d5ae4692d4b56349d167e288c"}]}
