)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"0894a07c5c9c403d4459ad943c7b520a6e73f135","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f2c48df8_c05688fa","updated":"2022-02-21 06:49:07.000000000","message":"\u003e Patch Set 1: Code-Review-1\n\u003e \n\u003e There is an error in the n-lib definition of \u0027standard-attr-segment\u0027 [1]. This extension requires \"segment\" and at the same time, \"segment\" extension requires \"standard-attr-description\" and \"standard-attr-segment\".\n\u003e \n\u003e The n-lib definition differs from the extension definition removed in this patch. First you need to fix n-lib.\n\u003e \nThe n-lib one looks intentional considering it\u0027s an extension of segment and the updates after initial patch:- https://review.opendev.org/c/openstack/neutron-lib/+/562331/1..4/neutron_lib/api/definitions/standard_attr_segment.py.\n\nSeems the issue caused with https://review.opendev.org/c/openstack/neutron/+/571292/2/neutron/extensions/segment.py#136 which added standard-attr-segment to segment\u0027s get_required_extensions instead of get_optional_extensions. This is correct in unused segment api definition in neutron-lib https://review.opendev.org/c/openstack/neutron-lib/+/577866. May be this patch can be restored and try fixing get_required_extensions itself of segment extension?\n\n\n\u003e [1]https://github.com/openstack/neutron-lib/blob/c2879ec1739d1425bcc762d4b6584ee241f995ca/neutron_lib/api/definitions/standard_attr_segment.py#L25\n\n","commit_id":"a746898b9a878decd4aa8ba58207ea3463829545"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"1e82c97b049b942450296395200b58d3ffd8fbb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"da883214_c6cc6e10","updated":"2022-03-01 05:18:03.000000000","message":"recheck designate failure /opt/stack/devstack/lib/neutron_plugins/ovn_agent:178 Socket /var/run/openvswitch/ovnnb_db.sock not found","commit_id":"3ac4b0d634057fbc0f4c031e3e3e43079871d4e9"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"306c124c250a6f1e0914d6efc9238b6762cca5cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7992656e_c8be90e2","updated":"2022-02-28 14:30:47.000000000","message":"recheck https://review.opendev.org/c/openstack/neutron/+/830563 merged","commit_id":"3ac4b0d634057fbc0f4c031e3e3e43079871d4e9"}],"neutron/extensions/segment.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f8f8cca759f54f882efa52026a823aa73960c03e","unresolved":true,"context_lines":[{"line_number":28,"context_line":"from neutron.api.v2 import base"},{"line_number":29,"context_line":"from neutron.extensions import standardattrdescription as ext_stddesc"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"SEGMENT \u003d \u0027segment\u0027"},{"line_number":32,"context_line":"SEGMENTS \u003d \u0027%ss\u0027 % SEGMENT"},{"line_number":33,"context_line":"SEGMENT_ID \u003d \u0027segment_id\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"NETWORK_TYPE \u003d \u0027network_type\u0027"},{"line_number":36,"context_line":"PHYSICAL_NETWORK \u003d \u0027physical_network\u0027"},{"line_number":37,"context_line":"SEGMENTATION_ID \u003d \u0027segmentation_id\u0027"},{"line_number":38,"context_line":"NAME_LEN \u003d db_const.NAME_FIELD_SIZE"},{"line_number":39,"context_line":"DESC_LEN \u003d db_const.DESCRIPTION_FIELD_SIZE"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# Attribute Map"},{"line_number":42,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":43,"context_line":"    SEGMENTS: {"},{"line_number":44,"context_line":"        \u0027id\u0027: {\u0027allow_post\u0027: False,"},{"line_number":45,"context_line":"               \u0027allow_put\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"360c685e_9df96062","line":42,"range":{"start_line":31,"start_character":0,"end_line":42,"end_character":26},"updated":"2022-02-25 10:30:47.000000000","message":"These variables is already defined in \"neutron_lib.api.definitions.segment\"","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f8f8cca759f54f882efa52026a823aa73960c03e","unresolved":true,"context_lines":[{"line_number":100,"context_line":"}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class Segment(api_extensions.ExtensionDescriptor):"},{"line_number":104,"context_line":"    \"\"\"Extension class supporting Segments.\"\"\""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"868ea7b8_19432478","line":103,"range":{"start_line":103,"start_character":6,"end_line":103,"end_character":13},"updated":"2022-02-25 10:30:47.000000000","message":"This class should inherit from APIExtensionDescriptor.\n\nThis class should be something like https://paste.opendev.org/show/bfLdKzUlFUXByVaOAE8e/","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"288d3bdc97011cf97937bb887a1c277e60ae1737","unresolved":true,"context_lines":[{"line_number":145,"context_line":"            return {}"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def get_optional_extensions(self):"},{"line_number":148,"context_line":"        return [stdattrseg_apidef.ALIAS]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_required_extensions(self):"},{"line_number":151,"context_line":"        return [ext_stddesc.Standardattrdescription.get_alias()]"}],"source_content_type":"text/x-python","patch_set":2,"id":"b0fb4df9_909a1d4a","line":148,"updated":"2022-02-23 16:05:38.000000000","message":"This should return OPTIONAL_EXTENSIONS (the default value)","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"417bbd973700d2fedb4f68bd2fb2b926eea75410","unresolved":true,"context_lines":[{"line_number":145,"context_line":"            return {}"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def get_optional_extensions(self):"},{"line_number":148,"context_line":"        return [stdattrseg_apidef.ALIAS]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_required_extensions(self):"},{"line_number":151,"context_line":"        return [ext_stddesc.Standardattrdescription.get_alias()]"}],"source_content_type":"text/x-python","patch_set":2,"id":"a0c0cf68_8336fbd4","line":148,"in_reply_to":"0e6eb3e1_ca568a79","updated":"2022-02-25 10:45:38.000000000","message":"Ohkk i had thought to do keep that in follow up patch, but if you say to do it in this patch itself, will do the update, need to check if n-lib is not diverged from here for segment definition.","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f8f8cca759f54f882efa52026a823aa73960c03e","unresolved":true,"context_lines":[{"line_number":145,"context_line":"            return {}"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def get_optional_extensions(self):"},{"line_number":148,"context_line":"        return [stdattrseg_apidef.ALIAS]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_required_extensions(self):"},{"line_number":151,"context_line":"        return [ext_stddesc.Standardattrdescription.get_alias()]"}],"source_content_type":"text/x-python","patch_set":2,"id":"0e6eb3e1_ca568a79","line":148,"in_reply_to":"185845eb_a7a6048e","updated":"2022-02-25 10:30:47.000000000","message":"No, to use the \"neutron_lib.api.definitions.standard_attr_segment.REQUIRED_EXTENSIONS\". This is the goal of defining REQUIRED_EXTENSIONS and OPTIONAL_EXTENSIONS for a derived \"APIExtensionDescriptor\".\n\nBTW, you\u0027ll need to inherit from \"APIExtensionDescriptor\" instead of \"ExtensionDescriptor\", same as in many other extensions. You can also delete most of the method definitions (all of them).","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"c4ca9538345cdf4cfaeda41d382e2fbdb6c6505b","unresolved":true,"context_lines":[{"line_number":145,"context_line":"            return {}"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def get_optional_extensions(self):"},{"line_number":148,"context_line":"        return [stdattrseg_apidef.ALIAS]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_required_extensions(self):"},{"line_number":151,"context_line":"        return [ext_stddesc.Standardattrdescription.get_alias()]"}],"source_content_type":"text/x-python","patch_set":2,"id":"0715724b_a565ef21","line":148,"in_reply_to":"a0c0cf68_8336fbd4","updated":"2022-02-28 12:44:33.000000000","message":"Done segment api in neutron-lib is same as here just the diff is circular dep which neutron-lib is the fixed one.","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"b0ae5f21ccd3ad5f72544a97a60a6a432c2b72fd","unresolved":true,"context_lines":[{"line_number":145,"context_line":"            return {}"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def get_optional_extensions(self):"},{"line_number":148,"context_line":"        return [stdattrseg_apidef.ALIAS]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_required_extensions(self):"},{"line_number":151,"context_line":"        return [ext_stddesc.Standardattrdescription.get_alias()]"}],"source_content_type":"text/x-python","patch_set":2,"id":"185845eb_a7a6048e","line":148,"in_reply_to":"b0fb4df9_909a1d4a","updated":"2022-02-24 06:49:21.000000000","message":"Sorry not clear, you mean need to define OPTIONAL_EXTENSIONS and REQUIRED_EXTENSIONS and then just return OPTIONAL_EXTENSIONS and REQUIRED_EXTENSIONS from get_optional_extensions and get_required_extensions methods?\n\nOPTIONAL_EXTENSIONS \u003d [stdattrseg_apidef.ALIAS]","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"288d3bdc97011cf97937bb887a1c277e60ae1737","unresolved":true,"context_lines":[{"line_number":147,"context_line":"    def get_optional_extensions(self):"},{"line_number":148,"context_line":"        return [stdattrseg_apidef.ALIAS]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_required_extensions(self):"},{"line_number":151,"context_line":"        return [ext_stddesc.Standardattrdescription.get_alias()]"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class SegmentPluginBase(object, metaclass\u003dabc.ABCMeta):"}],"source_content_type":"text/x-python","patch_set":2,"id":"49e97bcf_566cc0ca","line":151,"range":{"start_line":150,"start_character":3,"end_line":151,"end_character":64},"updated":"2022-02-23 16:05:38.000000000","message":"this should be REQUIRED_EXTENSIONS\n\nREQUIRED_EXTENSIONS \u003d [segment.ALIAS]  (segment.ALIAS is \u0027segment\u0027)","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"b0ae5f21ccd3ad5f72544a97a60a6a432c2b72fd","unresolved":true,"context_lines":[{"line_number":147,"context_line":"    def get_optional_extensions(self):"},{"line_number":148,"context_line":"        return [stdattrseg_apidef.ALIAS]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_required_extensions(self):"},{"line_number":151,"context_line":"        return [ext_stddesc.Standardattrdescription.get_alias()]"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class SegmentPluginBase(object, metaclass\u003dabc.ABCMeta):"}],"source_content_type":"text/x-python","patch_set":2,"id":"4eb93441_5d4729d8","line":151,"range":{"start_line":150,"start_character":3,"end_line":151,"end_character":64},"in_reply_to":"49e97bcf_566cc0ca","updated":"2022-02-24 06:49:21.000000000","message":"you mean REQUIRED_EXTENSIONS \u003d [ext_stddesc.Standardattrdescription.get_alias()] instead as segment can\u0027t be added as required in segment extention itself?","commit_id":"b2d4bd8afa60d02a2a168c9868ae803908d6a774"}]}
