)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"28fc0d00_c0e103aa","updated":"2023-08-23 14:35:50.000000000","message":"Looking pretty good. Just have lots of docs nit and some suggestions for making the functional test case a bit faster.","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f94d58ce383b4377f43244b53d6ab9e6fa66f2f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ebc01741_1604f452","updated":"2023-08-24 10:05:23.000000000","message":"Thanks!","commit_id":"16c114dd66043ff45b21f1fd6f6d99a9e9d0d534"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ae1cc74e5fa82019faeba30e2582f2056eba3fe0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7e3061ba_fc7be720","updated":"2023-08-24 11:29:00.000000000","message":"recheck\ntest_servers_error is unrelated in py39","commit_id":"16c114dd66043ff45b21f1fd6f6d99a9e9d0d534"}],"doc/source/user/resources/network/index.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":".. toctree::"},{"line_number":5,"context_line":"   :maxdepth: 1"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"   v2/address_group"},{"line_number":8,"context_line":"   v2/address_scope"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9a9f0577_f2ad9230","line":5,"updated":"2023-08-23 14:35:50.000000000","message":"nit: would suggest replacing all of this with wildcards\n\n```\n.. toctree::\n   :maxdepth: 1\n   :glob:\n   \n   v2/*\n```\n\nwhich is something I\u0027ve been doing as I\u0027ve added missing resource documentation for glance, cinder etc. Maybe a nice follow-up?","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":".. toctree::"},{"line_number":5,"context_line":"   :maxdepth: 1"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"   v2/address_group"},{"line_number":8,"context_line":"   v2/address_scope"}],"source_content_type":"text/x-rst","patch_set":9,"id":"c2949be4_90cde0c5","line":5,"in_reply_to":"9a9f0577_f2ad9230","updated":"2023-08-24 09:43:45.000000000","message":"I suppose something like here:\nhttps://review.opendev.org/c/openstack/openstacksdk/+/891684/1/doc/source/user/resources/block_storage/index.rst\n\nI will check it, first it gave me some ugly traceback","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f94d58ce383b4377f43244b53d6ab9e6fa66f2f5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":".. toctree::"},{"line_number":5,"context_line":"   :maxdepth: 1"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"   v2/address_group"},{"line_number":8,"context_line":"   v2/address_scope"}],"source_content_type":"text/x-rst","patch_set":9,"id":"78776f3c_32073941","line":5,"in_reply_to":"c2949be4_90cde0c5","updated":"2023-08-24 10:05:23.000000000","message":"Yes exactly. I\u0027ll get to it myself at some point if you don\u0027t so all good","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"}],"openstack/network/v2/_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":6231,"context_line":""},{"line_number":6232,"context_line":"        :param flow_classifier:"},{"line_number":6233,"context_line":"            The value can be either the ID of a flow classifier or a"},{"line_number":6234,"context_line":"            :class:`~openstack.network.v2.sfc_flow_classifier.SfcFlowClassifier` instance."},{"line_number":6235,"context_line":"        :param bool ignore_missing: When set to ``False``"},{"line_number":6236,"context_line":"            :class:`~openstack.exceptions.ResourceNotFound` will be"},{"line_number":6237,"context_line":"            raised when the  flow classifier does not exist."}],"source_content_type":"text/x-python","patch_set":9,"id":"35978c5b_aab72041","line":6234,"updated":"2023-08-23 14:35:50.000000000","message":"nit: can you wrap?","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":6231,"context_line":""},{"line_number":6232,"context_line":"        :param flow_classifier:"},{"line_number":6233,"context_line":"            The value can be either the ID of a flow classifier or a"},{"line_number":6234,"context_line":"            :class:`~openstack.network.v2.sfc_flow_classifier.SfcFlowClassifier` instance."},{"line_number":6235,"context_line":"        :param bool ignore_missing: When set to ``False``"},{"line_number":6236,"context_line":"            :class:`~openstack.exceptions.ResourceNotFound` will be"},{"line_number":6237,"context_line":"            raised when the  flow classifier does not exist."}],"source_content_type":"text/x-python","patch_set":9,"id":"38c9a076_f8d1774d","line":6234,"in_reply_to":"35978c5b_aab72041","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":6251,"context_line":"    ):"},{"line_number":6252,"context_line":"        \"\"\"Find a single Flow Classifier"},{"line_number":6253,"context_line":""},{"line_number":6254,"context_line":"        :param str name_or_id: The ID of an SFC flow classifier."},{"line_number":6255,"context_line":"        :param bool ignore_missing: When set to ``False``"},{"line_number":6256,"context_line":"            :class:`~openstack.exceptions.ResourceNotFound` will be"},{"line_number":6257,"context_line":"            raised when the resource does not exist."}],"source_content_type":"text/x-python","patch_set":9,"id":"30b87789_28ac4d4c","line":6254,"range":{"start_line":6254,"start_character":31,"end_line":6254,"end_character":38},"updated":"2023-08-23 14:35:50.000000000","message":"nit: `The name or ID`. If there\u0027s no name attribute then don\u0027t provide a `find_` method. Ditto for all the other `find_` methods in here","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":6251,"context_line":"    ):"},{"line_number":6252,"context_line":"        \"\"\"Find a single Flow Classifier"},{"line_number":6253,"context_line":""},{"line_number":6254,"context_line":"        :param str name_or_id: The ID of an SFC flow classifier."},{"line_number":6255,"context_line":"        :param bool ignore_missing: When set to ``False``"},{"line_number":6256,"context_line":"            :class:`~openstack.exceptions.ResourceNotFound` will be"},{"line_number":6257,"context_line":"            raised when the resource does not exist."}],"source_content_type":"text/x-python","patch_set":9,"id":"3bcfc05f_fc32e656","line":6254,"range":{"start_line":6254,"start_character":31,"end_line":6254,"end_character":38},"in_reply_to":"30b87789_28ac4d4c","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":6271,"context_line":"        )"},{"line_number":6272,"context_line":""},{"line_number":6273,"context_line":"    def get_sfc_flow_classifier(self, flow_classifier):"},{"line_number":6274,"context_line":"        \"\"\"Get a signle Flow Classifier"},{"line_number":6275,"context_line":""},{"line_number":6276,"context_line":"        :param flow_classifier:"},{"line_number":6277,"context_line":"            The value can be the ID of an SFC flow classifier or a"}],"source_content_type":"text/x-python","patch_set":9,"id":"566a9720_d57e1c28","line":6274,"range":{"start_line":6274,"start_character":17,"end_line":6274,"end_character":23},"updated":"2023-08-23 14:35:50.000000000","message":"nit: single\n\nThere are multiple occurrences of this","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":6271,"context_line":"        )"},{"line_number":6272,"context_line":""},{"line_number":6273,"context_line":"    def get_sfc_flow_classifier(self, flow_classifier):"},{"line_number":6274,"context_line":"        \"\"\"Get a signle Flow Classifier"},{"line_number":6275,"context_line":""},{"line_number":6276,"context_line":"        :param flow_classifier:"},{"line_number":6277,"context_line":"            The value can be the ID of an SFC flow classifier or a"}],"source_content_type":"text/x-python","patch_set":9,"id":"05045a0c_e93cef79","line":6274,"range":{"start_line":6274,"start_character":17,"end_line":6274,"end_character":23},"in_reply_to":"566a9720_d57e1c28","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":6287,"context_line":"        )"},{"line_number":6288,"context_line":""},{"line_number":6289,"context_line":"    def update_sfc_flow_classifier(self, flow_classifier, **attrs):"},{"line_number":6290,"context_line":"        \"\"\"Update a Flow Classifier\"\"\""},{"line_number":6291,"context_line":"        return self._update("},{"line_number":6292,"context_line":"            _sfc_flow_classifier.SfcFlowClassifier, flow_classifier, **attrs"},{"line_number":6293,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"f0ef3025_5ab26281","line":6290,"updated":"2023-08-23 14:35:50.000000000","message":"Parameter documentation? Ditto for the rest of the `update_` methods in here","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":6287,"context_line":"        )"},{"line_number":6288,"context_line":""},{"line_number":6289,"context_line":"    def update_sfc_flow_classifier(self, flow_classifier, **attrs):"},{"line_number":6290,"context_line":"        \"\"\"Update a Flow Classifier\"\"\""},{"line_number":6291,"context_line":"        return self._update("},{"line_number":6292,"context_line":"            _sfc_flow_classifier.SfcFlowClassifier, flow_classifier, **attrs"},{"line_number":6293,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"1431e9a6_bb2fc1b4","line":6290,"in_reply_to":"f0ef3025_5ab26281","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":6296,"context_line":"        \"\"\"Return a generator of Flow Classifiers"},{"line_number":6297,"context_line":""},{"line_number":6298,"context_line":"        :param kwargs query: Optional query parameters to be sent to limit"},{"line_number":6299,"context_line":"            the resources being returned. Available parameters include:"},{"line_number":6300,"context_line":"            * ``name``: The name of the flow classifier."},{"line_number":6301,"context_line":"            * ``description``: The flow classifier description"},{"line_number":6302,"context_line":"            * ``ethertype``: Must be IPv4 or IPv6."}],"source_content_type":"text/x-python","patch_set":9,"id":"95619422_091775a4","line":6299,"updated":"2023-08-23 14:35:50.000000000","message":"nit: need a newline under this for it to render correctly","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":6296,"context_line":"        \"\"\"Return a generator of Flow Classifiers"},{"line_number":6297,"context_line":""},{"line_number":6298,"context_line":"        :param kwargs query: Optional query parameters to be sent to limit"},{"line_number":6299,"context_line":"            the resources being returned. Available parameters include:"},{"line_number":6300,"context_line":"            * ``name``: The name of the flow classifier."},{"line_number":6301,"context_line":"            * ``description``: The flow classifier description"},{"line_number":6302,"context_line":"            * ``ethertype``: Must be IPv4 or IPv6."}],"source_content_type":"text/x-python","patch_set":9,"id":"6fb263cf_3b9d7625","line":6299,"in_reply_to":"95619422_091775a4","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"}],"openstack/network/v2/sfc_flow_classifier.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":18,"context_line":"    resources_key \u003d \u0027flow_classifiers\u0027"},{"line_number":19,"context_line":"    base_path \u003d \u0027/sfc/flow_classifiers\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    _allow_unknown_attrs_in_body \u003d True"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # capabilities"},{"line_number":24,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"70f66535_7468de4f","line":21,"updated":"2023-08-23 14:35:50.000000000","message":"Is this necessary? Could you comment why?","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":true,"context_lines":[{"line_number":18,"context_line":"    resources_key \u003d \u0027flow_classifiers\u0027"},{"line_number":19,"context_line":"    base_path \u003d \u0027/sfc/flow_classifiers\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    _allow_unknown_attrs_in_body \u003d True"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # capabilities"},{"line_number":24,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"f07715a6_30fec8fb","line":21,"in_reply_to":"70f66535_7468de4f","updated":"2023-08-24 09:43:45.000000000","message":"Most of Neutron resources have this, so it was more or less automatic, but you are right we can add anytime if it is really needed.","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f94d58ce383b4377f43244b53d6ab9e6fa66f2f5","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    resources_key \u003d \u0027flow_classifiers\u0027"},{"line_number":19,"context_line":"    base_path \u003d \u0027/sfc/flow_classifiers\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    _allow_unknown_attrs_in_body \u003d True"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # capabilities"},{"line_number":24,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"bbc9e4ff_e1e6170f","line":21,"in_reply_to":"f07715a6_30fec8fb","updated":"2023-08-24 10:05:23.000000000","message":"Ack","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":58,"context_line":"    #: udp (17), udplite (136), vrrp (112)."},{"line_number":59,"context_line":"    protocol \u003d resource.Body(\u0027protocol\u0027)"},{"line_number":60,"context_line":"    #: Minimum source protocol port."},{"line_number":61,"context_line":"    source_port_range_min \u003d resource.Body(\u0027source_port_range_min\u0027)"},{"line_number":62,"context_line":"    #: Maximum source protocol port."},{"line_number":63,"context_line":"    source_port_range_max \u003d resource.Body(\u0027source_port_range_max\u0027)"},{"line_number":64,"context_line":"    #: Minimum destination protocol port."}],"source_content_type":"text/x-python","patch_set":9,"id":"6b99ae61_61ac8adc","line":61,"updated":"2023-08-23 14:35:50.000000000","message":"Is this an int? `type\u003dint` if so. Ditto for the other min/max values.","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    #: udp (17), udplite (136), vrrp (112)."},{"line_number":59,"context_line":"    protocol \u003d resource.Body(\u0027protocol\u0027)"},{"line_number":60,"context_line":"    #: Minimum source protocol port."},{"line_number":61,"context_line":"    source_port_range_min \u003d resource.Body(\u0027source_port_range_min\u0027)"},{"line_number":62,"context_line":"    #: Maximum source protocol port."},{"line_number":63,"context_line":"    source_port_range_max \u003d resource.Body(\u0027source_port_range_max\u0027)"},{"line_number":64,"context_line":"    #: Minimum destination protocol port."}],"source_content_type":"text/x-python","patch_set":9,"id":"69c86e68_23cd2bc7","line":61,"in_reply_to":"6b99ae61_61ac8adc","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"}],"openstack/network/v2/sfc_port_chain.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":18,"context_line":"    resources_key \u003d \u0027port_chains\u0027"},{"line_number":19,"context_line":"    base_path \u003d \u0027/sfc/port_chains\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    _allow_unknown_attrs_in_body \u003d True"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # capabilities"},{"line_number":24,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"9e1061c2_88b1a686","line":21,"updated":"2023-08-23 14:35:50.000000000","message":"same comment: is this necessary? Ditto for the rest of the resources","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    resources_key \u003d \u0027port_chains\u0027"},{"line_number":19,"context_line":"    base_path \u003d \u0027/sfc/port_chains\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    _allow_unknown_attrs_in_body \u003d True"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # capabilities"},{"line_number":24,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"a5d9eb85_5f0bdcfa","line":21,"in_reply_to":"9e1061c2_88b1a686","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"}],"openstack/network/v2/sfc_port_pair_group.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    )"},{"line_number":54,"context_line":"    #: True if passive Tap service functions support is enabled,"},{"line_number":55,"context_line":"    #: default is False."},{"line_number":56,"context_line":"    tap_enabled \u003d resource.Body(\u0027tap_enabled\u0027)"},{"line_number":57,"context_line":"    project_id \u003d resource.Body(\u0027project_id\u0027, alias\u003d\u0027tenant_id\u0027)"},{"line_number":58,"context_line":"    #: Tenant_id (deprecated attribute)."},{"line_number":59,"context_line":"    tenant_id \u003d resource.Body(\u0027tenant_id\u0027, deprecated\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ec4ff3a9_98606088","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":15},"updated":"2023-08-23 14:35:50.000000000","message":"We prefix boolean values with `is_`. Also, perhaps mark up the type assuming it\u0027s returned from the API as a boolean rather than string.","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    )"},{"line_number":54,"context_line":"    #: True if passive Tap service functions support is enabled,"},{"line_number":55,"context_line":"    #: default is False."},{"line_number":56,"context_line":"    tap_enabled \u003d resource.Body(\u0027tap_enabled\u0027)"},{"line_number":57,"context_line":"    project_id \u003d resource.Body(\u0027project_id\u0027, alias\u003d\u0027tenant_id\u0027)"},{"line_number":58,"context_line":"    #: Tenant_id (deprecated attribute)."},{"line_number":59,"context_line":"    tenant_id \u003d resource.Body(\u0027tenant_id\u0027, deprecated\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"93326780_bc2ec9d2","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":15},"in_reply_to":"ec4ff3a9_98606088","updated":"2023-08-24 09:43:45.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"}],"openstack/tests/functional/network/v2/test_sfc.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"50044b0e7ef531341c491628962bbada8c9074dd","unresolved":true,"context_lines":[{"line_number":130,"context_line":"        self.PORT_CHAIN \u003d port_chain"},{"line_number":131,"context_line":"        self.PC_ID \u003d port_chain.id"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # service_graph \u003d self.op_net_client.create_sfc_service_graph("},{"line_number":134,"context_line":"        #     name\u003dself.SERVICE_GRAPH_NAME,"},{"line_number":135,"context_line":"        #     port_chains\u003d{self.PC_ID: [self.PC_ID, ]}"},{"line_number":136,"context_line":"        # )"},{"line_number":137,"context_line":"        # assert isinstance(service_graph, _service_graph.SfcServiceGraph)"},{"line_number":138,"context_line":"        # self.SERVICE_GRAPH \u003d service_graph"},{"line_number":139,"context_line":"        # self.SG_ID \u003d service_graph.id"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def _create_port(self, network, port_name):"},{"line_number":142,"context_line":"        port \u003d self.op_net_client.create_port("}],"source_content_type":"text/x-python","patch_set":6,"id":"c6203edb_05793a35","line":139,"range":{"start_line":133,"start_character":0,"end_line":139,"end_character":39},"updated":"2023-08-03 16:33:38.000000000","message":"I have to work on this, I got back weird failures, I suppose I mess up something in the parameters....","commit_id":"b2ec7c9ec2797bfc526ac51ce170bf99088a8f5e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.PORT_CHAIN \u003d port_chain"},{"line_number":131,"context_line":"        self.PC_ID \u003d port_chain.id"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # service_graph \u003d self.op_net_client.create_sfc_service_graph("},{"line_number":134,"context_line":"        #     name\u003dself.SERVICE_GRAPH_NAME,"},{"line_number":135,"context_line":"        #     port_chains\u003d{self.PC_ID: [self.PC_ID, ]}"},{"line_number":136,"context_line":"        # )"},{"line_number":137,"context_line":"        # assert isinstance(service_graph, _service_graph.SfcServiceGraph)"},{"line_number":138,"context_line":"        # self.SERVICE_GRAPH \u003d service_graph"},{"line_number":139,"context_line":"        # self.SG_ID \u003d service_graph.id"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def _create_port(self, network, port_name):"},{"line_number":142,"context_line":"        port \u003d self.op_net_client.create_port("}],"source_content_type":"text/x-python","patch_set":6,"id":"edc2defb_33c553e5","line":139,"range":{"start_line":133,"start_character":0,"end_line":139,"end_character":39},"in_reply_to":"c6203edb_05793a35","updated":"2023-08-23 14:35:50.000000000","message":"Done","commit_id":"b2ec7c9ec2797bfc526ac51ce170bf99088a8f5e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1ba6f8eab253d4888f34508c96bab1e6aa7b10c5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1ea960b1_01d2c723","updated":"2023-08-07 09:44:54.000000000","message":"To test port_pairs/port_pair_groups/port_chains/service_graphs ports with binding:hist_id and device_id are necessary. I tried to hack that around but I feel it as an overkill to test sfc functionality from SDK, please vote on my decision.","commit_id":"e4d1198234085cb1e75a68af8aaa9f8478d191d7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8002f1ca_921edda9","in_reply_to":"0cc718b4_a6b4a7d5","updated":"2023-08-23 14:35:50.000000000","message":"Done","commit_id":"e4d1198234085cb1e75a68af8aaa9f8478d191d7"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"1916181d29b48e58fe36174e6156ea9183447137","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a5ce5b16_3cfad7eb","in_reply_to":"1ea960b1_01d2c723","updated":"2023-08-23 07:58:36.000000000","message":"we don\u0027t really need to test remote service functionality. We only try to verify we can send requests to the server and they are understood, as well as we understand what we get back. There are clearly very complex services which we can\u0027t test reasonably (i.e. vpn). For me this is ok","commit_id":"e4d1198234085cb1e75a68af8aaa9f8478d191d7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7ed7f908f6605b467968846d4e583a5623e87a9e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0cc718b4_a6b4a7d5","in_reply_to":"a5ce5b16_3cfad7eb","updated":"2023-08-23 12:24:05.000000000","message":"thanks","commit_id":"e4d1198234085cb1e75a68af8aaa9f8478d191d7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        self.op_net_client \u003d self.operator_cloud.network"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        net \u003d self.op_net_client.create_network(name\u003dself.NET_NAME)"},{"line_number":54,"context_line":"        assert isinstance(net, _network.Network)"},{"line_number":55,"context_line":"        self.NETWORK \u003d net"},{"line_number":56,"context_line":"        subnet \u003d self.operator_cloud.network.create_subnet("},{"line_number":57,"context_line":"            name\u003dself.SUBNET_NAME,"}],"source_content_type":"text/x-python","patch_set":9,"id":"47172d4c_bf92dd67","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":25},"updated":"2023-08-23 14:35:50.000000000","message":"nit: use `self.assertIsInstance` for richer failure logs (this isn\u0027t pytest, sadly 😞)","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        self.op_net_client \u003d self.operator_cloud.network"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        net \u003d self.op_net_client.create_network(name\u003dself.NET_NAME)"},{"line_number":54,"context_line":"        assert isinstance(net, _network.Network)"},{"line_number":55,"context_line":"        self.NETWORK \u003d net"},{"line_number":56,"context_line":"        subnet \u003d self.operator_cloud.network.create_subnet("},{"line_number":57,"context_line":"            name\u003dself.SUBNET_NAME,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bddbd1f8_915068d0","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":25},"in_reply_to":"47172d4c_bf92dd67","updated":"2023-08-24 09:43:45.000000000","message":"Thanks, I changed","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"fac60b30026b2d0c631d85f0b6a860e92849d5b2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        self.op_net_client \u003d self.operator_cloud.network"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        net \u003d self.op_net_client.create_network(name\u003dself.NET_NAME)"},{"line_number":54,"context_line":"        assert isinstance(net, _network.Network)"},{"line_number":55,"context_line":"        self.NETWORK \u003d net"},{"line_number":56,"context_line":"        subnet \u003d self.operator_cloud.network.create_subnet("},{"line_number":57,"context_line":"            name\u003dself.SUBNET_NAME,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1521e662_159c4759","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":25},"in_reply_to":"bddbd1f8_915068d0","updated":"2023-08-24 09:44:36.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f90f19756c335fd4c686d76963c7ca74ad3567dc","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        self.assertIsNone(sot)"},{"line_number":111,"context_line":"        super().tearDown()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def test_find_sfc_flow_classifier(self):"},{"line_number":114,"context_line":"        sot \u003d self.operator_cloud.network.find_sfc_flow_classifier("},{"line_number":115,"context_line":"            self.FLOW_CLASSIFIER.name"},{"line_number":116,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"1387d137_d53d004e","line":113,"updated":"2023-08-23 14:35:50.000000000","message":"super nit: Of late I\u0027ve started combining all of these into a single test e.g. `test_sfc_flow_classifier`. We don\u0027t use `setUpClass` so if you don\u0027t do this, every test results in the creation of a new resource.","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6ef7cfd8a1b10b363a02c4d391dac214186f1fda","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        self.assertIsNone(sot)"},{"line_number":111,"context_line":"        super().tearDown()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def test_find_sfc_flow_classifier(self):"},{"line_number":114,"context_line":"        sot \u003d self.operator_cloud.network.find_sfc_flow_classifier("},{"line_number":115,"context_line":"            self.FLOW_CLASSIFIER.name"},{"line_number":116,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"23c45ea2_b7d44f0b","line":113,"in_reply_to":"1387d137_d53d004e","updated":"2023-08-24 09:43:45.000000000","message":"yeah setupClass was/is really missing.","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f94d58ce383b4377f43244b53d6ab9e6fa66f2f5","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.assertIsNone(sot)"},{"line_number":111,"context_line":"        super().tearDown()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def test_find_sfc_flow_classifier(self):"},{"line_number":114,"context_line":"        sot \u003d self.operator_cloud.network.find_sfc_flow_classifier("},{"line_number":115,"context_line":"            self.FLOW_CLASSIFIER.name"},{"line_number":116,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"c518d173_b104ebf2","line":113,"in_reply_to":"23c45ea2_b7d44f0b","updated":"2023-08-24 10:05:23.000000000","message":"Done","commit_id":"784467bcea2246d3fe1e85a75f62a24053b44519"}]}
