)]}'
{"openstack/network/v2/metering_label_rule.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9c968c41c5e7b82085653483eebd76ffe0ce8e06","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    #: The ID of the project this metering label rule is associated with."},{"line_number":48,"context_line":"    project_id \u003d resource.Body(\u0027tenant_id\u0027)"},{"line_number":49,"context_line":"    #: The remote IP prefix to be associated with this metering label rule."},{"line_number":50,"context_line":"    remote_ip_prefix \u003d resource.Body(\u0027remote_ip_prefix\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __getattribute__(self, attr):"},{"line_number":53,"context_line":"        value \u003d super(MeteringLabelRule, self).__getattribute__(attr)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_c1246db5","line":50,"updated":"2020-09-16 07:49:52.000000000","message":"I\u0027d rather see something like oslo.config:\n\n resource.Body(\u0027remote_ip_prefix\u0027, deprecated\u003dTrue, deprecation_reason\u003d\"...\")","commit_id":"48c63f39c92bd95b8131b03122f2e508a4755cca"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"54316b10cf9e145a761b61848fafea276e5764b3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    #: The ID of the project this metering label rule is associated with."},{"line_number":48,"context_line":"    project_id \u003d resource.Body(\u0027tenant_id\u0027)"},{"line_number":49,"context_line":"    #: The remote IP prefix to be associated with this metering label rule."},{"line_number":50,"context_line":"    remote_ip_prefix \u003d resource.Body(\u0027remote_ip_prefix\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __getattribute__(self, attr):"},{"line_number":53,"context_line":"        value \u003d super(MeteringLabelRule, self).__getattribute__(attr)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_11f17296","line":50,"in_reply_to":"9f560f44_4becf78e","updated":"2020-09-17 14:25:51.000000000","message":"you was not aware because it doesn\u0027t exist yet","commit_id":"48c63f39c92bd95b8131b03122f2e508a4755cca"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"397da9358d1f42c7e6ad2784a1980e93abe9b35d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    #: The ID of the project this metering label rule is associated with."},{"line_number":48,"context_line":"    project_id \u003d resource.Body(\u0027tenant_id\u0027)"},{"line_number":49,"context_line":"    #: The remote IP prefix to be associated with this metering label rule."},{"line_number":50,"context_line":"    remote_ip_prefix \u003d resource.Body(\u0027remote_ip_prefix\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __getattribute__(self, attr):"},{"line_number":53,"context_line":"        value \u003d super(MeteringLabelRule, self).__getattribute__(attr)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_4becf78e","line":50,"in_reply_to":"9f560f44_c1246db5","updated":"2020-09-16 11:39:12.000000000","message":"Thanks, I was not aware of that.","commit_id":"48c63f39c92bd95b8131b03122f2e508a4755cca"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9c968c41c5e7b82085653483eebd76ffe0ce8e06","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def __getattribute__(self, attr):"},{"line_number":53,"context_line":"        value \u003d super(MeteringLabelRule, self).__getattribute__(attr)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if value and \u0027remote_ip_prefix\u0027 \u003d\u003d attr:"},{"line_number":56,"context_line":"            _logger.warning("},{"line_number":57,"context_line":"                \"The use of \u0027remote_ip_prefix\u0027 in metering label rules is \""},{"line_number":58,"context_line":"                \"deprecated and will be removed in future releases. One \""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_a129798a","line":55,"updated":"2020-09-16 07:49:52.000000000","message":"No logging will be warned if the field is accessed but contains no value. Why is that?","commit_id":"48c63f39c92bd95b8131b03122f2e508a4755cca"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"397da9358d1f42c7e6ad2784a1980e93abe9b35d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def __getattribute__(self, attr):"},{"line_number":53,"context_line":"        value \u003d super(MeteringLabelRule, self).__getattribute__(attr)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if value and \u0027remote_ip_prefix\u0027 \u003d\u003d attr:"},{"line_number":56,"context_line":"            _logger.warning("},{"line_number":57,"context_line":"                \"The use of \u0027remote_ip_prefix\u0027 in metering label rules is \""},{"line_number":58,"context_line":"                \"deprecated and will be removed in future releases. One \""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_8bfd6f3d","line":55,"in_reply_to":"9f560f44_a129798a","updated":"2020-09-16 11:39:12.000000000","message":"Because that means people are not actually using it. So, we do not log anything.","commit_id":"48c63f39c92bd95b8131b03122f2e508a4755cca"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9c968c41c5e7b82085653483eebd76ffe0ce8e06","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                \"The use of \u0027remote_ip_prefix\u0027 in metering label rules is \""},{"line_number":58,"context_line":"                \"deprecated and will be removed in future releases. One \""},{"line_number":59,"context_line":"                \"should use instead, the \u0027source_ip_prefix\u0027 and/or \""},{"line_number":60,"context_line":"                \"\u0027destination_ip_prefix\u0027 parameters. For more details, you \""},{"line_number":61,"context_line":"                \"can check the spec: https://review.opendev.org/#/c/744702/.\")"},{"line_number":62,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_011f855b","line":60,"updated":"2020-09-16 07:49:52.000000000","message":"Maybe I\u0027m missing something, but I don\u0027t see the mentioned fields on this Resource","commit_id":"48c63f39c92bd95b8131b03122f2e508a4755cca"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"397da9358d1f42c7e6ad2784a1980e93abe9b35d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                \"The use of \u0027remote_ip_prefix\u0027 in metering label rules is \""},{"line_number":58,"context_line":"                \"deprecated and will be removed in future releases. One \""},{"line_number":59,"context_line":"                \"should use instead, the \u0027source_ip_prefix\u0027 and/or \""},{"line_number":60,"context_line":"                \"\u0027destination_ip_prefix\u0027 parameters. For more details, you \""},{"line_number":61,"context_line":"                \"can check the spec: https://review.opendev.org/#/c/744702/.\")"},{"line_number":62,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_ab003337","line":60,"in_reply_to":"9f560f44_011f855b","updated":"2020-09-16 11:39:12.000000000","message":"I do not understand what you mean.","commit_id":"48c63f39c92bd95b8131b03122f2e508a4755cca"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b054a83a5ab192dbeb0aed139165e87463e254cf","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    #: The remote IP prefix to be associated with this metering label rule."},{"line_number":50,"context_line":"    remote_ip_prefix \u003d resource.Body("},{"line_number":51,"context_line":"        \u0027remote_ip_prefix\u0027, deprecated\u003dTrue,"},{"line_number":52,"context_line":"        deprecation_reason\u003d\"The use of \u0027remote_ip_prefix\u0027 in metering label \""},{"line_number":53,"context_line":"                           \"rules is deprecated and will be removed in future \""},{"line_number":54,"context_line":"                           \"releases. One should use instead, the \""},{"line_number":55,"context_line":"                           \"\u0027source_ip_prefix\u0027 and/or \u0027destination_ip_prefix\u0027 \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_645c61f0","line":52,"updated":"2020-10-05 10:52:14.000000000","message":"I don\u0027t see any implementation of deprecated and deprecation_reason in resource.Body","commit_id":"817c3d9753b1ef33657a36833ded4f3062e37deb"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8fdbf112ecee83f4de89f6806b26e158a10017e4","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    #: The remote IP prefix to be associated with this metering label rule."},{"line_number":50,"context_line":"    remote_ip_prefix \u003d resource.Body("},{"line_number":51,"context_line":"        \u0027remote_ip_prefix\u0027, deprecated\u003dTrue,"},{"line_number":52,"context_line":"        deprecation_reason\u003d\"The use of \u0027remote_ip_prefix\u0027 in metering label \""},{"line_number":53,"context_line":"                           \"rules is deprecated and will be removed in future \""},{"line_number":54,"context_line":"                           \"releases. One should use instead, the \""},{"line_number":55,"context_line":"                           \"\u0027source_ip_prefix\u0027 and/or \u0027destination_ip_prefix\u0027 \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_7fb508ed","line":52,"in_reply_to":"9f560f44_645c61f0","updated":"2020-10-05 11:56:31.000000000","message":"I am not following. That was your suggestion on patch set 4.\n\nYou said the following:\n\n```\nI\u0027d rather see something like oslo.config:\n resource.Body(\u0027remote_ip_prefix\u0027, deprecated\u003dTrue, deprecation_reason\u003d\"...\")\n```\n\nIf these functions do not exist there, why suggest it? I assumed that it existed as you suggested it. Also, we are not implementing the deprecate functions per se; a discussion here concerning them (the body deprecation options) does not help.\n\nAnyways, we are implementing a deprecation notice for an option in the `MeteringLabelRule`. Therefore, I am a bit confused now. What does the community would accept as a deprecation notice here? My initial proposal, the suggestion of Dmitry Tantsur (that he gave a -1), or something else?","commit_id":"817c3d9753b1ef33657a36833ded4f3062e37deb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1bbcec8b5e2e53dec76d372b455d577c5dd15a6a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    #: The remote IP prefix to be associated with this metering label rule."},{"line_number":50,"context_line":"    remote_ip_prefix \u003d resource.Body("},{"line_number":51,"context_line":"        \u0027remote_ip_prefix\u0027, deprecated\u003dTrue,"},{"line_number":52,"context_line":"        deprecation_reason\u003d\"The use of \u0027remote_ip_prefix\u0027 in metering label \""},{"line_number":53,"context_line":"                           \"rules is deprecated and will be removed in future \""},{"line_number":54,"context_line":"                           \"releases. One should use instead, the \""},{"line_number":55,"context_line":"                           \"\u0027source_ip_prefix\u0027 and/or \u0027destination_ip_prefix\u0027 \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_bf632045","line":52,"in_reply_to":"9f560f44_7fb508ed","updated":"2020-10-05 12:07:49.000000000","message":"I suggested them because should be trivial to implement, maybe even with the same __getattribute__ trick, but on the Resource level.","commit_id":"817c3d9753b1ef33657a36833ded4f3062e37deb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b9f0e2e0b835b27b002c0be6f8c353b799e10943","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from openstack import _log"},{"line_number":14,"context_line":"from openstack import resource"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_logger \u003d _log.setup_logging(\u0027openstack\u0027)"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class MeteringLabelRule(resource.Resource):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_500bad29","line":16,"updated":"2020-10-07 15:42:22.000000000","message":"nit: no longer needed","commit_id":"3e2b7a4c96b6af70c0c2817e73945ee07dd7b43d"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"bfeab51f74cba53437916dc3111b9fa160923cca","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from openstack import _log"},{"line_number":14,"context_line":"from openstack import resource"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_logger \u003d _log.setup_logging(\u0027openstack\u0027)"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class MeteringLabelRule(resource.Resource):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d35d07ed","line":16,"in_reply_to":"9f560f44_500bad29","updated":"2020-10-07 15:53:58.000000000","message":"Done","commit_id":"3e2b7a4c96b6af70c0c2817e73945ee07dd7b43d"}],"openstack/resource.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b9f0e2e0b835b27b002c0be6f8c353b799e10943","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        deprecated \u003d object.__getattribute__(self, \u0027deprecated\u0027)"},{"line_number":192,"context_line":"        deprecate_reason \u003d object.__getattribute__(self, \u0027deprecation_reason\u0027)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        if value and deprecated and not self.already_warned_deprecation:"},{"line_number":195,"context_line":"            self.already_warned_deprecation \u003d True"},{"line_number":196,"context_line":"            if not deprecate_reason:"},{"line_number":197,"context_line":"                LOG.warning(\"The option [%s] has been deprecated. \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_3008b92b","line":194,"updated":"2020-10-07 15:42:22.000000000","message":"Hmm, I wonder if we should issue a warning even if value is empty.","commit_id":"3e2b7a4c96b6af70c0c2817e73945ee07dd7b43d"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"bfeab51f74cba53437916dc3111b9fa160923cca","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        deprecated \u003d object.__getattribute__(self, \u0027deprecated\u0027)"},{"line_number":192,"context_line":"        deprecate_reason \u003d object.__getattribute__(self, \u0027deprecation_reason\u0027)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        if value and deprecated and not self.already_warned_deprecation:"},{"line_number":195,"context_line":"            self.already_warned_deprecation \u003d True"},{"line_number":196,"context_line":"            if not deprecate_reason:"},{"line_number":197,"context_line":"                LOG.warning(\"The option [%s] has been deprecated. \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_b307b3c9","line":194,"in_reply_to":"9f560f44_3008b92b","updated":"2020-10-07 15:53:58.000000000","message":"I thought about that. However, if I do not check `value` here, even if the end user does not use the property we would warning it, because we warn when the variable is used in the code of the openstack sdk and not just when the end user is defining it somehow.","commit_id":"3e2b7a4c96b6af70c0c2817e73945ee07dd7b43d"}]}
