)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7a8080d2c0dd786c38e16c6b17fead790e0c2c7d","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Saving security group into info_cache table and avoid"},{"line_number":10,"context_line":"querying neutron server directly. port update event"},{"line_number":11,"context_line":"will be fed back to nova and state will eventually synced."},{"line_number":12,"context_line":"although there will might be a delay of several 2"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9f103827c6efbbadc49acd3d87d98aa9ed54cd63"},{"line_number":15,"context_line":"Closes-Bug: #1923560"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"73db45e8_b624c251","line":12,"range":{"start_line":12,"start_character":40,"end_line":12,"end_character":49},"updated":"2021-04-19 10:15:53.000000000","message":"?","commit_id":"15b9931b3646dc08ca3e72c2496a5a247fafbef9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"05435e72c2e26c897ade3b145b3066b1cf94fae7","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     shenjiatong \u003cyshxxsjt715@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-04-20 16:27:05 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Saving security group to info_cache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Saving security group into info_cache table and avoid"},{"line_number":10,"context_line":"querying neutron server directly. port update event"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"60cde879_c4dd130c","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":35},"updated":"2021-04-22 11:02:22.000000000","message":"i dont think we should be doing this in general.\n\nThis implies you are using the nova as a proxy to retrive the security info via its apis\nwhich is not how we want our apis to be consumed.","commit_id":"737afb162380b338d86f3a86d1961083dd64a451"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"7233f593720dacf851596e3bfeb4363cb5ba1c31","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     shenjiatong \u003cyshxxsjt715@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-04-20 16:27:05 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Saving security group to info_cache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Saving security group into info_cache table and avoid"},{"line_number":10,"context_line":"querying neutron server directly. port update event"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fffdc19d_0e4a9902","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":35},"in_reply_to":"60cde879_c4dd130c","updated":"2021-04-22 12:23:58.000000000","message":"but port_ids is already saved so maybe extra security group is ok... but at least we could use those port ids and then get security group instead of querying port id by vm...","commit_id":"737afb162380b338d86f3a86d1961083dd64a451"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"05435e72c2e26c897ade3b145b3066b1cf94fae7","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Saving security group to info_cache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Saving security group into info_cache table and avoid"},{"line_number":10,"context_line":"querying neutron server directly. port update event"},{"line_number":11,"context_line":"will be fed back to nova and state will eventually synced."},{"line_number":12,"context_line":"although there will might be a delay of several 2"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9cd101bf_9c32274f","line":10,"updated":"2021-04-22 11:02:22.000000000","message":"i think a better apprcoh woudl be to remove the security group info form\nthe server detail responce ill add that to the ptg for discussion","commit_id":"737afb162380b338d86f3a86d1961083dd64a451"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"7233f593720dacf851596e3bfeb4363cb5ba1c31","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Saving security group to info_cache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Saving security group into info_cache table and avoid"},{"line_number":10,"context_line":"querying neutron server directly. port update event"},{"line_number":11,"context_line":"will be fed back to nova and state will eventually synced."},{"line_number":12,"context_line":"although there will might be a delay of several 2"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1996cc28_d6c82f48","line":10,"in_reply_to":"9cd101bf_9c32274f","updated":"2021-04-22 12:23:58.000000000","message":"maybe, but sadly we do have a use case for security group....","commit_id":"737afb162380b338d86f3a86d1961083dd64a451"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Change-Id: I9f103827c6efbbadc49acd3d87d98aa9ed54cd63"},{"line_number":15,"context_line":"Closes-Bug: #1923560"},{"line_number":16,"context_line":"Depends-On: https://review.opendev.org/c/openstack/tempest/+/792491"},{"line_number":17,"context_line":"Implements: #rework-security-group-retrieving"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":58,"id":"9ae914a0_62e5297d","line":17,"range":{"start_line":17,"start_character":12,"end_line":17,"end_character":13},"updated":"2021-06-18 15:04:05.000000000","message":"nit: drop the #","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"}],"nova/api/openstack/compute/views/servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":679,"context_line":"                        # neutron for information"},{"line_number":680,"context_line":"                        sg_inst \u003d None"},{"line_number":681,"context_line":"                        if vif[\u0027security_groups\u0027]:"},{"line_number":682,"context_line":"                            sg_inst \u003d jsonutils.loads(vif[\u0027security_groups\u0027])"},{"line_number":683,"context_line":"                        if sg_inst is not None:"},{"line_number":684,"context_line":"                            groups.extend(sg_inst)"},{"line_number":685,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":58,"id":"842aced6_d88cdbed","line":682,"range":{"start_line":682,"start_character":39,"end_line":682,"end_character":53},"updated":"2021-06-18 15:04:05.000000000","message":"I think this should be handled by the VIF and NetworkInfo object internally.","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"}],"nova/network/model.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7a8080d2c0dd786c38e16c6b17fead790e0c2c7d","unresolved":true,"context_lines":[{"line_number":384,"context_line":"                 details\u003dNone, devname\u003dNone, ovs_interfaceid\u003dNone,"},{"line_number":385,"context_line":"                 qbh_params\u003dNone, qbg_params\u003dNone, active\u003dFalse,"},{"line_number":386,"context_line":"                 vnic_type\u003dVNIC_TYPE_NORMAL, profile\u003dNone,"},{"line_number":387,"context_line":"                 preserve_on_delete\u003dFalse, security_groups\u003dlist(), **kwargs):"},{"line_number":388,"context_line":"        super(VIF, self).__init__()"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        self[\u0027id\u0027] \u003d id"}],"source_content_type":"text/x-python","patch_set":1,"id":"be926a0b_2ff49f8a","line":387,"range":{"start_line":387,"start_character":59,"end_line":387,"end_character":65},"updated":"2021-04-19 10:15:53.000000000","message":"Please use something non mutable as default. As a mutable default can be dangerous:\n\n\u003e\u003e\u003e def f(a\u003dlist()):\n...   a.append(1)\n...   print(a)\n... \n\u003e\u003e\u003e f()\n[1]\n\u003e\u003e\u003e f()\n[1, 1]\n\u003e\u003e\u003e f()\n[1, 1, 1]\n\u003e\u003e\u003e \n\nIn nova we tend to use None in the signature and then do \n\n        self[\u0027security_groups\u0027] \u003d security_groups or []\n\nto initialize the field below.","commit_id":"15b9931b3646dc08ca3e72c2496a5a247fafbef9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"05435e72c2e26c897ade3b145b3066b1cf94fae7","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        self[\u0027vnic_type\u0027] \u003d vnic_type"},{"line_number":402,"context_line":"        self[\u0027profile\u0027] \u003d profile"},{"line_number":403,"context_line":"        self[\u0027preserve_on_delete\u0027] \u003d preserve_on_delete"},{"line_number":404,"context_line":"        self[\u0027security_groups\u0027] \u003d security_groups if security_groups else []"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        self._set_meta(kwargs)"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"40dcd0d4_3499f71f","line":404,"updated":"2021-04-22 11:02:22.000000000","message":"nit:  self[\u0027security_groups\u0027]  \u003d security_groups or []\nthis is the pattern we use to set defaults for collections and mutable objects","commit_id":"737afb162380b338d86f3a86d1961083dd64a451"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":385,"context_line":"                 qbh_params\u003dNone, qbg_params\u003dNone, active\u003dFalse,"},{"line_number":386,"context_line":"                 vnic_type\u003dVNIC_TYPE_NORMAL, profile\u003dNone,"},{"line_number":387,"context_line":"                 preserve_on_delete\u003dFalse, delegate_create\u003dFalse,"},{"line_number":388,"context_line":"                 security_groups\u003d\"null\", **kwargs):"},{"line_number":389,"context_line":"        super(VIF, self).__init__()"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        self[\u0027id\u0027] \u003d id"}],"source_content_type":"text/x-python","patch_set":58,"id":"ef027baf_e10aff5a","line":388,"range":{"start_line":388,"start_character":33,"end_line":388,"end_character":39},"updated":"2021-06-18 15:04:05.000000000","message":"if you drop the json.dumps from the caller side then this will be None","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":411,"context_line":"        keys \u003d [\u0027id\u0027, \u0027address\u0027, \u0027network\u0027, \u0027vnic_type\u0027,"},{"line_number":412,"context_line":"                \u0027type\u0027, \u0027profile\u0027, \u0027details\u0027, \u0027devname\u0027,"},{"line_number":413,"context_line":"                \u0027ovs_interfaceid\u0027, \u0027qbh_params\u0027, \u0027qbg_params\u0027,"},{"line_number":414,"context_line":"                \u0027active\u0027, \u0027preserve_on_delete\u0027, \u0027delegate_create\u0027]"},{"line_number":415,"context_line":"        return all(self[k] \u003d\u003d other[k] for k in keys)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def __ne__(self, other):"}],"source_content_type":"text/x-python","patch_set":58,"id":"5521156b_467937bb","line":414,"updated":"2021-06-18 15:04:05.000000000","message":"I\u0027m not sure why we compare by content instead of by id but as we do compare by content you should add security_groups here too","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"}],"nova/network/neutron.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7a8080d2c0dd786c38e16c6b17fead790e0c2c7d","unresolved":true,"context_lines":[{"line_number":3057,"context_line":"            profile\u003dget_binding_profile(current_neutron_port),"},{"line_number":3058,"context_line":"            details\u003dcurrent_neutron_port.get(\u0027binding:vif_details\u0027),"},{"line_number":3059,"context_line":"            ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":3060,"context_line":"            security_groups\u003dcurrent_neutron_port.get(\u0027security_groups\u0027, []),"},{"line_number":3061,"context_line":"            devname\u003ddevname,"},{"line_number":3062,"context_line":"            active\u003dvif_active,"},{"line_number":3063,"context_line":"            preserve_on_delete\u003dpreserve_on_delete"}],"source_content_type":"text/x-python","patch_set":1,"id":"581407ee_fb7e3079","line":3060,"updated":"2021-04-19 10:15:53.000000000","message":"I\u0027m wondering if this is the whole security_group object or just the ids of the groups.\n\nAs far as I see we get the port at L3104 that is the API  https://docs.openstack.org/api-ref/network/v2/?expanded\u003dlist-ports-detail#ports and the doc there says: \"The IDs of security groups applied to the port.\"\n\nWhile in the original server list code adds ids and names as far as I understand https://github.com/openstack/nova/blob/3e04d9f9bfb5d8d040ad41f44de5b87a3f6b7e1b/nova/network/security_group_api.py#L547","commit_id":"15b9931b3646dc08ca3e72c2496a5a247fafbef9"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"7233f593720dacf851596e3bfeb4363cb5ba1c31","unresolved":true,"context_lines":[{"line_number":3057,"context_line":"            profile\u003dget_binding_profile(current_neutron_port),"},{"line_number":3058,"context_line":"            details\u003dcurrent_neutron_port.get(\u0027binding:vif_details\u0027),"},{"line_number":3059,"context_line":"            ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":3060,"context_line":"            security_groups\u003dcurrent_neutron_port.get(\u0027security_groups\u0027, []),"},{"line_number":3061,"context_line":"            devname\u003ddevname,"},{"line_number":3062,"context_line":"            active\u003dvif_active,"},{"line_number":3063,"context_line":"            preserve_on_delete\u003dpreserve_on_delete"}],"source_content_type":"text/x-python","patch_set":1,"id":"078e0037_46b08458","line":3060,"in_reply_to":"135c4ea4_f2262e2e","updated":"2021-04-22 12:23:58.000000000","message":"actually return security group id complies with current api response... because it could either return id or name (https://github.com/openstack/nova/blob/df3655cfdc7a216604ee020fa996554917afab51/nova/network/security_group_api.py#L567)","commit_id":"15b9931b3646dc08ca3e72c2496a5a247fafbef9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4731932bea224157d66c5b4587f75656e4208aad","unresolved":true,"context_lines":[{"line_number":3057,"context_line":"            profile\u003dget_binding_profile(current_neutron_port),"},{"line_number":3058,"context_line":"            details\u003dcurrent_neutron_port.get(\u0027binding:vif_details\u0027),"},{"line_number":3059,"context_line":"            ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":3060,"context_line":"            security_groups\u003dcurrent_neutron_port.get(\u0027security_groups\u0027, []),"},{"line_number":3061,"context_line":"            devname\u003ddevname,"},{"line_number":3062,"context_line":"            active\u003dvif_active,"},{"line_number":3063,"context_line":"            preserve_on_delete\u003dpreserve_on_delete"}],"source_content_type":"text/x-python","patch_set":1,"id":"c5b4f3ee_31b1acd4","line":3060,"in_reply_to":"23666ea0_7f20d970","updated":"2021-04-22 09:41:14.000000000","message":"Returning the SG ids probably enough from usability perspective. However if we return names and ids today then changing that to only return ids is a non backward compatible API change. Imagine the client that expects the name in the response. Nova handles API changes via API microversions[1].\n\nSo either we figure out how to return both names and ids efficiently or we need to create a new API microversion where we only return the ids.\n\n[1] https://docs.openstack.org/nova/rocky/contributor/microversions.html","commit_id":"15b9931b3646dc08ca3e72c2496a5a247fafbef9"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"5cb8fed37aff9100e7471bd50ee7e8853514ee44","unresolved":true,"context_lines":[{"line_number":3057,"context_line":"            profile\u003dget_binding_profile(current_neutron_port),"},{"line_number":3058,"context_line":"            details\u003dcurrent_neutron_port.get(\u0027binding:vif_details\u0027),"},{"line_number":3059,"context_line":"            ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":3060,"context_line":"            security_groups\u003dcurrent_neutron_port.get(\u0027security_groups\u0027, []),"},{"line_number":3061,"context_line":"            devname\u003ddevname,"},{"line_number":3062,"context_line":"            active\u003dvif_active,"},{"line_number":3063,"context_line":"            preserve_on_delete\u003dpreserve_on_delete"}],"source_content_type":"text/x-python","patch_set":1,"id":"23666ea0_7f20d970","line":3060,"in_reply_to":"581407ee_fb7e3079","updated":"2021-04-20 08:26:15.000000000","message":"that\u0027s right. originally server details will return a list of security group names (or ids). but I am thinking only return security id is enough.\n\nfor example, nova will return volume uuids instead of names when calling server details","commit_id":"15b9931b3646dc08ca3e72c2496a5a247fafbef9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"05435e72c2e26c897ade3b145b3066b1cf94fae7","unresolved":true,"context_lines":[{"line_number":3057,"context_line":"            profile\u003dget_binding_profile(current_neutron_port),"},{"line_number":3058,"context_line":"            details\u003dcurrent_neutron_port.get(\u0027binding:vif_details\u0027),"},{"line_number":3059,"context_line":"            ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":3060,"context_line":"            security_groups\u003dcurrent_neutron_port.get(\u0027security_groups\u0027, []),"},{"line_number":3061,"context_line":"            devname\u003ddevname,"},{"line_number":3062,"context_line":"            active\u003dvif_active,"},{"line_number":3063,"context_line":"            preserve_on_delete\u003dpreserve_on_delete"}],"source_content_type":"text/x-python","patch_set":1,"id":"135c4ea4_f2262e2e","line":3060,"in_reply_to":"c5b4f3ee_31b1acd4","updated":"2021-04-22 11:02:22.000000000","message":"i would prever to have a new api microversion to remove this form the server detail responce.","commit_id":"15b9931b3646dc08ca3e72c2496a5a247fafbef9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":3039,"context_line":"            instance."},{"line_number":3040,"context_line":"        :param preexisting_port_ids: List of IDs of ports attached to a"},{"line_number":3041,"context_line":"            given server instance which Nova did not create and therefore"},{"line_number":3042,"context_line":"            should not delete when the port is detached from the server."},{"line_number":3043,"context_line":"        :return: nova.network.model.VIF object which represents a port in the"},{"line_number":3044,"context_line":"            instance network info cache."},{"line_number":3045,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":58,"id":"ff66d180_ddf60d4d","line":3042,"updated":"2021-06-18 15:04:05.000000000","message":"please add a doc to the new sg_names param","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":3073,"context_line":"            profile\u003dget_binding_profile(current_neutron_port),"},{"line_number":3074,"context_line":"            details\u003dcurrent_neutron_port.get(\u0027binding:vif_details\u0027),"},{"line_number":3075,"context_line":"            ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":3076,"context_line":"            security_groups\u003djsonutils.dumps(sg_names),"},{"line_number":3077,"context_line":"            devname\u003ddevname,"},{"line_number":3078,"context_line":"            active\u003dvif_active,"},{"line_number":3079,"context_line":"            preserve_on_delete\u003dpreserve_on_delete"}],"source_content_type":"text/x-python","patch_set":58,"id":"2281b488_707c7ee8","line":3076,"updated":"2021-06-18 15:04:05.000000000","message":"I don\u0027t think you need to directly json.dump here. The VIF base class Model has a generic json.dump mechanism in place.","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":3122,"context_line":"        current_neutron_ports \u003d data.get(\u0027ports\u0027, [])"},{"line_number":3123,"context_line":""},{"line_number":3124,"context_line":"        search_sg_ids \u003d [sg for p in current_neutron_ports"},{"line_number":3125,"context_line":"                   for sg in p.get(\u0027security_groups\u0027, [])]"},{"line_number":3126,"context_line":"        if search_sg_ids:"},{"line_number":3127,"context_line":"            sg_search_opts \u003d {"},{"line_number":3128,"context_line":"                \"id\": search_sg_ids,"}],"source_content_type":"text/x-python","patch_set":58,"id":"790fcb2e_faf32a4f","line":3125,"updated":"2021-06-18 15:04:05.000000000","message":"nit: indent looks wrong to me here\n\neither:\n\n        search_sg_ids \u003d [sg for p in current_neutron_ports\n            for sg in p.get(\u0027security_groups\u0027, [])]\n\nor:\n\n       search_sg_ids \u003d [\n            sg\n            for p in current_neutron_ports\n            for sg in p.get(\"security_groups\", [])\n        ]","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":3128,"context_line":"                \"id\": search_sg_ids,"},{"line_number":3129,"context_line":"                \"fields\": [\"name\", \"id\"]"},{"line_number":3130,"context_line":"            }"},{"line_number":3131,"context_line":"            current_port_sgs \u003d {"},{"line_number":3132,"context_line":"                sg[\u0027id\u0027]: sg[\u0027name\u0027] or sg[\u0027id\u0027] for sg in"},{"line_number":3133,"context_line":"                client.list_security_groups(**sg_search_opts)"},{"line_number":3134,"context_line":"                .get(\u0027security_groups\u0027, [])}"}],"source_content_type":"text/x-python","patch_set":58,"id":"1bb9ad10_198df1d9","line":3131,"updated":"2021-06-18 15:04:05.000000000","message":"nit indent:\n\n        current_port_sgs \u003d {\n            sg[\"id\"]: sg[\"name\"] or sg[\"id\"]\n            for sg in client.list_security_groups(**sg_search_opts).get(\n                \"security_groups\", []\n            )\n        }\n\nalso I think these are SGs for more than on port so I suggest to name it current_ports_sgs","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":3148,"context_line":"            for sg_id in current_neutron_port.get(\u0027security_groups\u0027, []):"},{"line_number":3149,"context_line":"                sg_by_ports[port_id].append(current_port_sgs.get(sg_id))"},{"line_number":3150,"context_line":""},{"line_number":3151,"context_line":"        # Figure out what kind of operation we\u0027re processing. If we\u0027re given"},{"line_number":3152,"context_line":"        # a single port to refresh then we try to optimize and update just the"},{"line_number":3153,"context_line":"        # information for that VIF in the existing cache rather than try to"},{"line_number":3154,"context_line":"        # rebuild the entire thing."},{"line_number":3155,"context_line":"        if refresh_vif_id is not None:"},{"line_number":3156,"context_line":"            # TODO(mriedem): Consider pulling this out into it\u0027s own method."},{"line_number":3157,"context_line":"            nw_info \u003d instance.get_network_info()"},{"line_number":3158,"context_line":"            if nw_info:"}],"source_content_type":"text/x-python","patch_set":58,"id":"c2cb7927_2dae5d49","line":3155,"range":{"start_line":3151,"start_character":0,"end_line":3155,"end_character":38},"updated":"2021-06-18 15:04:05.000000000","message":"I think this is relevant for your change. Your change always collects all the security groups for every port even if only one port / vif needs refresh. I think this can be optimized.","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"}],"nova/notifications/objects/instance.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ca365d98d0c357e9d6d295ea9d43fddda06712a","unresolved":true,"context_lines":[{"line_number":392,"context_line":"        self.address \u003d address"},{"line_number":393,"context_line":"        self.device_name \u003d device_name"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def __pop_non_str_in_meta(self, meta):"},{"line_number":396,"context_line":"        for k in list(meta.keys()):"},{"line_number":397,"context_line":"            if not isinstance(meta[k], str):"},{"line_number":398,"context_line":"                del meta[k]"}],"source_content_type":"text/x-python","patch_set":58,"id":"093a6466_b01b640f","line":395,"updated":"2021-06-18 15:04:05.000000000","message":"could you explain please why you need this?\n\nI\u0027ve just removed this and both unit and functional tests pass.","commit_id":"6cb7fd5e7ed7f4f702cc63a641a6ed6a22eb5e88"}]}
