)]}'
{"oslo_policy/policy.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a6bfb2663ebac65b952a632dcd6e303d29b07f25","unresolved":true,"context_lines":[{"line_number":1418,"context_line":"            name\u003d\u0027foo:bar\u0027,"},{"line_number":1419,"context_line":"            check_str\u003d\u0027role:bazz\u0027"},{"line_number":1420,"context_line":"            deprecated_reason\u003d("},{"line_number":1421,"context_line":"                \u0027foo:bar has been replaced by more granular policies\u0027"},{"line_number":1422,"context_line":"            ),"},{"line_number":1423,"context_line":"            deprecated_since\u003d\u0027N\u0027,"},{"line_number":1424,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"40f0d8c9_74a4e3b8","line":1421,"range":{"start_line":1421,"start_character":0,"end_line":1421,"end_character":69},"updated":"2021-01-21 21:16:06.000000000","message":"+1, I think granular is one scenario where a single deprecated rule will be replaced by multiple new one. even any other scenario we can mention reason here with all new rules also.","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59fcf19dc4d54710d16c0ed36b57620579756041","unresolved":false,"context_lines":[{"line_number":1418,"context_line":"            name\u003d\u0027foo:bar\u0027,"},{"line_number":1419,"context_line":"            check_str\u003d\u0027role:bazz\u0027"},{"line_number":1420,"context_line":"            deprecated_reason\u003d("},{"line_number":1421,"context_line":"                \u0027foo:bar has been replaced by more granular policies\u0027"},{"line_number":1422,"context_line":"            ),"},{"line_number":1423,"context_line":"            deprecated_since\u003d\u0027N\u0027,"},{"line_number":1424,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"2b65dec2_39f271dc","line":1421,"range":{"start_line":1421,"start_character":0,"end_line":1421,"end_character":69},"in_reply_to":"40f0d8c9_74a4e3b8","updated":"2021-01-22 09:38:11.000000000","message":"Ack","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a6bfb2663ebac65b952a632dcd6e303d29b07f25","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"        *,"},{"line_number":1486,"context_line":"        deprecated_reason: ty.Optional[str] \u003d None,"},{"line_number":1487,"context_line":"        deprecated_since: ty.Optional[str] \u003d None,"},{"line_number":1488,"context_line":"    ):"},{"line_number":1489,"context_line":"        self.name \u003d name"},{"line_number":1490,"context_line":"        self.check_str \u003d check_str"},{"line_number":1491,"context_line":"        self.deprecated_reason \u003d deprecated_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"82de934f_b6393593","line":1488,"range":{"start_line":1488,"start_character":1,"end_line":1488,"end_character":5},"updated":"2021-01-21 21:16:06.000000000","message":"we should take deprecated_for_removal also to mark that it is going to be removed in future.","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59fcf19dc4d54710d16c0ed36b57620579756041","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"        *,"},{"line_number":1486,"context_line":"        deprecated_reason: ty.Optional[str] \u003d None,"},{"line_number":1487,"context_line":"        deprecated_since: ty.Optional[str] \u003d None,"},{"line_number":1488,"context_line":"    ):"},{"line_number":1489,"context_line":"        self.name \u003d name"},{"line_number":1490,"context_line":"        self.check_str \u003d check_str"},{"line_number":1491,"context_line":"        self.deprecated_reason \u003d deprecated_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"62714dce_9f43e20a","line":1488,"range":{"start_line":1488,"start_character":1,"end_line":1488,"end_character":5},"in_reply_to":"25af8af2_70d29ba5","updated":"2021-01-22 09:38:11.000000000","message":"\u003e we should take deprecated_for_removal also to mark that it is going to be removed in future.\n\nIsn\u0027t that implicit in the fact that this is called \u0027DeprecatedRule\u0027 and can only be used as part of a \u0027(Documented)RuleDefault.deprecated_rule\u0027 value?\n\n\u003e In that case - would users create a new DeprecatedRule with the same name and check_str as the original, then set deprecated_for_removal?\n\nNo, I don\u0027t think that\u0027s wise. I\u0027d expect people to set \u0027deprecated_rule\u0027 if they\u0027re changing the \u0027check_str\u0027 or \u0027scope_type\u0027 values or replacing the rule with an entirely new rule (or set of rules),  however, if they\u0027re simply deprecating the policy with no replacement then they should set \u0027deprecated_for_removal\u0027.","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"852262e98c940c88f8c58133201ee16342f93cf8","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"        *,"},{"line_number":1486,"context_line":"        deprecated_reason: ty.Optional[str] \u003d None,"},{"line_number":1487,"context_line":"        deprecated_since: ty.Optional[str] \u003d None,"},{"line_number":1488,"context_line":"    ):"},{"line_number":1489,"context_line":"        self.name \u003d name"},{"line_number":1490,"context_line":"        self.check_str \u003d check_str"},{"line_number":1491,"context_line":"        self.deprecated_reason \u003d deprecated_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"a726142d_6d58cb35","line":1488,"range":{"start_line":1488,"start_character":1,"end_line":1488,"end_character":5},"in_reply_to":"62714dce_9f43e20a","updated":"2021-01-22 14:11:25.000000000","message":"yeah it can be in any case like stephen mentioned (changing default value, check_str or name). Other than name change I agree that deprecated_for_removal does not make sense but if policy name is changed (replacing with new name) ten old name is deprecated_for_removal right. Without deprecated_for_removal it can be case that I will keep both old and new rule.\n\nIf we think from old rule usage perspective then deprecated_for_removal info can be useful for users as they might be not sure that \u0027replacing with new rule always means old will be removed always\u0027","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cf933d7790a53be4d5a4b86986256cef13782e5c","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"        *,"},{"line_number":1486,"context_line":"        deprecated_reason: ty.Optional[str] \u003d None,"},{"line_number":1487,"context_line":"        deprecated_since: ty.Optional[str] \u003d None,"},{"line_number":1488,"context_line":"    ):"},{"line_number":1489,"context_line":"        self.name \u003d name"},{"line_number":1490,"context_line":"        self.check_str \u003d check_str"},{"line_number":1491,"context_line":"        self.deprecated_reason \u003d deprecated_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"25af8af2_70d29ba5","line":1488,"range":{"start_line":1488,"start_character":1,"end_line":1488,"end_character":5},"in_reply_to":"82de934f_b6393593","updated":"2021-01-22 04:24:12.000000000","message":"In that case - would users create a new DeprecatedRule with the same name and check_str as the original, then set deprecated_for_removal?","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"01bf0624888fa55240ed51a8d46b1410f6527192","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"        *,"},{"line_number":1486,"context_line":"        deprecated_reason: ty.Optional[str] \u003d None,"},{"line_number":1487,"context_line":"        deprecated_since: ty.Optional[str] \u003d None,"},{"line_number":1488,"context_line":"    ):"},{"line_number":1489,"context_line":"        self.name \u003d name"},{"line_number":1490,"context_line":"        self.check_str \u003d check_str"},{"line_number":1491,"context_line":"        self.deprecated_reason \u003d deprecated_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"a714370b_dc4a1eef","line":1488,"range":{"start_line":1488,"start_character":1,"end_line":1488,"end_character":5},"in_reply_to":"9f754dbe_1e299695","updated":"2021-01-22 18:13:46.000000000","message":"I think it make sense on notify the rule we are replacing vs rule is going forever. I see the example of API going away like nova network and their policy could have use deprecated_for_removal at same time. \n\nI understand the use case now thanks for clarification.","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"df70cef3960d42b70dcd5d4c1d2f3a622d824723","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"        *,"},{"line_number":1486,"context_line":"        deprecated_reason: ty.Optional[str] \u003d None,"},{"line_number":1487,"context_line":"        deprecated_since: ty.Optional[str] \u003d None,"},{"line_number":1488,"context_line":"    ):"},{"line_number":1489,"context_line":"        self.name \u003d name"},{"line_number":1490,"context_line":"        self.check_str \u003d check_str"},{"line_number":1491,"context_line":"        self.deprecated_reason \u003d deprecated_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f754dbe_1e299695","line":1488,"range":{"start_line":1488,"start_character":1,"end_line":1488,"end_character":5},"in_reply_to":"a726142d_6d58cb35","updated":"2021-01-22 17:58:31.000000000","message":"\u003e yeah it can be in any case like stephen mentioned (changing default value, check_str or name). Other than name change I agree that deprecated_for_removal does not make sense but if policy name is changed (replacing with new name) ten old name is deprecated_for_removal right. Without deprecated_for_removal it can be case that I will keep both old and new rule.\n\u003e \n\u003e If we think from old rule usage perspective then deprecated_for_removal info can be useful for users as they might be not sure that \u0027replacing with new rule always means old will be removed always\u0027\n\nI agree that using deprecated_for_removal directly on RuleDefault makes sense. I think the intended use for deprecated_for_removal was to show we\u0027re removing something without a replacement. Otherwise I think it\u0027s safe to assume any deprecated policies are going to removed at the end of the deprecation period.\n\nThe deprecated_for_removal option is really a courtesy to operators so they can keep a handle on custom policies if one is going away (e.g., hey, you can clean this up now if you\u0027re overriding it in your policy file).","commit_id":"16840b6a3f85a070a8f600b09db580c5ccd215a0"}]}
