)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7b5e6c1bf2d52d5da0c683f87c003ecffc197683","unresolved":false,"context_lines":[{"line_number":16,"context_line":"This patch also sync with the latest supported DHCP options from OVN and"},{"line_number":17,"context_line":"create a map between the different names and option codes to their OVN"},{"line_number":18,"context_line":"counterpart. Two options that were present in the list of the supported"},{"line_number":19,"context_line":"options are no longer (or never been!?) supported by OVN, these options"},{"line_number":20,"context_line":"are: arp-timeout and tcp-keepalive."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1874282"},{"line_number":23,"context_line":"Change-Id: I99799e54e941cdd8da2614feecad1ef6299703fc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f493fa4_352a9b8f","line":20,"range":{"start_line":19,"start_character":58,"end_line":20,"end_character":34},"updated":"2020-04-23 14:35:13.000000000","message":"fwiw, I\u0027ve submitted a patch to OVN including these options: https://patchwork.ozlabs.org/project/openvswitch/patch/20200423143227.56543-1-lmartins@redhat.com/","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42573a91c3c4678705284010ae9fbd56896c03dc","unresolved":false,"context_lines":[{"line_number":16,"context_line":"This patch also sync with the latest supported DHCP options from OVN and"},{"line_number":17,"context_line":"create a map between the different names and option codes to their OVN"},{"line_number":18,"context_line":"counterpart. Two options that were present in the list of the supported"},{"line_number":19,"context_line":"options are no longer (or never been!?) supported by OVN, these options"},{"line_number":20,"context_line":"are: arp-timeout and tcp-keepalive."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1874282"},{"line_number":23,"context_line":"Change-Id: I99799e54e941cdd8da2614feecad1ef6299703fc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f493fa4_30958941","line":20,"range":{"start_line":19,"start_character":58,"end_line":20,"end_character":34},"in_reply_to":"1f493fa4_352a9b8f","updated":"2020-04-23 14:51:50.000000000","message":"To clarify, once this patch is merged in OVN I will re-add these two options (either in this patch or in a follow up).\n\nBut as for right now, with the code existing in the master branch of OVN neither of these options are supported. That\u0027s why I\u0027m removing them in this patch.","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f44a63344564b22029c3d7911c54316ce0643c1f","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch now adds such validations on port creation and update."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch also sync with the latest supported DHCP options from OVN and"},{"line_number":17,"context_line":"create a map between the different names and option codes to their OVN"},{"line_number":18,"context_line":"counterpart."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Closes-bug: #1874282"},{"line_number":21,"context_line":"Change-Id: I99799e54e941cdd8da2614feecad1ef6299703fc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ff570b3c_9faadb16","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":12},"updated":"2020-05-25 09:54:48.000000000","message":"Just an open question :) How do we want to keep this up-to-date? Maybe we can put on some release checklist to sync the options so on each upstream release, we\u0027re aligned with the used OVN version?\n\nIt kinda sucks the options are generated from macros in OVN, we could have used ctypes to generate the map dynamically from OVN compiled library.","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7124ded64a5f528b9462d372c1c005a3676ff538","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch now adds such validations on port creation and update."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch also sync with the latest supported DHCP options from OVN and"},{"line_number":17,"context_line":"create a map between the different names and option codes to their OVN"},{"line_number":18,"context_line":"counterpart."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Closes-bug: #1874282"},{"line_number":21,"context_line":"Change-Id: I99799e54e941cdd8da2614feecad1ef6299703fc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ff570b3c_8a69f78c","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":12},"in_reply_to":"ff570b3c_9faadb16","updated":"2020-05-25 10:07:56.000000000","message":"Yeah we currently have no mechanism in place, core OVN doesn\u0027t expose the supported DHCP options in any way we can consume from this driver. That said, Daniel in another comment in this patch was suggesting implementing such command/API in core OVN which I think it would be great but, I would suggest doing that as a follow up from this.","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"}],"doc/source/ovn/dhcp_opts.rst":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"0475ba67776c12c95b8a7660b167a884e631f432","unresolved":false,"context_lines":[{"line_number":9,"context_line":"~~~~~~~~~~~~"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":12,"context_line":"Option name / code         OVN value"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":"netmask                    netmask"},{"line_number":15,"context_line":"router                     router"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1f493fa4_26dd5370","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":6},"updated":"2020-04-23 15:45:23.000000000","message":"Does this list have any order?","commit_id":"8ec32a75c3b1de8c6ff9a2680b65ce4da9c816f4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"188e40ca82292684d0f225f88e99a727c7d48697","unresolved":false,"context_lines":[{"line_number":9,"context_line":"~~~~~~~~~~~~"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":12,"context_line":"Option name / code         OVN value"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":"netmask                    netmask"},{"line_number":15,"context_line":"router                     router"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1f493fa4_e5688088","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":6},"in_reply_to":"1f493fa4_26dd5370","updated":"2020-04-23 16:54:31.000000000","message":"not really, I can sort it tho","commit_id":"8ec32a75c3b1de8c6ff9a2680b65ce4da9c816f4"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"78724c5117e81cab0f72e7cb36a110a5ffe852ab","unresolved":false,"context_lines":[{"line_number":9,"context_line":"~~~~~~~~~~~~"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":12,"context_line":"Option name / code         OVN value"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":"netmask                    netmask"},{"line_number":15,"context_line":"router                     router"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1f493fa4_1364c5e3","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":6},"in_reply_to":"1f493fa4_e5688088","updated":"2020-04-24 08:24:51.000000000","message":"If I happen to send a new patch-set I will sort the order here","commit_id":"8ec32a75c3b1de8c6ff9a2680b65ce4da9c816f4"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"a803e872c1fdbf2cea27fd4805552c877dfc116b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":12,"context_line":"Option name / code         OVN value"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":"arp-timeout                arp_cache_timeout"},{"line_number":15,"context_line":"bootfile-name              bootfile_name"},{"line_number":16,"context_line":"classless-static-route     classless_static_route"},{"line_number":17,"context_line":"default-ttl                default_ttl"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1f493fa4_8af9aa81","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":3},"updated":"2020-05-08 08:50:33.000000000","message":"A lot of satisfaction seeing this sorted :)!","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6321f6c4f6be39a475d4e64849c12eebe5a01d8f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":12,"context_line":"Option name / code         OVN value"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":"arp-timeout                arp_cache_timeout"},{"line_number":15,"context_line":"bootfile-name              bootfile_name"},{"line_number":16,"context_line":"classless-static-route     classless_static_route"},{"line_number":17,"context_line":"default-ttl                default_ttl"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1f493fa4_ca21f2fd","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":3},"in_reply_to":"1f493fa4_8af9aa81","updated":"2020-05-08 08:52:41.000000000","message":"lol","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"}],"neutron/common/ovn/constants.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"42fac1a042af457a13ddfae325aa3a8a587af2d9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"# the related documentation at doc/source/ovn/dhcp_opts.rst"},{"line_number":95,"context_line":"#"},{"line_number":96,"context_line":"# Mappping between Neutron option names and OVN ones"},{"line_number":97,"context_line":"SUPPORTED_DHCP_OPTS_MAPPING \u003d {"},{"line_number":98,"context_line":"    4: {\u0027netmask\u0027: \u0027netmask\u0027,"},{"line_number":99,"context_line":"        \u0027router\u0027: \u0027router\u0027,"},{"line_number":100,"context_line":"        \u0027dns-server\u0027: \u0027dns_server\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_109e8d53","line":97,"range":{"start_line":97,"start_character":0,"end_line":97,"end_character":27},"updated":"2020-04-23 14:58:26.000000000","message":"So once [0] merges in ovn, we can add these options to the list:\n\n* Option 35, ARP timeout\n* Option 38, TCP Keepalive interval\n\n[0] https://patchwork.ozlabs.org/project/openvswitch/patch/20200423143227.56543-1-lmartins@redhat.com/","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b5f87795eac0b9734c07e0c8a97a8dd290539837","unresolved":false,"context_lines":[{"line_number":94,"context_line":"# the related documentation at doc/source/ovn/dhcp_opts.rst"},{"line_number":95,"context_line":"#"},{"line_number":96,"context_line":"# Mappping between Neutron option names and OVN ones"},{"line_number":97,"context_line":"SUPPORTED_DHCP_OPTS_MAPPING \u003d {"},{"line_number":98,"context_line":"    4: {\u0027netmask\u0027: \u0027netmask\u0027,"},{"line_number":99,"context_line":"        \u0027router\u0027: \u0027router\u0027,"},{"line_number":100,"context_line":"        \u0027dns-server\u0027: \u0027dns_server\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_f05cc17f","line":97,"range":{"start_line":97,"start_character":0,"end_line":97,"end_character":27},"in_reply_to":"1f493fa4_109e8d53","updated":"2020-04-23 15:01:02.000000000","message":"Yes!\n\nSince this patch is reflecting the current state of the DHCP options, I thought it would be bad form to leave these two options in since they are not in OVN at the time I\u0027m writing this patch :D","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"a803e872c1fdbf2cea27fd4805552c877dfc116b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"# unhosted router gateways to schedule."},{"line_number":88,"context_line":"OVN_GATEWAY_INVALID_CHASSIS \u003d \u0027neutron-ovn-invalid-chassis\u0027"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# NOTE(lucasagomes): These options were last synced from"},{"line_number":91,"context_line":"# https://github.com/ovn-org/ovn/blob/feb5d6e81d5a0290aa3618a229c860d01200422e/lib/ovn-l7.h"},{"line_number":92,"context_line":"#"},{"line_number":93,"context_line":"# NOTE(lucasagomes): Whenever we update these lists please also update"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_4a0e828d","line":90,"range":{"start_line":90,"start_character":21,"end_line":90,"end_character":56},"updated":"2020-05-08 08:50:33.000000000","message":"I wonder if it\u0027d be possible to have an ovn-appctl command to fetch the options upon connection to the dbs","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6321f6c4f6be39a475d4e64849c12eebe5a01d8f","unresolved":false,"context_lines":[{"line_number":87,"context_line":"# unhosted router gateways to schedule."},{"line_number":88,"context_line":"OVN_GATEWAY_INVALID_CHASSIS \u003d \u0027neutron-ovn-invalid-chassis\u0027"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# NOTE(lucasagomes): These options were last synced from"},{"line_number":91,"context_line":"# https://github.com/ovn-org/ovn/blob/feb5d6e81d5a0290aa3618a229c860d01200422e/lib/ovn-l7.h"},{"line_number":92,"context_line":"#"},{"line_number":93,"context_line":"# NOTE(lucasagomes): Whenever we update these lists please also update"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_6a225e03","line":90,"range":{"start_line":90,"start_character":21,"end_line":90,"end_character":56},"in_reply_to":"1f493fa4_4a0e828d","updated":"2020-05-08 08:52:41.000000000","message":"I\u0027m not aware of anything in core OVN/OVS that can do it at the moment. The options lives in a header file (see the link at L91)","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"0b743681c9446b9d42c8bae2251df6665866e008","unresolved":false,"context_lines":[{"line_number":87,"context_line":"# unhosted router gateways to schedule."},{"line_number":88,"context_line":"OVN_GATEWAY_INVALID_CHASSIS \u003d \u0027neutron-ovn-invalid-chassis\u0027"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# NOTE(lucasagomes): These options were last synced from"},{"line_number":91,"context_line":"# https://github.com/ovn-org/ovn/blob/feb5d6e81d5a0290aa3618a229c860d01200422e/lib/ovn-l7.h"},{"line_number":92,"context_line":"#"},{"line_number":93,"context_line":"# NOTE(lucasagomes): Whenever we update these lists please also update"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_a3548ccb","line":90,"range":{"start_line":90,"start_character":21,"end_line":90,"end_character":56},"in_reply_to":"1f493fa4_6a225e03","updated":"2020-05-08 15:29:39.000000000","message":"Yeah... thinking that it might be useful in the future so that we can retrieve the capabilities without relying on \u0027importing\u0027 this manually every now and then","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"}],"neutron/common/ovn/utils.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"42fac1a042af457a13ddfae325aa3a8a587af2d9","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    \"\"\"Validate port\u0027s extra DHCP options."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    :param port: A neutron port."},{"line_number":119,"context_line":"    :returns: tuple of Boolean indicating that validation succeeded (True"},{"line_number":120,"context_line":"              meaning success), dictionary of non-supported options."},{"line_number":121,"context_line":"    \"\"\""},{"line_number":122,"context_line":"    not_supported \u003d {4: [], 6: []}"},{"line_number":123,"context_line":"    for edo in port.get(edo_ext.EXTRADHCPOPTS, []):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_907c5dec","line":120,"range":{"start_line":119,"start_character":14,"end_line":120,"end_character":68},"updated":"2020-04-23 14:58:26.000000000","message":"Can\u0027t we just return the dict and if it\u0027s empty we can assume that the validation\u0027s fine?","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b5f87795eac0b9734c07e0c8a97a8dd290539837","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    \"\"\"Validate port\u0027s extra DHCP options."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    :param port: A neutron port."},{"line_number":119,"context_line":"    :returns: tuple of Boolean indicating that validation succeeded (True"},{"line_number":120,"context_line":"              meaning success), dictionary of non-supported options."},{"line_number":121,"context_line":"    \"\"\""},{"line_number":122,"context_line":"    not_supported \u003d {4: [], 6: []}"},{"line_number":123,"context_line":"    for edo in port.get(edo_ext.EXTRADHCPOPTS, []):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_7050b15e","line":120,"range":{"start_line":119,"start_character":14,"end_line":120,"end_character":68},"in_reply_to":"1f493fa4_907c5dec","updated":"2020-04-23 15:01:02.000000000","message":"Yeah, I think the dict format is kind crap indeed hehe... I will make it better","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"42fac1a042af457a13ddfae325aa3a8a587af2d9","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    :returns: tuple of Boolean indicating that validation succeeded (True"},{"line_number":120,"context_line":"              meaning success), dictionary of non-supported options."},{"line_number":121,"context_line":"    \"\"\""},{"line_number":122,"context_line":"    not_supported \u003d {4: [], 6: []}"},{"line_number":123,"context_line":"    for edo in port.get(edo_ext.EXTRADHCPOPTS, []):"},{"line_number":124,"context_line":"        ip_version \u003d edo[\u0027ip_version\u0027]"},{"line_number":125,"context_line":"        opt_name \u003d edo[\u0027opt_name\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_b014f9a1","line":122,"range":{"start_line":122,"start_character":1,"end_line":122,"end_character":34},"updated":"2020-04-23 14:58:26.000000000","message":"Better use: https://github.com/openstack/neutron-lib/blob/master/neutron_lib/constants.py#L89 ?","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b5f87795eac0b9734c07e0c8a97a8dd290539837","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    :returns: tuple of Boolean indicating that validation succeeded (True"},{"line_number":120,"context_line":"              meaning success), dictionary of non-supported options."},{"line_number":121,"context_line":"    \"\"\""},{"line_number":122,"context_line":"    not_supported \u003d {4: [], 6: []}"},{"line_number":123,"context_line":"    for edo in port.get(edo_ext.EXTRADHCPOPTS, []):"},{"line_number":124,"context_line":"        ip_version \u003d edo[\u0027ip_version\u0027]"},{"line_number":125,"context_line":"        opt_name \u003d edo[\u0027opt_name\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_10516d63","line":122,"range":{"start_line":122,"start_character":1,"end_line":122,"end_character":34},"in_reply_to":"1f493fa4_b014f9a1","updated":"2020-04-23 15:01:02.000000000","message":"oh ++","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"00171ca20d84838f2ebec693f894ce5b35b045b6","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # If DHCP is disabled for this port via this special option,"},{"line_number":131,"context_line":"        # always succeed the validation"},{"line_number":132,"context_line":"        if (opt_name \u003d\u003d \u0027dhcp_disabled\u0027 and"},{"line_number":133,"context_line":"                edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"},{"line_number":134,"context_line":"            failed \u003d False"},{"line_number":135,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_a300f5ac","line":132,"range":{"start_line":132,"start_character":25,"end_line":132,"end_character":38},"updated":"2020-04-27 13:22:46.000000000","message":"I\u0027m thinking if this could be constant.","commit_id":"ade1044522e04bb12c8e2643bcfabc2520a69012"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8536e8239cb298fd9eb4b788b5b67008c41cb758","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # If DHCP is disabled for this port via this special option,"},{"line_number":131,"context_line":"        # always succeed the validation"},{"line_number":132,"context_line":"        if (opt_name \u003d\u003d \u0027dhcp_disabled\u0027 and"},{"line_number":133,"context_line":"                edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"},{"line_number":134,"context_line":"            failed \u003d False"},{"line_number":135,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_b8d809ef","line":132,"range":{"start_line":132,"start_character":25,"end_line":132,"end_character":38},"in_reply_to":"1f493fa4_a300f5ac","updated":"2020-04-28 09:06:14.000000000","message":"True, will do it","commit_id":"ade1044522e04bb12c8e2643bcfabc2520a69012"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f44a63344564b22029c3d7911c54316ce0643c1f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        opt_name \u003d edo[\u0027opt_name\u0027]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # If DHCP is disabled for this port via this special option,"},{"line_number":131,"context_line":"        # always succeed the validation"},{"line_number":132,"context_line":"        if (opt_name \u003d\u003d constants.DHCP_DISABLED_OPT and"},{"line_number":133,"context_line":"                edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"},{"line_number":134,"context_line":"            failed \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_4a37dfe4","line":131,"updated":"2020-05-25 09:54:48.000000000","message":"So what if we have a port that exists from some older deployment that didn\u0027t have this fix and has an option that disables the dhcp on port and then has another dhcp option that is wrong. We will skip the wrong one here. Am I being too paranoid? Yes I am. :)","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7124ded64a5f528b9462d372c1c005a3676ff538","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        opt_name \u003d edo[\u0027opt_name\u0027]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # If DHCP is disabled for this port via this special option,"},{"line_number":131,"context_line":"        # always succeed the validation"},{"line_number":132,"context_line":"        if (opt_name \u003d\u003d constants.DHCP_DISABLED_OPT and"},{"line_number":133,"context_line":"                edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"},{"line_number":134,"context_line":"            failed \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_6ae5830a","line":131,"in_reply_to":"ff570b3c_4a37dfe4","updated":"2020-05-25 10:07:56.000000000","message":"Just to be clear, this \"special\" option for disabling the DHCP already existed[0], my patch doesn\u0027t change that.\n\nYeah we will skip the wrong one but, even before that option wouldn\u0027t work in core OVN anyway. So, I mean the option will be set in Neutron but it will continue to have no effect (just like before).\n\n[0] I was even surprised because I didn\u0027t know about it either :D","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"8a6e2ebbfe982ef62a593a58d33284e52af8cdba","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        opt_name \u003d edo[\u0027opt_name\u0027]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # If DHCP is disabled for this port via this special option,"},{"line_number":131,"context_line":"        # always succeed the validation"},{"line_number":132,"context_line":"        if (opt_name \u003d\u003d constants.DHCP_DISABLED_OPT and"},{"line_number":133,"context_line":"                edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"},{"line_number":134,"context_line":"            failed \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_4a687f20","line":131,"in_reply_to":"ff570b3c_6ae5830a","updated":"2020-05-25 10:26:14.000000000","message":"Gotcha, thanks for explanation.","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f44a63344564b22029c3d7911c54316ce0643c1f","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            if edo[\u0027ip_version\u0027] !\u003d ip_version:"},{"line_number":157,"context_line":"                continue"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            mapping \u003d constants.SUPPORTED_DHCP_OPTS_MAPPING[ip_version]"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"            if (edo[\u0027opt_name\u0027] \u003d\u003d constants.DHCP_DISABLED_OPT and"},{"line_number":162,"context_line":"                    edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_9f065b20","line":159,"updated":"2020-05-25 09:54:48.000000000","message":"Can this be moved to L155? It\u0027s a loop invariant. The mappings is static so we don\u0027t need to retrieve it per every dhcp option on port, do we?","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7124ded64a5f528b9462d372c1c005a3676ff538","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            if edo[\u0027ip_version\u0027] !\u003d ip_version:"},{"line_number":157,"context_line":"                continue"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            mapping \u003d constants.SUPPORTED_DHCP_OPTS_MAPPING[ip_version]"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"            if (edo[\u0027opt_name\u0027] \u003d\u003d constants.DHCP_DISABLED_OPT and"},{"line_number":162,"context_line":"                    edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_0aba07dd","line":159,"in_reply_to":"ff570b3c_9f065b20","updated":"2020-05-25 10:07:56.000000000","message":"++","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f44a63344564b22029c3d7911c54316ce0643c1f","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            mapping \u003d constants.SUPPORTED_DHCP_OPTS_MAPPING[ip_version]"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"            if (edo[\u0027opt_name\u0027] \u003d\u003d constants.DHCP_DISABLED_OPT and"},{"line_number":162,"context_line":"                    edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"},{"line_number":163,"context_line":"                # OVN native DHCP is disabled on this port"},{"line_number":164,"context_line":"                lsp_dhcp_disabled \u003d True"},{"line_number":165,"context_line":"                # Make sure return value behavior not depends on the order and"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_aa1b1b71","line":162,"range":{"start_line":161,"start_character":16,"end_line":162,"end_character":62},"updated":"2020-05-25 09:54:48.000000000","message":"nit: This repeats on L132, so maybe a function would make code a bit more readable, like:\n\n def is_dhcp_disabled(edo):\n     return (edo[\u0027opt_name\u0027] \u003d\u003d constants.DHCP_DISABLED_OPT and\n             edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027)\n\n\n...\n\n if is_dhcp_disabled(edo):\n     ...","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7124ded64a5f528b9462d372c1c005a3676ff538","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            mapping \u003d constants.SUPPORTED_DHCP_OPTS_MAPPING[ip_version]"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"            if (edo[\u0027opt_name\u0027] \u003d\u003d constants.DHCP_DISABLED_OPT and"},{"line_number":162,"context_line":"                    edo.get(\u0027opt_value\u0027, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027):"},{"line_number":163,"context_line":"                # OVN native DHCP is disabled on this port"},{"line_number":164,"context_line":"                lsp_dhcp_disabled \u003d True"},{"line_number":165,"context_line":"                # Make sure return value behavior not depends on the order and"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_aac83b74","line":162,"range":{"start_line":161,"start_character":16,"end_line":162,"end_character":62},"in_reply_to":"ff570b3c_aa1b1b71","updated":"2020-05-25 10:07:56.000000000","message":"That\u0027s right I can do it yes","commit_id":"b0a08925126d51ce7f550bbc9f80d8b1c7df14c0"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"42fac1a042af457a13ddfae325aa3a8a587af2d9","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        ipv4_opts \u003d \u0027, \u0027.join(not_supported[4])"},{"line_number":443,"context_line":"        ipv6_opts \u003d \u0027, \u0027.join(not_supported[6])"},{"line_number":444,"context_line":"        msg \u003d (_(\u0027The following extra DHCP options for port %(port_id)s \u0027"},{"line_number":445,"context_line":"                 \u0027is not supported by OVN. IPv4: \"%(ipv4_opts)s\" and \u0027"},{"line_number":446,"context_line":"                 \u0027IPv6: \"%(ipv6_opts)s\"\u0027) %"},{"line_number":447,"context_line":"               {\u0027port_id\u0027: port[\u0027id\u0027], \u0027ipv4_opts\u0027: ipv4_opts,"},{"line_number":448,"context_line":"                \u0027ipv6_opts\u0027: ipv6_opts})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_d0b9c5e9","line":445,"range":{"start_line":445,"start_character":18,"end_line":445,"end_character":20},"updated":"2020-04-23 14:58:26.000000000","message":"nit: are","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b5f87795eac0b9734c07e0c8a97a8dd290539837","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        ipv4_opts \u003d \u0027, \u0027.join(not_supported[4])"},{"line_number":443,"context_line":"        ipv6_opts \u003d \u0027, \u0027.join(not_supported[6])"},{"line_number":444,"context_line":"        msg \u003d (_(\u0027The following extra DHCP options for port %(port_id)s \u0027"},{"line_number":445,"context_line":"                 \u0027is not supported by OVN. IPv4: \"%(ipv4_opts)s\" and \u0027"},{"line_number":446,"context_line":"                 \u0027IPv6: \"%(ipv6_opts)s\"\u0027) %"},{"line_number":447,"context_line":"               {\u0027port_id\u0027: port[\u0027id\u0027], \u0027ipv4_opts\u0027: ipv4_opts,"},{"line_number":448,"context_line":"                \u0027ipv6_opts\u0027: ipv6_opts})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_30dbc9ed","line":445,"range":{"start_line":445,"start_character":18,"end_line":445,"end_character":20},"in_reply_to":"1f493fa4_d0b9c5e9","updated":"2020-04-23 15:01:02.000000000","message":"++","commit_id":"c01f247690c5e58f8b7b0b47382951e2ee1307fc"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"00171ca20d84838f2ebec693f894ce5b35b045b6","unresolved":false,"context_lines":[{"line_number":448,"context_line":"                \u0027ipv6_opts\u0027: ipv6_opts})"},{"line_number":449,"context_line":"        raise OVNPortUpdateError(resource\u003d\u0027port\u0027, msg\u003dmsg)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def create_port_precommit(self, context):"},{"line_number":452,"context_line":"        \"\"\"Allocate resources for a new port."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        :param context: PortContext instance describing the port."}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_634c2d42","line":451,"range":{"start_line":451,"start_character":8,"end_line":451,"end_character":29},"updated":"2020-04-27 13:22:46.000000000","message":"Can we try to add ut/ft to mechanism_driver tests that will try to add a port with not valid option? Just to be sure that it raised and port hasn\u0027t been created.","commit_id":"ade1044522e04bb12c8e2643bcfabc2520a69012"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8536e8239cb298fd9eb4b788b5b67008c41cb758","unresolved":false,"context_lines":[{"line_number":448,"context_line":"                \u0027ipv6_opts\u0027: ipv6_opts})"},{"line_number":449,"context_line":"        raise OVNPortUpdateError(resource\u003d\u0027port\u0027, msg\u003dmsg)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def create_port_precommit(self, context):"},{"line_number":452,"context_line":"        \"\"\"Allocate resources for a new port."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        :param context: PortContext instance describing the port."}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_18e2dda0","line":451,"range":{"start_line":451,"start_character":8,"end_line":451,"end_character":29},"in_reply_to":"1f493fa4_634c2d42","updated":"2020-04-28 09:06:14.000000000","message":"++","commit_id":"ade1044522e04bb12c8e2643bcfabc2520a69012"}]}
