)]}'
{"networking_ovn/common/acl.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ff1293e55e449b462749a7e655df2c9632ed314a","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                     \u0027udp \u0026\u0026 udp.src \u003d\u003d 68 \u0026\u0026 udp.dst \u003d\u003d 67\u0027"},{"line_number":191,"context_line":"                     ) % (pg_name, subnet[\u0027cidr\u0027])}"},{"line_number":192,"context_line":"    acl_list.append(acl)"},{"line_number":193,"context_line":"    if not _acl_columns_name_severity_supported(ovn):"},{"line_number":194,"context_line":"        for acl in acl_list:"},{"line_number":195,"context_line":"            acl.pop(\u0027name\u0027)"},{"line_number":196,"context_line":"            acl.pop(\u0027severity\u0027)"},{"line_number":197,"context_line":"    return acl_list"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"def drop_all_ip_traffic_for_port(port):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_6a84080c","line":196,"range":{"start_line":193,"start_character":0,"end_line":196,"end_character":31},"updated":"2018-06-19 14:30:38.000000000","message":"This check is not needed, if the port_group table exists this two columns should also be present in the schema.","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"347eb1948c6d6b581be8914b4256a2faa6f71aaa","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                     \u0027udp \u0026\u0026 udp.src \u003d\u003d 68 \u0026\u0026 udp.dst \u003d\u003d 67\u0027"},{"line_number":191,"context_line":"                     ) % (pg_name, subnet[\u0027cidr\u0027])}"},{"line_number":192,"context_line":"    acl_list.append(acl)"},{"line_number":193,"context_line":"    if not _acl_columns_name_severity_supported(ovn):"},{"line_number":194,"context_line":"        for acl in acl_list:"},{"line_number":195,"context_line":"            acl.pop(\u0027name\u0027)"},{"line_number":196,"context_line":"            acl.pop(\u0027severity\u0027)"},{"line_number":197,"context_line":"    return acl_list"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"def drop_all_ip_traffic_for_port(port):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_1cb95dca","line":196,"range":{"start_line":193,"start_character":0,"end_line":196,"end_character":31},"in_reply_to":"5f7c97a3_6a84080c","updated":"2018-06-28 15:55:03.000000000","message":"Done","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2a2e3ac43e70c05d056c770e2455948ba4667ab8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    else:"},{"line_number":64,"context_line":"        portdir \u003d \u0027inport\u0027"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    if port:"},{"line_number":67,"context_line":"        return \u0027%s \u003d\u003d \"%s\"\u0027 % (portdir, port[\u0027id\u0027])"},{"line_number":68,"context_line":"    return \u0027%s \u003d\u003d @%s\u0027 % (portdir, port_group)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def acl_ethertype(r):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_25956733","line":68,"range":{"start_line":66,"start_character":0,"end_line":68,"end_character":46},"updated":"2018-08-15 06:46:13.000000000","message":"Nit:Minor change, might save one line :P\n\n  port \u003d port[\u0027id\u0027] if port else port_group\n  return \u0027%s \u003d\u003d @%s\u0027 % (portdir, port)","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c98c6581a6aa39e3ff574f272882629dfe730fc4","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    else:"},{"line_number":64,"context_line":"        portdir \u003d \u0027inport\u0027"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    if port:"},{"line_number":67,"context_line":"        return \u0027%s \u003d\u003d \"%s\"\u0027 % (portdir, port[\u0027id\u0027])"},{"line_number":68,"context_line":"    return \u0027%s \u003d\u003d @%s\u0027 % (portdir, port_group)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def acl_ethertype(r):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_be6bc4ee","line":68,"range":{"start_line":66,"start_character":0,"end_line":68,"end_character":46},"in_reply_to":"3f79a3b5_25956733","updated":"2018-08-15 08:49:52.000000000","message":"Thanks! But this will return the wrong match string. The prefixed \"@\" only works for the port groups. Perhaps:\n\nport \u003d port[\u0027id\u0027] if port else \"@\" + port_group\nreturn \u0027%s \u003d\u003d %s\u0027 % (portdir, port)","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2a2e3ac43e70c05d056c770e2455948ba4667ab8","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    return acl"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"def add_sg_rule_acl_for_port_group(port_group, r, match):"},{"line_number":229,"context_line":"    dir_map \u003d {"},{"line_number":230,"context_line":"        \u0027ingress\u0027: \u0027to-lport\u0027,"},{"line_number":231,"context_line":"        \u0027egress\u0027: \u0027from-lport\u0027,"},{"line_number":232,"context_line":"    }"},{"line_number":233,"context_line":"    acl \u003d {\"port_group\": port_group,"},{"line_number":234,"context_line":"           \"priority\": ovn_const.ACL_PRIORITY_ALLOW,"},{"line_number":235,"context_line":"           \"action\": ovn_const.ACL_ACTION_ALLOW_RELATED,"},{"line_number":236,"context_line":"           \"log\": False,"},{"line_number":237,"context_line":"           \"name\": [],"},{"line_number":238,"context_line":"           \"severity\": [],"},{"line_number":239,"context_line":"           \"direction\": dir_map[r[\u0027direction\u0027]],"},{"line_number":240,"context_line":"           \"match\": match,"},{"line_number":241,"context_line":"           ovn_const.OVN_SG_RULE_EXT_ID_KEY: r[\u0027id\u0027]}"},{"line_number":242,"context_line":"    return acl"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"def add_acl_dhcp(port, subnet, ovn_dhcp\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_054f0b93","line":242,"range":{"start_line":228,"start_character":0,"end_line":242,"end_character":14},"updated":"2018-08-15 06:46:13.000000000","message":"just a suggestion, maybe you can add the \"add\" functions before the \"drop\" functions ? that would allow for alphabetic ordering and easier reading/searching :)","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"}],"networking_ovn/common/constants.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ff1293e55e449b462749a7e655df2c9632ed314a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"OVN_ROUTER_PORT_OPTION_KEYS \u003d [\u0027router-port\u0027, \u0027nat-addresses\u0027]"},{"line_number":46,"context_line":"OVN_GATEWAY_CHASSIS_KEY \u003d \u0027redirect-chassis\u0027"},{"line_number":47,"context_line":"OVN_GATEWAY_NAT_ADDRESSES_KEY \u003d \u0027nat-addresses\u0027"},{"line_number":48,"context_line":"OVN_DROP_PORT_GROUP_NAME \u003d \u0027neutron_pg_drop\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"OVN_PROVNET_PORT_NAME_PREFIX \u003d \u0027provnet-\u0027"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2a9b7064","line":48,"updated":"2018-06-19 14:30:38.000000000","message":"This was added in the previous patch in this serie which is not yet merged. Let\u0027s fix it there.\n\nAlso, perhaps it would be better to just squash these two patches ?","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"}],"networking_ovn/common/ovn_client.py":[{"author":{"_account_id":18439,"name":"aliang","email":"shengjirensheng@163.com","username":"shiliang"},"change_message_id":"3af03dee260b99434c8de5c3b455e83ef6d37870","unresolved":false,"context_lines":[{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"    def _create_subnet_port_group(self, subnet, txn):"},{"line_number":1460,"context_line":"        pg_name \u003d utils.ovn_port_group_name(subnet[\u0027id\u0027])"},{"line_number":1461,"context_line":"        if self.ovn_api.get_port_group(pg_name):"},{"line_number":1462,"context_line":"            return"},{"line_number":1463,"context_line":"        # Create subnet Port Group."},{"line_number":1464,"context_line":"        txn.add(self._nb_idl.pg_add(pg_name, acls\u003d[]))"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_265ee943","line":1461,"range":{"start_line":1461,"start_character":16,"end_line":1461,"end_character":23},"updated":"2018-08-14 03:43:39.000000000","message":"where is this ovn_api defined? should replace ovn_api by _nb_idl.","commit_id":"885635f85d1cdbe81126d232d128551d813a2306"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c84d3bec161c727b63d708cd0582418e4411a866","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                dhcpv4_options\u003ddhcpv4_options,"},{"line_number":297,"context_line":"                dhcpv6_options\u003ddhcpv6_options))"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            # Handle ACL\u0027s for this port. If we\u0027re not using Port Groups"},{"line_number":300,"context_line":"            # because either the schema doesn\u0027t support it or we didn\u0027t"},{"line_number":301,"context_line":"            # migrate old SGs from Address Sets to Port Groups, then we"},{"line_number":302,"context_line":"            # keep the old behavior. For those SGs this port belongs to"},{"line_number":303,"context_line":"            # that are modelled as a Port Group, we\u0027ll use it."},{"line_number":304,"context_line":"            sg_ids \u003d utils.get_lsp_security_groups(port)"},{"line_number":305,"context_line":"            if self._nb_idl.is_port_groups_supported():"},{"line_number":306,"context_line":"                # If this is not a trusted port or port security is enabled,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_b045dab5","line":303,"range":{"start_line":299,"start_character":42,"end_line":303,"end_character":62},"updated":"2018-08-07 12:49:36.000000000","message":"This comment should be changed to: I\u0027f we\u0027re not using Port Groups because the schema doesn\u0027t support it, then we keep the old behavior.","commit_id":"68b9be49cce808a99bdabd25deed4c6cf184929f"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c84d3bec161c727b63d708cd0582418e4411a866","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                    txn.add(self._nb_idl.pg_add_ports("},{"line_number":315,"context_line":"                        utils.ovn_port_group_name(sg), port_cmd))"},{"line_number":316,"context_line":"            else:"},{"line_number":317,"context_line":"                # SGs modelled as Port Groups:"},{"line_number":318,"context_line":"                acls_new \u003d ovn_acl.add_acls(self._plugin, admin_context,"},{"line_number":319,"context_line":"                                            port, sg_cache, subnet_cache,"},{"line_number":320,"context_line":"                                            self._nb_idl)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_b07ddab2","line":317,"range":{"start_line":317,"start_character":18,"end_line":317,"end_character":46},"updated":"2018-08-07 12:49:36.000000000","message":"This comment is also wrong:. This section is for SGs modelled as Address Sets.","commit_id":"68b9be49cce808a99bdabd25deed4c6cf184929f"}],"networking_ovn/common/utils.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ff1293e55e449b462749a7e655df2c9632ed314a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    #   pg-\u003csecurity group uuid\u003e-\u003cip version\u003e"},{"line_number":87,"context_line":"    # with all \u0027-\u0027 replaced with \u0027_\u0027. This replacement is necessary"},{"line_number":88,"context_line":"    # because OVN doesn\u0027t support \u0027-\u0027 in an address set name."},{"line_number":89,"context_line":"    return (\u0027pg-%s-%s\u0027 % (sg_id, ip_version)).replace(\u0027-\u0027, \u0027_\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def ovn_port_group_name(sg_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_4aafcc7c","line":89,"updated":"2018-06-19 14:30:38.000000000","message":"ditto fixing in the previous patch","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"}],"networking_ovn/ovn_db_sync.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6f9d29212bd7051e22643567906e6080eca1e8b7","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"        # 4. Create a Port Group for every subnet to allow DHCP traffic."},{"line_number":1030,"context_line":"        #    and add the relevant ports to them."},{"line_number":1031,"context_line":"        # 5. Create a Port Group for every existing Neutron Security Group and"},{"line_number":1032,"context_line":"        #    add all its Security Group Rules as ACLs to that Port Group."},{"line_number":1033,"context_line":"        LOG.debug(\u0027Port Groups Migration task started\u0027)"},{"line_number":1034,"context_line":"        _total_timer \u003d timeutils.StopWatch()"},{"line_number":1035,"context_line":"        _partial_timer \u003d timeutils.StopWatch()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_fb6c95d1","line":1032,"updated":"2018-06-18 08:56:42.000000000","message":"Should we test if the Port_Group table exist here before trying to migrate anything ?","commit_id":"3a56907309c89f7c0f50a8e3a87075ce42dc2af4"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"8fe42513cd17dd748fdc03d7f43d081c70330967","unresolved":false,"context_lines":[{"line_number":982,"context_line":"                continue"},{"line_number":983,"context_line":"            db_subnets[subnet[\u0027id\u0027]] \u003d subnet"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":"            # Ignore the floating ip ports with device_owner set to"},{"line_number":986,"context_line":"            # constants.DEVICE_OWNER_FLOATINGIP"},{"line_number":987,"context_line":"            db_ports \u003d [port for port in"},{"line_number":988,"context_line":"                        self.core_plugin.get_ports(ctx) if not"},{"line_number":989,"context_line":"                        utils.is_lsp_ignored(port) and not"},{"line_number":990,"context_line":"                        utils.is_lsp_trusted(port) and"},{"line_number":991,"context_line":"                        utils.is_port_security_enabled(port)]"},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":994,"context_line":"            for subnet_id, subnet in db_subnets.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_b97e3be1","line":991,"range":{"start_line":985,"start_character":0,"end_line":991,"end_character":61},"updated":"2018-06-28 15:33:18.000000000","message":"unindent this!","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"8fe42513cd17dd748fdc03d7f43d081c70330967","unresolved":false,"context_lines":[{"line_number":994,"context_line":"            for subnet_id, subnet in db_subnets.items():"},{"line_number":995,"context_line":"                pg_name \u003d utils.ovn_port_group_name(subnet_id)"},{"line_number":996,"context_line":"                if not self.ovn_api.get_port_group(pg_name):"},{"line_number":997,"context_line":"                    # If drop Port Group doesn\u0027t exist yet, create it."},{"line_number":998,"context_line":"                    txn.add(self.ovn_api.pg_add(pg_name, acls\u003d[]))"},{"line_number":999,"context_line":"                    # Add ACLs to this Port Group."},{"line_number":1000,"context_line":"                    acls \u003d acl_utils.add_acls_for_subnet_port_group("}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_3946ab52","line":997,"range":{"start_line":997,"start_character":25,"end_line":997,"end_character":29},"updated":"2018-06-28 15:33:18.000000000","message":"if subnet port group doesn\u0027t exist","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"8fe42513cd17dd748fdc03d7f43d081c70330967","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"            # Add ports to the relevant subnet Port Groups"},{"line_number":1005,"context_line":"            for port in db_ports:"},{"line_number":1006,"context_line":"                for ip in port[\u0027fixed_ips\u0027]:"},{"line_number":1007,"context_line":"                    if ip[\u0027subnet_id\u0027] in db_subnets.keys():"},{"line_number":1008,"context_line":"                        txn.add(self.ovn_api.pg_add_ports("},{"line_number":1009,"context_line":"                            utils.ovn_port_group_name(ip[\u0027subnet_id\u0027]),"},{"line_number":1010,"context_line":"                                port[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_99d57f4a","line":1007,"range":{"start_line":1007,"start_character":20,"end_line":1007,"end_character":60},"updated":"2018-06-28 15:33:18.000000000","message":"if ip[\u0027subnet_id\u0027] in db_subnets:\n\nThanks Terry :)","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ff1293e55e449b462749a7e655df2c9632ed314a","unresolved":false,"context_lines":[{"line_number":1072,"context_line":"        self._create_sg_port_groups_and_acls(ctx)"},{"line_number":1073,"context_line":"        _partial_timer.stop()"},{"line_number":1074,"context_line":"        LOG.debug(\u0027[5] Create SG Port Groups and ACLs finished \u0027"},{"line_number":1075,"context_line":"                  \u0027(took %.2f seconds)\u0027, _partial_timer.elapsed())"},{"line_number":1076,"context_line":""},{"line_number":1077,"context_line":"        _total_timer.stop()"},{"line_number":1078,"context_line":"        LOG.debug(\u0027Port Groups Migration task finished \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_8a2884ee","line":1075,"updated":"2018-06-19 14:30:38.000000000","message":"I know it\u0027s WIP, just commenting so we don\u0027t forget removing these logs in the final patch :D","commit_id":"87e76dcd7582b9fe45eb5f889b068a0c72a94a9a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2a2e3ac43e70c05d056c770e2455948ba4667ab8","unresolved":false,"context_lines":[{"line_number":956,"context_line":"    def _create_default_drop_port_group(self, db_ports):"},{"line_number":957,"context_line":"        with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":958,"context_line":"            pg_name \u003d const.OVN_DROP_PORT_GROUP_NAME"},{"line_number":959,"context_line":"            if not self.ovn_api.get_port_group(pg_name):"},{"line_number":960,"context_line":"                # If drop Port Group doesn\u0027t exist yet, create it."},{"line_number":961,"context_line":"                txn.add(self.ovn_api.pg_add(pg_name, acls\u003d[]))"},{"line_number":962,"context_line":"                # Add ACLs to this Port Group so that all traffic is dropped."}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_88581288","line":959,"range":{"start_line":959,"start_character":12,"end_line":959,"end_character":56},"updated":"2018-08-15 06:46:13.000000000","message":"Is it possible that someone else has created the Drop Port Group name, accidentally ?\nJust asking, want to know if this is possible?","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c98c6581a6aa39e3ff574f272882629dfe730fc4","unresolved":false,"context_lines":[{"line_number":956,"context_line":"    def _create_default_drop_port_group(self, db_ports):"},{"line_number":957,"context_line":"        with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":958,"context_line":"            pg_name \u003d const.OVN_DROP_PORT_GROUP_NAME"},{"line_number":959,"context_line":"            if not self.ovn_api.get_port_group(pg_name):"},{"line_number":960,"context_line":"                # If drop Port Group doesn\u0027t exist yet, create it."},{"line_number":961,"context_line":"                txn.add(self.ovn_api.pg_add(pg_name, acls\u003d[]))"},{"line_number":962,"context_line":"                # Add ACLs to this Port Group so that all traffic is dropped."}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_79430643","line":959,"range":{"start_line":959,"start_character":12,"end_line":959,"end_character":56},"in_reply_to":"3f79a3b5_88581288","updated":"2018-08-15 08:49:52.000000000","message":"Not via the Neutron API because those port groups will be named as pg_\u003cneutron uuid\u003e in the OVN DB.","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2a2e3ac43e70c05d056c770e2455948ba4667ab8","unresolved":false,"context_lines":[{"line_number":963,"context_line":"                acls \u003d acl_utils.add_acls_for_drop_port_group(pg_name)"},{"line_number":964,"context_line":"                for acl in acls:"},{"line_number":965,"context_line":"                    txn.add(self.ovn_api.pg_acl_add(**acl))"},{"line_number":966,"context_line":"            ports_ids \u003d [port[\u0027id\u0027] for port in db_ports]"},{"line_number":967,"context_line":"            # Add the ports to the default Port Group"},{"line_number":968,"context_line":"            txn.add(self.ovn_api.pg_add_ports(pg_name, ports_ids))"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_a8538e6a","line":966,"range":{"start_line":966,"start_character":48,"end_line":966,"end_character":56},"updated":"2018-08-15 06:46:13.000000000","message":"Is it ever possible that db_ports \u003d None?\n\nBecause, the db_ports is dependent on a lot of conditions as per L#1037, so just curious.","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c98c6581a6aa39e3ff574f272882629dfe730fc4","unresolved":false,"context_lines":[{"line_number":963,"context_line":"                acls \u003d acl_utils.add_acls_for_drop_port_group(pg_name)"},{"line_number":964,"context_line":"                for acl in acls:"},{"line_number":965,"context_line":"                    txn.add(self.ovn_api.pg_acl_add(**acl))"},{"line_number":966,"context_line":"            ports_ids \u003d [port[\u0027id\u0027] for port in db_ports]"},{"line_number":967,"context_line":"            # Add the ports to the default Port Group"},{"line_number":968,"context_line":"            txn.add(self.ovn_api.pg_add_ports(pg_name, ports_ids))"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_39626ed9","line":966,"range":{"start_line":966,"start_character":48,"end_line":966,"end_character":56},"in_reply_to":"3f79a3b5_a8538e6a","updated":"2018-08-15 08:49:52.000000000","message":"L1037 is a list comprehension, so even if all conditions are not match the final value will be an empty list (which is iterable). E.g:\n\nIn [1]: ports \u003d [1, 2, 3]\nIn [2]: db_ports \u003d [p for p in ports if False]\nIn [3]: db_ports\nOut[3]: []","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2a2e3ac43e70c05d056c770e2455948ba4667ab8","unresolved":false,"context_lines":[{"line_number":970,"context_line":"    def _create_subnets_port_group(self, ctx, db_ports):"},{"line_number":971,"context_line":"        filters \u003d {\u0027enable_dhcp\u0027: [1]}"},{"line_number":972,"context_line":"        db_subnets \u003d {}"},{"line_number":973,"context_line":"        for subnet in self.core_plugin.get_subnets(ctx, filters\u003dfilters):"},{"line_number":974,"context_line":"            if subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_6 and ("},{"line_number":975,"context_line":"                    subnet.get(\u0027ipv6_address_mode\u0027) \u003d\u003d constants.IPV6_SLAAC):"},{"line_number":976,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_1b53ea18","line":973,"range":{"start_line":973,"start_character":39,"end_line":973,"end_character":50},"updated":"2018-08-15 06:46:13.000000000","message":"I think this code would not be used if there are no subnets.\nHowever, if there is a situation where in the user has deleted all previous subnets, then can this code run?\n( basically, is it possible for get_subnets() to return nothing, keeping db_subnet\u003d{} and thus raising an exception in Line#980?","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c98c6581a6aa39e3ff574f272882629dfe730fc4","unresolved":false,"context_lines":[{"line_number":970,"context_line":"    def _create_subnets_port_group(self, ctx, db_ports):"},{"line_number":971,"context_line":"        filters \u003d {\u0027enable_dhcp\u0027: [1]}"},{"line_number":972,"context_line":"        db_subnets \u003d {}"},{"line_number":973,"context_line":"        for subnet in self.core_plugin.get_subnets(ctx, filters\u003dfilters):"},{"line_number":974,"context_line":"            if subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_6 and ("},{"line_number":975,"context_line":"                    subnet.get(\u0027ipv6_address_mode\u0027) \u003d\u003d constants.IPV6_SLAAC):"},{"line_number":976,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_19d8d278","line":973,"range":{"start_line":973,"start_character":39,"end_line":973,"end_character":50},"in_reply_to":"3f79a3b5_1b53ea18","updated":"2018-08-15 08:49:52.000000000","message":"It\u0027s possible that we won\u0027t have any subnets at the time and the \"db_subnets\" variable value will remain {} but that won\u0027t cause L980 to raise an exception.\n\nIn [1]: a \u003d {}\nIn [2]: for k, v in a.items():\n   ...:     print(k)\n   ...: \nIn [3]:","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2a2e3ac43e70c05d056c770e2455948ba4667ab8","unresolved":false,"context_lines":[{"line_number":971,"context_line":"        filters \u003d {\u0027enable_dhcp\u0027: [1]}"},{"line_number":972,"context_line":"        db_subnets \u003d {}"},{"line_number":973,"context_line":"        for subnet in self.core_plugin.get_subnets(ctx, filters\u003dfilters):"},{"line_number":974,"context_line":"            if subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_6 and ("},{"line_number":975,"context_line":"                    subnet.get(\u0027ipv6_address_mode\u0027) \u003d\u003d constants.IPV6_SLAAC):"},{"line_number":976,"context_line":"                continue"},{"line_number":977,"context_line":"            db_subnets[subnet[\u0027id\u0027]] \u003d subnet"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_9b105a50","line":974,"range":{"start_line":974,"start_character":40,"end_line":974,"end_character":61},"updated":"2018-08-15 06:46:13.000000000","message":"why dont you use a similar constant in Line#945 ? Would keep the code in sync, I guess","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c98c6581a6aa39e3ff574f272882629dfe730fc4","unresolved":false,"context_lines":[{"line_number":971,"context_line":"        filters \u003d {\u0027enable_dhcp\u0027: [1]}"},{"line_number":972,"context_line":"        db_subnets \u003d {}"},{"line_number":973,"context_line":"        for subnet in self.core_plugin.get_subnets(ctx, filters\u003dfilters):"},{"line_number":974,"context_line":"            if subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_6 and ("},{"line_number":975,"context_line":"                    subnet.get(\u0027ipv6_address_mode\u0027) \u003d\u003d constants.IPV6_SLAAC):"},{"line_number":976,"context_line":"                continue"},{"line_number":977,"context_line":"            db_subnets[subnet[\u0027id\u0027]] \u003d subnet"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_39902e95","line":974,"range":{"start_line":974,"start_character":40,"end_line":974,"end_character":61},"in_reply_to":"3f79a3b5_9b105a50","updated":"2018-08-15 08:49:52.000000000","message":"Good point, tho those values are different than the constants defined in the constants.py module [0].\n\nPerhaps we could create new constants there. The same loop (ipv4, ipv6) is used in other places in the code, we can fix it all at once in a follow-up patch I believe.\n\n[0] https://github.com/openstack/neutron-lib/blob/master/neutron_lib/constants.py#L86-L87","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c743ec9b27644a31fe5344330cef8a08663b81e9","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"        self._create_default_drop_port_group(db_ports)"},{"line_number":1044,"context_line":"        _partial_timer.stop()"},{"line_number":1045,"context_line":"        LOG.debug(\u0027[1] Create default Drop Port Group finished \u0027"},{"line_number":1046,"context_line":"                  \u0027(took %.2f seconds)\u0027, _partial_timer.elapsed())"},{"line_number":1047,"context_line":"        _partial_timer.restart()"},{"line_number":1048,"context_line":"        self._create_subnets_port_group(ctx, db_ports)"},{"line_number":1049,"context_line":"        _partial_timer.stop()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_fb5a4a28","line":1046,"updated":"2018-08-20 10:39:43.000000000","message":"do you guys want me to remove these traces?","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8d004748feb0bd1828c0c30a3c37f4d803ddd356","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"        self._create_default_drop_port_group(db_ports)"},{"line_number":1044,"context_line":"        _partial_timer.stop()"},{"line_number":1045,"context_line":"        LOG.debug(\u0027[1] Create default Drop Port Group finished \u0027"},{"line_number":1046,"context_line":"                  \u0027(took %.2f seconds)\u0027, _partial_timer.elapsed())"},{"line_number":1047,"context_line":"        _partial_timer.restart()"},{"line_number":1048,"context_line":"        self._create_subnets_port_group(ctx, db_ports)"},{"line_number":1049,"context_line":"        _partial_timer.stop()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_7b695a89","line":1046,"in_reply_to":"3f79a3b5_fb5a4a28","updated":"2018-08-20 10:46:53.000000000","message":"Good point, since it\u0027s not present in any of the other resources I think it\u0027s better to remove it.","commit_id":"463ad4a6516d19976224a10f2c44b4425de261c0"}]}
