)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"2c219e67f2a30bef879eb8fbeb369a8a75d55240","unresolved":true,"context_lines":[{"line_number":15,"context_line":"address from the DHCP anymore."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1926515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"d5f5c231_a71f3475","line":20,"range":{"start_line":18,"start_character":45,"end_line":20,"end_character":26},"updated":"2021-05-11 08:42:46.000000000","message":"We have some concerns about the neutron_pg_drop and I filed an RFE [0] to allow configure the default policy and be able to remove such port group. The concern is mainly that on large clusters, this port group have so many ports that every change (add/delete) involves ovsdb-server sending a *large* update message with all the port UUIDs being expensive to send (ASCII).\n\nAnother enhancement in flight is to add support for \u0027update3\u0027 method in OVS python lib which Terry\u0027s working on.\n\nThe approach I used when I first implemented the same functionality that you\u0027re doing now is to use one port group per subnet which would mitigate the problem I just described but makes maintenance and synchronization a bit more complicated (eg. 1:1 mapping between subnet and PG, adding external_ids, db sync code, maintenance task, ...).\n\n[0] https://bugzilla.redhat.com/show_bug.cgi?id\u003d1947807","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"7198b132974a136e4d4d115752c88715d2f047f0","unresolved":true,"context_lines":[{"line_number":15,"context_line":"address from the DHCP anymore."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1926515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7aac7809_66674651","line":20,"range":{"start_line":18,"start_character":45,"end_line":20,"end_character":26},"in_reply_to":"4be153fe_fae1d18a","updated":"2021-05-12 09:17:22.000000000","message":"I\u0027m not a big fan of such configuration knobs. It looks odd to remove the neutron-pg-drop and then introduce a new large PG :) \nIf Terry believes that \u0027update3\u0027 support in OVS Py lib will fix this, I\u0027m totally fine with this approach as, like you say, it\u0027s simple (and neat 😊\n\nCC\u0027Terry :)","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1632e29a837e8646fbe8305eb53eca580bca8e8","unresolved":true,"context_lines":[{"line_number":15,"context_line":"address from the DHCP anymore."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1926515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"4be153fe_fae1d18a","line":20,"range":{"start_line":18,"start_character":45,"end_line":20,"end_character":26},"in_reply_to":"d5f5c231_a71f3475","updated":"2021-05-12 07:54:20.000000000","message":"For now IMO we can go with that one as code is simpler. Maybe we can make it configurable in the feature to make possible turning it off in large scale deployments if that will cause troubles. Wdyt?","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"84dc3550914ccb0046b4fe148bc7358ff85c9e7c","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"e9ee8acc_c9ca6213","line":19,"range":{"start_line":19,"start_character":3,"end_line":19,"end_character":14},"updated":"2021-05-14 12:56:32.000000000","message":"double worded","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"df0a707a08e4c9cb78e94f243da653e623c51dc8","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5015f037_44177d09","line":19,"range":{"start_line":19,"start_character":3,"end_line":19,"end_character":14},"in_reply_to":"e9ee8acc_c9ca6213","updated":"2021-05-17 10:38:12.000000000","message":"Done","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"84dc3550914ccb0046b4fe148bc7358ff85c9e7c","unresolved":true,"context_lines":[{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1926515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"138d7f88_e822c043","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":26},"updated":"2021-05-14 12:56:32.000000000","message":"Just a food for thoughts - we may want to set a default behavior for ACLs when not matched - meaning OVN could start dropping packets and ACLs will be whitelisting because of scale issues with neutron_pg_drop. With the approach in this patch and if OVN implements the functionality we need, we will still remain with one huge PG that will be needed. I don\u0027t have a solution for it, just thinking out loud :)","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"df0a707a08e4c9cb78e94f243da653e623c51dc8","unresolved":true,"context_lines":[{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1926515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5d7012f8_cdd284a3","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":26},"in_reply_to":"138d7f88_e822c043","updated":"2021-05-17 10:38:12.000000000","message":"Than we can go with other approach proposed by Daniel and add such \"allow_dhcp_pg\" per subnet maybe. But for now I\u0027m not sure if that is really needed.","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a851b071e502bfd686945c22d9a05ea1fe868769","unresolved":true,"context_lines":[{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1926515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"01bbb8f4_30a9bb40","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":26},"in_reply_to":"1fa7fc84_4ab0f865","updated":"2021-05-20 04:24:48.000000000","message":"The only problem I saw with the large port group was that when using active/passive replication, it doesn\u0027t even use uodate2 and transmits the whole row with an update message. There is an RFE to fix that. In general the client already uses mutate operations when communicating with ovsdb-server and gets update2 notification back. Update3 is just aodification to the update2 we already use that allows snapshots on reconnects.\n\nThere is probably some overhead when generating the \"old\" row for a notification in the oython-ovs library itself, but nothing going over the wire there.","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"d3fade59d54a69cb133ee3c052bf4fd5ebadace9","unresolved":true,"context_lines":[{"line_number":17,"context_line":"It\u0027s now fixed in the similar way like it is done for e.g. iptables or"},{"line_number":18,"context_line":"openvswitch firewall driver in ML2/OVS case. Extra port group with ACL"},{"line_number":19,"context_line":"to allow allow such DHCP requests is created, it\u0027s very similar to"},{"line_number":20,"context_line":"neutron_pg_drop port group. Next, each port is added to that specific"},{"line_number":21,"context_line":"port group to have allowed egress DHCP requests."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1926515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1fa7fc84_4ab0f865","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":26},"in_reply_to":"5d7012f8_cdd284a3","updated":"2021-05-18 08:22:16.000000000","message":"Kuba\u0027s concern is the same one I showed in a previous review on this patch. Not so long time ago I opened an RFE like:\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d1947807\n\nI expect this to be implemented soon and then we\u0027re going to end up with another big port group... \n\nI already implemented back then the subnet approach, then reverted and we can put it back if needed as I think it\u0027d scale a bit better:\n\nhttps://github.com/openstack/networking-ovn/commit/d5a0de261507192b61f2cdf80a537ceaa0792dc3\n\nShall we consider bringing this code back?\n\nAlso, @Terry, do you see any improvement with the \u0027update3\u0027 support that you\u0027re trying to add to the OVS Python library?","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b58b9ccb85444679c41de08b44bc02db7cb5c3ca","unresolved":true,"context_lines":[{"line_number":280,"context_line":"                else:"},{"line_number":281,"context_line":"                    raise"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _create_neutron_pg_allow_dhcp(self):"},{"line_number":284,"context_line":"        \"\"\"Create neutron_pg_allow_dhcp Port Group."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        The method creates a short living connection to the Northbound"}],"source_content_type":"text/x-python","patch_set":7,"id":"b05b1c8a_43e4dfc9","line":283,"updated":"2021-05-12 14:30:46.000000000","message":"Merge with _create_neutron_pg_drop, re-using the same Idl/connection (which can be modified to match both name\u003d conditions).","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cd3dbc9915e15e430771595839725f129c65470","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                else:"},{"line_number":281,"context_line":"                    raise"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _create_neutron_pg_allow_dhcp(self):"},{"line_number":284,"context_line":"        \"\"\"Create neutron_pg_allow_dhcp Port Group."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        The method creates a short living connection to the Northbound"}],"source_content_type":"text/x-python","patch_set":7,"id":"a1485bee_1bc3d2ef","line":283,"in_reply_to":"b05b1c8a_43e4dfc9","updated":"2021-05-13 08:00:36.000000000","message":"Done","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b58b9ccb85444679c41de08b44bc02db7cb5c3ca","unresolved":true,"context_lines":[{"line_number":318,"context_line":"            return"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self._post_fork_event.clear()"},{"line_number":321,"context_line":"        self._wait_for_pg_drop_event()"},{"line_number":322,"context_line":"        self._ovn_client_inst \u003d None"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        if worker_class \u003d\u003d neutron.wsgi.WorkerService:"}],"source_content_type":"text/x-python","patch_set":7,"id":"a42aed33_7e98bc68","line":321,"range":{"start_line":321,"start_character":8,"end_line":321,"end_character":38},"updated":"2021-05-12 14:30:46.000000000","message":"You need the equivalent of this to actually wait for the port group to be created before continuing. Something needs to call wait() on a WaitEvent for it to do its job. It too could be merged with the existing method, using the same connection.","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cd3dbc9915e15e430771595839725f129c65470","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            return"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self._post_fork_event.clear()"},{"line_number":321,"context_line":"        self._wait_for_pg_drop_event()"},{"line_number":322,"context_line":"        self._ovn_client_inst \u003d None"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        if worker_class \u003d\u003d neutron.wsgi.WorkerService:"}],"source_content_type":"text/x-python","patch_set":7,"id":"67b1214f_b5c69bce","line":321,"range":{"start_line":321,"start_character":8,"end_line":321,"end_character":38},"in_reply_to":"a42aed33_7e98bc68","updated":"2021-05-13 08:00:36.000000000","message":"Done","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"84dc3550914ccb0046b4fe148bc7358ff85c9e7c","unresolved":true,"context_lines":[{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":""},{"line_number":1280,"context_line":"def create_default_port_groups(nb_idl):"},{"line_number":1281,"context_line":"    pgs_to_create \u003d []"},{"line_number":1282,"context_line":"    for pg_name in [ovn_const.OVN_DROP_PORT_GROUP_NAME,"},{"line_number":1283,"context_line":"                    ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME]:"},{"line_number":1284,"context_line":"        if nb_idl.get_port_group(pg_name):"},{"line_number":1285,"context_line":"            LOG.debug(\"Port Group %s already exists\", pg_name)"},{"line_number":1286,"context_line":"            continue"},{"line_number":1287,"context_line":"        pgs_to_create.append(pg_name)"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"    if not pgs_to_create:"},{"line_number":1290,"context_line":"        return"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    with nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1293,"context_line":"        for pg in pgs_to_create:"}],"source_content_type":"text/x-python","patch_set":9,"id":"4eb7b422_9e35b549","line":1290,"range":{"start_line":1281,"start_character":0,"end_line":1290,"end_character":14},"updated":"2021-05-14 12:56:32.000000000","message":"I wonder if we can removed this code completely. There is a big chance somebody else (other workers) creates one of the port groups when starting multiple workers simultaneously. The transaction below should be idempotent.\nOr given that both PGs are created together, we can just check the dhcp one and return if it doesn\u0027t exist because seems like on large scale environment after an update, lines 1302-1307 might be very expensive but on the other hand just executed on the first start after the update.","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ae87c15a86e0a85b62b01b713d01a04c68f70391","unresolved":true,"context_lines":[{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":""},{"line_number":1280,"context_line":"def create_default_port_groups(nb_idl):"},{"line_number":1281,"context_line":"    pgs_to_create \u003d []"},{"line_number":1282,"context_line":"    for pg_name in [ovn_const.OVN_DROP_PORT_GROUP_NAME,"},{"line_number":1283,"context_line":"                    ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME]:"},{"line_number":1284,"context_line":"        if nb_idl.get_port_group(pg_name):"},{"line_number":1285,"context_line":"            LOG.debug(\"Port Group %s already exists\", pg_name)"},{"line_number":1286,"context_line":"            continue"},{"line_number":1287,"context_line":"        pgs_to_create.append(pg_name)"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"    if not pgs_to_create:"},{"line_number":1290,"context_line":"        return"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    with nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1293,"context_line":"        for pg in pgs_to_create:"}],"source_content_type":"text/x-python","patch_set":9,"id":"8dfa7488_f8b3d445","line":1290,"range":{"start_line":1281,"start_character":0,"end_line":1290,"end_character":14},"in_reply_to":"0392fbe8_cdc1a8de","updated":"2021-05-18 08:20:14.000000000","message":"My thought was that introducing 2 groups increases a chance of a race where one PG is created by other starting worker. So then perhaps it\u0027s not worth checking but rather attempt to create the resources with \"if_exists\u003dTrue\" so the transaction would be no-op. Maybe not worth it, I don\u0027t know.","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"df0a707a08e4c9cb78e94f243da653e623c51dc8","unresolved":true,"context_lines":[{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":""},{"line_number":1280,"context_line":"def create_default_port_groups(nb_idl):"},{"line_number":1281,"context_line":"    pgs_to_create \u003d []"},{"line_number":1282,"context_line":"    for pg_name in [ovn_const.OVN_DROP_PORT_GROUP_NAME,"},{"line_number":1283,"context_line":"                    ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME]:"},{"line_number":1284,"context_line":"        if nb_idl.get_port_group(pg_name):"},{"line_number":1285,"context_line":"            LOG.debug(\"Port Group %s already exists\", pg_name)"},{"line_number":1286,"context_line":"            continue"},{"line_number":1287,"context_line":"        pgs_to_create.append(pg_name)"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"    if not pgs_to_create:"},{"line_number":1290,"context_line":"        return"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    with nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1293,"context_line":"        for pg in pgs_to_create:"}],"source_content_type":"text/x-python","patch_set":9,"id":"0392fbe8_cdc1a8de","line":1290,"range":{"start_line":1281,"start_character":0,"end_line":1290,"end_character":14},"in_reply_to":"4eb7b422_9e35b549","updated":"2021-05-17 10:38:12.000000000","message":"I\u0027m not sure if I understand correctly Your comment here. This code is here to avoid executing L1302-1307 if PG exists, which should be the case most of the times, like e.g. after restart of the neutron-server.\nBut it also checks both PGs and if, for any reason only one of them will not be created, it will execute L1302-1307 only for that one PG, not for both.\nSo TBH, I don\u0027t exactly understand why You want to remove that code or check only on PG.","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"84dc3550914ccb0046b4fe148bc7358ff85c9e7c","unresolved":true,"context_lines":[{"line_number":728,"context_line":"            for row in self._tables[\u0027Port_Group\u0027].rows.values():"},{"line_number":729,"context_line":"                name \u003d getattr(row, \u0027name\u0027)"},{"line_number":730,"context_line":"                if not (ovn_const.OVN_SG_EXT_ID_KEY in row.external_ids or"},{"line_number":731,"context_line":"                   name in [ovn_const.OVN_DROP_PORT_GROUP_NAME,"},{"line_number":732,"context_line":"                            ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME]):"},{"line_number":733,"context_line":"                    continue"},{"line_number":734,"context_line":"                data \u003d {}"},{"line_number":735,"context_line":"                for row_key in getattr(row, \"_data\", {}):"}],"source_content_type":"text/x-python","patch_set":9,"id":"0e1ba91e_add8a4aa","line":732,"range":{"start_line":731,"start_character":27,"end_line":732,"end_character":69},"updated":"2021-05-14 12:56:32.000000000","message":"It seems like this list is getting repeated in the code. How about creating a static tuple on module level?","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"df0a707a08e4c9cb78e94f243da653e623c51dc8","unresolved":false,"context_lines":[{"line_number":728,"context_line":"            for row in self._tables[\u0027Port_Group\u0027].rows.values():"},{"line_number":729,"context_line":"                name \u003d getattr(row, \u0027name\u0027)"},{"line_number":730,"context_line":"                if not (ovn_const.OVN_SG_EXT_ID_KEY in row.external_ids or"},{"line_number":731,"context_line":"                   name in [ovn_const.OVN_DROP_PORT_GROUP_NAME,"},{"line_number":732,"context_line":"                            ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME]):"},{"line_number":733,"context_line":"                    continue"},{"line_number":734,"context_line":"                data \u003d {}"},{"line_number":735,"context_line":"                for row_key in getattr(row, \"_data\", {}):"}],"source_content_type":"text/x-python","patch_set":9,"id":"8fe4556b_7ea0c77a","line":732,"range":{"start_line":731,"start_character":27,"end_line":732,"end_character":69},"in_reply_to":"0e1ba91e_add8a4aa","updated":"2021-05-17 10:38:12.000000000","message":"Done","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"2c219e67f2a30bef879eb8fbeb369a8a75d55240","unresolved":true,"context_lines":[{"line_number":559,"context_line":"            if (not utils.is_lsp_trusted(port) and"},{"line_number":560,"context_line":"                    utils.is_port_security_enabled(port)):"},{"line_number":561,"context_line":"                self._add_port_to_drop_port_group(port[\u0027id\u0027], txn)"},{"line_number":562,"context_line":"                self._add_port_to_allow_dhcp_port_group(port[\u0027id\u0027], txn)"},{"line_number":563,"context_line":"            # If the port doesn\u0027t belong to any security group and"},{"line_number":564,"context_line":"            # port_security is disabled, or it\u0027s a trusted port, then"},{"line_number":565,"context_line":"            # allow all traffic."}],"source_content_type":"text/x-python","patch_set":6,"id":"3726aba7_6743734a","line":562,"range":{"start_line":562,"start_character":16,"end_line":562,"end_character":72},"updated":"2021-05-11 08:42:46.000000000","message":"I think this should happen only if the port belongs to a subnet with DHCP enabled, no?","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1632e29a837e8646fbe8305eb53eca580bca8e8","unresolved":true,"context_lines":[{"line_number":559,"context_line":"            if (not utils.is_lsp_trusted(port) and"},{"line_number":560,"context_line":"                    utils.is_port_security_enabled(port)):"},{"line_number":561,"context_line":"                self._add_port_to_drop_port_group(port[\u0027id\u0027], txn)"},{"line_number":562,"context_line":"                self._add_port_to_allow_dhcp_port_group(port[\u0027id\u0027], txn)"},{"line_number":563,"context_line":"            # If the port doesn\u0027t belong to any security group and"},{"line_number":564,"context_line":"            # port_security is disabled, or it\u0027s a trusted port, then"},{"line_number":565,"context_line":"            # allow all traffic."}],"source_content_type":"text/x-python","patch_set":6,"id":"8d0a15a6_452c56e7","line":562,"range":{"start_line":562,"start_character":16,"end_line":562,"end_character":72},"in_reply_to":"3726aba7_6743734a","updated":"2021-05-12 07:54:20.000000000","message":"I\u0027m not sure. E.g. openvswitch firewall adds similar egress rule for all ports. It is possible that some external dhcp will be used and why we should block such requests?","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"2c219e67f2a30bef879eb8fbeb369a8a75d55240","unresolved":true,"context_lines":[{"line_number":567,"context_line":"                  not utils.is_port_security_enabled(port)) or"},{"line_number":568,"context_line":"                  utils.is_lsp_trusted(port)):"},{"line_number":569,"context_line":"                self._del_port_from_drop_port_group(port[\u0027id\u0027], txn)"},{"line_number":570,"context_line":"                self._del_port_from_allow_dhcp_port_group(port[\u0027id\u0027], txn)"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"            self._qos_driver.update_port(txn, port, port_object)"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"74163a47_ad63c1bd","line":570,"range":{"start_line":570,"start_character":16,"end_line":570,"end_character":74},"updated":"2021-05-11 08:42:46.000000000","message":"ditto","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1632e29a837e8646fbe8305eb53eca580bca8e8","unresolved":true,"context_lines":[{"line_number":567,"context_line":"                  not utils.is_port_security_enabled(port)) or"},{"line_number":568,"context_line":"                  utils.is_lsp_trusted(port)):"},{"line_number":569,"context_line":"                self._del_port_from_drop_port_group(port[\u0027id\u0027], txn)"},{"line_number":570,"context_line":"                self._del_port_from_allow_dhcp_port_group(port[\u0027id\u0027], txn)"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"            self._qos_driver.update_port(txn, port, port_object)"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"768c0e3f_6ad344c6","line":570,"range":{"start_line":570,"start_character":16,"end_line":570,"end_character":74},"in_reply_to":"74163a47_ad63c1bd","updated":"2021-05-12 07:54:20.000000000","message":"same here","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"84dc3550914ccb0046b4fe148bc7358ff85c9e7c","unresolved":true,"context_lines":[{"line_number":412,"context_line":"            # add it to the default drop Port Group so that all traffic"},{"line_number":413,"context_line":"            # is dropped by default."},{"line_number":414,"context_line":"            if not utils.is_lsp_trusted(port) or port_info.port_security:"},{"line_number":415,"context_line":"                self._add_port_to_drop_port_group(port_cmd, txn)"},{"line_number":416,"context_line":"                self._add_port_to_allow_dhcp_port_group(port_cmd, txn)"},{"line_number":417,"context_line":"            # Just add the port to its Port Group."},{"line_number":418,"context_line":"            for sg in sg_ids:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fdf54b1a_f65d85c1","line":415,"range":{"start_line":415,"start_character":22,"end_line":415,"end_character":49},"updated":"2021-05-14 12:56:32.000000000","message":"nit: I would have just one method \"add/delete_port_to/from_default_port_groups\" and add the ports in a single transaction there.","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"df0a707a08e4c9cb78e94f243da653e623c51dc8","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            # add it to the default drop Port Group so that all traffic"},{"line_number":413,"context_line":"            # is dropped by default."},{"line_number":414,"context_line":"            if not utils.is_lsp_trusted(port) or port_info.port_security:"},{"line_number":415,"context_line":"                self._add_port_to_drop_port_group(port_cmd, txn)"},{"line_number":416,"context_line":"                self._add_port_to_allow_dhcp_port_group(port_cmd, txn)"},{"line_number":417,"context_line":"            # Just add the port to its Port Group."},{"line_number":418,"context_line":"            for sg in sg_ids:"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87e558_197836df","line":415,"range":{"start_line":415,"start_character":22,"end_line":415,"end_character":49},"in_reply_to":"fdf54b1a_f65d85c1","updated":"2021-05-17 10:38:12.000000000","message":"Done","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_db_sync.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"2c219e67f2a30bef879eb8fbeb369a8a75d55240","unresolved":true,"context_lines":[{"line_number":199,"context_line":"                    if pg in add_pgs:"},{"line_number":200,"context_line":"                        txn.add(self.ovn_api.pg_add(name\u003dpg, acls\u003d[]))"},{"line_number":201,"context_line":"                        add_pgs.remove(pg)"},{"line_number":202,"context_line":"                        # Add ports to the drop port group. Only add those that"},{"line_number":203,"context_line":"                        # already exists in OVN. The rest will be added during"},{"line_number":204,"context_line":"                        # the ports sync operation later."},{"line_number":205,"context_line":"                        for n_port in db_ports:"}],"source_content_type":"text/x-python","patch_set":6,"id":"a7aba24e_001b7a09","line":202,"range":{"start_line":202,"start_character":25,"end_line":202,"end_character":58},"updated":"2021-05-11 08:42:46.000000000","message":"I think this comment doesn\u0027t apply anymore since you\u0027re iterating over two port groups","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e781edafda9ef15cb01d7114adae984def4f069b","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                    if pg in add_pgs:"},{"line_number":200,"context_line":"                        txn.add(self.ovn_api.pg_add(name\u003dpg, acls\u003d[]))"},{"line_number":201,"context_line":"                        add_pgs.remove(pg)"},{"line_number":202,"context_line":"                        # Add ports to the drop port group. Only add those that"},{"line_number":203,"context_line":"                        # already exists in OVN. The rest will be added during"},{"line_number":204,"context_line":"                        # the ports sync operation later."},{"line_number":205,"context_line":"                        for n_port in db_ports:"}],"source_content_type":"text/x-python","patch_set":6,"id":"4ff4f7d1_36f42132","line":202,"range":{"start_line":202,"start_character":25,"end_line":202,"end_character":58},"in_reply_to":"6b09ec00_6dac5bde","updated":"2021-05-14 09:25:47.000000000","message":"++","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1632e29a837e8646fbe8305eb53eca580bca8e8","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                    if pg in add_pgs:"},{"line_number":200,"context_line":"                        txn.add(self.ovn_api.pg_add(name\u003dpg, acls\u003d[]))"},{"line_number":201,"context_line":"                        add_pgs.remove(pg)"},{"line_number":202,"context_line":"                        # Add ports to the drop port group. Only add those that"},{"line_number":203,"context_line":"                        # already exists in OVN. The rest will be added during"},{"line_number":204,"context_line":"                        # the ports sync operation later."},{"line_number":205,"context_line":"                        for n_port in db_ports:"}],"source_content_type":"text/x-python","patch_set":6,"id":"6b09ec00_6dac5bde","line":202,"range":{"start_line":202,"start_character":25,"end_line":202,"end_character":58},"in_reply_to":"a7aba24e_001b7a09","updated":"2021-05-12 07:54:20.000000000","message":"Done","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"2c219e67f2a30bef879eb8fbeb369a8a75d55240","unresolved":true,"context_lines":[{"line_number":206,"context_line":"                            if ((utils.is_security_groups_enabled(n_port) or"},{"line_number":207,"context_line":"                                    utils.is_port_security_enabled(n_port)) and"},{"line_number":208,"context_line":"                                    n_port[\u0027id\u0027] in ovn_ports):"},{"line_number":209,"context_line":"                                txn.add(self.ovn_api.pg_add_ports("},{"line_number":210,"context_line":"                                    pg, n_port[\u0027id\u0027]))"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"                for pg in add_pgs:"},{"line_number":213,"context_line":"                    # If it\u0027s a security group PG, add the ext id"}],"source_content_type":"text/x-python","patch_set":6,"id":"452edcfa_27875497","line":210,"range":{"start_line":209,"start_character":32,"end_line":210,"end_character":54},"updated":"2021-05-11 08:42:46.000000000","message":"You are adding ports with port security or that belong to a SG to the DHCP port group.\nI think that you want to separate the logic and add ports to the latter if and only if they belong to some subnet with DHCP enabled right?","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1632e29a837e8646fbe8305eb53eca580bca8e8","unresolved":true,"context_lines":[{"line_number":206,"context_line":"                            if ((utils.is_security_groups_enabled(n_port) or"},{"line_number":207,"context_line":"                                    utils.is_port_security_enabled(n_port)) and"},{"line_number":208,"context_line":"                                    n_port[\u0027id\u0027] in ovn_ports):"},{"line_number":209,"context_line":"                                txn.add(self.ovn_api.pg_add_ports("},{"line_number":210,"context_line":"                                    pg, n_port[\u0027id\u0027]))"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"                for pg in add_pgs:"},{"line_number":213,"context_line":"                    # If it\u0027s a security group PG, add the ext id"}],"source_content_type":"text/x-python","patch_set":6,"id":"d16feb7d_01ef9c25","line":210,"range":{"start_line":209,"start_character":32,"end_line":210,"end_character":54},"in_reply_to":"452edcfa_27875497","updated":"2021-05-12 07:54:20.000000000","message":"As I said in the previous comments. I\u0027m not sure if we really should limit that only to ports for which neutron provides dhcp. If there is external dhcp used, requests shouldn\u0027t be blocked also.","commit_id":"7e9e2fb868ee8d44694364ae22e4d6bb45a15f3f"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b58b9ccb85444679c41de08b44bc02db7cb5c3ca","unresolved":true,"context_lines":[{"line_number":462,"context_line":"        conditions \u003d ((\u0027name\u0027, \u0027\u003d\u0027, ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME),)"},{"line_number":463,"context_line":"        super(NeutronPgAllowDhcpPortGroupCreated, self).__init__("},{"line_number":464,"context_line":"            events, table, conditions)"},{"line_number":465,"context_line":"        self.event_name \u003d \u0027PortGroupCreated\u0027"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"class OvnDbNotifyHandler(row_event.RowEventHandler):"}],"source_content_type":"text/x-python","patch_set":7,"id":"61001e03_feac0270","line":465,"updated":"2021-05-12 14:30:46.000000000","message":"event_name could be a little misleading, maybe DHCPPortGroupCreated?","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cd3dbc9915e15e430771595839725f129c65470","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        conditions \u003d ((\u0027name\u0027, \u0027\u003d\u0027, ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME),)"},{"line_number":463,"context_line":"        super(NeutronPgAllowDhcpPortGroupCreated, self).__init__("},{"line_number":464,"context_line":"            events, table, conditions)"},{"line_number":465,"context_line":"        self.event_name \u003d \u0027PortGroupCreated\u0027"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"class OvnDbNotifyHandler(row_event.RowEventHandler):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a7e8989_486edea1","line":465,"in_reply_to":"61001e03_feac0270","updated":"2021-05-13 08:00:36.000000000","message":"Done","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b58b9ccb85444679c41de08b44bc02db7cb5c3ca","unresolved":true,"context_lines":[{"line_number":736,"context_line":"        return cls(driver, connection_string, helper)"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"class OvnInitPGAllowDhcpNbIdl(OvnIdl):"},{"line_number":740,"context_line":"    \"\"\"Very limited OVN NB IDL."},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"    This IDL is intended to be used only in initialization phase with short"}],"source_content_type":"text/x-python","patch_set":7,"id":"68ca2f3d_162b3c68","line":739,"updated":"2021-05-12 14:30:46.000000000","message":"I think this can be merged with OvnInitPgNbIdl and just set the cond_change to:\n\n \u0027Port_Group\u0027, [[\u0027name\u0027, \u0027\u003d\u003d\u0027, ovn_const.OVN_DROP_PORT_GROUP_NAME],\n                [\u0027name\u0027, \u0027\u003d\u003d\u0027, ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME]]\n\nand watching both events. That way we don\u0027t have to make two connections.","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e781edafda9ef15cb01d7114adae984def4f069b","unresolved":false,"context_lines":[{"line_number":736,"context_line":"        return cls(driver, connection_string, helper)"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"class OvnInitPGAllowDhcpNbIdl(OvnIdl):"},{"line_number":740,"context_line":"    \"\"\"Very limited OVN NB IDL."},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"    This IDL is intended to be used only in initialization phase with short"}],"source_content_type":"text/x-python","patch_set":7,"id":"bbe12721_02867cdd","line":739,"in_reply_to":"561a9661_674697f7","updated":"2021-05-14 09:25:47.000000000","message":"That\u0027s a great point!","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cd3dbc9915e15e430771595839725f129c65470","unresolved":false,"context_lines":[{"line_number":736,"context_line":"        return cls(driver, connection_string, helper)"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"class OvnInitPGAllowDhcpNbIdl(OvnIdl):"},{"line_number":740,"context_line":"    \"\"\"Very limited OVN NB IDL."},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"    This IDL is intended to be used only in initialization phase with short"}],"source_content_type":"text/x-python","patch_set":7,"id":"561a9661_674697f7","line":739,"in_reply_to":"68ca2f3d_162b3c68","updated":"2021-05-13 08:00:36.000000000","message":"Done","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"84dc3550914ccb0046b4fe148bc7358ff85c9e7c","unresolved":true,"context_lines":[{"line_number":459,"context_line":"    def __init__(self):"},{"line_number":460,"context_line":"        table \u003d \u0027Port_Group\u0027"},{"line_number":461,"context_line":"        events \u003d (self.ROW_CREATE,)"},{"line_number":462,"context_line":"        conditions \u003d ((\u0027name\u0027, \u0027\u003d\u0027, ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME),)"},{"line_number":463,"context_line":"        super(NeutronPgAllowDhcpPortGroupCreated, self).__init__("},{"line_number":464,"context_line":"            events, table, conditions)"},{"line_number":465,"context_line":"        self.event_name \u003d \u0027DHCPPortGroupCreated\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"59891cda_f45f719f","line":462,"range":{"start_line":462,"start_character":36,"end_line":462,"end_character":76},"updated":"2021-05-14 12:56:32.000000000","message":"How about making this a parameter in init and have just one class for the PortGroupCreate event and two instances?","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"df0a707a08e4c9cb78e94f243da653e623c51dc8","unresolved":false,"context_lines":[{"line_number":459,"context_line":"    def __init__(self):"},{"line_number":460,"context_line":"        table \u003d \u0027Port_Group\u0027"},{"line_number":461,"context_line":"        events \u003d (self.ROW_CREATE,)"},{"line_number":462,"context_line":"        conditions \u003d ((\u0027name\u0027, \u0027\u003d\u0027, ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME),)"},{"line_number":463,"context_line":"        super(NeutronPgAllowDhcpPortGroupCreated, self).__init__("},{"line_number":464,"context_line":"            events, table, conditions)"},{"line_number":465,"context_line":"        self.event_name \u003d \u0027DHCPPortGroupCreated\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"d3f63f12_b93e344b","line":462,"range":{"start_line":462,"start_character":36,"end_line":462,"end_character":76},"in_reply_to":"59891cda_f45f719f","updated":"2021-05-17 10:38:12.000000000","message":"Done","commit_id":"4442cc5c1d0e72bdd2938d87ceeddce8b39dac43"}],"neutron/tests/unit/common/ovn/test_acl.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b58b9ccb85444679c41de08b44bc02db7cb5c3ca","unresolved":true,"context_lines":[{"line_number":76,"context_line":"            if \u0027from-lport\u0027 in acl.values():"},{"line_number":77,"context_line":"                self.assertEqual(acl_from_lport, acl)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_add_acl_for_allow_dhcp_port_group(self):"},{"line_number":80,"context_line":"        ovn_dhcp_acl \u003d ovn_acl.add_acl_for_allow_dhcp_port_group("},{"line_number":81,"context_line":"            ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"45d16986_c95431e6","line":79,"updated":"2021-05-12 14:30:46.000000000","message":"This test just seems like writing the code twice and seeing if it matches. I don\u0027t think it actually buys us anything.","commit_id":"ef830f846932148216227807e1debec8138ea420"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cd3dbc9915e15e430771595839725f129c65470","unresolved":true,"context_lines":[{"line_number":76,"context_line":"            if \u0027from-lport\u0027 in acl.values():"},{"line_number":77,"context_line":"                self.assertEqual(acl_from_lport, acl)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_add_acl_for_allow_dhcp_port_group(self):"},{"line_number":80,"context_line":"        ovn_dhcp_acl \u003d ovn_acl.add_acl_for_allow_dhcp_port_group("},{"line_number":81,"context_line":"            ovn_const.OVN_ALLOW_DHCP_PORT_GROUP_NAME)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"f5ab45f6_5226f391","line":79,"in_reply_to":"45d16986_c95431e6","updated":"2021-05-13 08:00:36.000000000","message":"right, removed","commit_id":"ef830f846932148216227807e1debec8138ea420"}]}
