)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Olivier Chaze \u003colivier.chaze@infomaniak.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-10-20 21:41:34 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding two options in keystone_fetcher to filter which tenants should be billed."},{"line_number":8,"context_line":"In our case we currently have 2k projects (growing) and we want to bill all active tenants, so checking the role rating is useless and consumes resources for nothing. Besides, cloudkitty bills tenants regardless if there are enabled or disabled which is also useless and consumes resources in our case."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"ignore_disabled_tenants (Default\u003dFalse)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"cbcbfb6b_57ff40ed","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":80},"updated":"2021-10-20 20:47:05.000000000","message":"Please make this commit title a bit shorter and add an empty line after.","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Olivier Chaze \u003colivier.chaze@infomaniak.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-10-20 21:41:34 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding two options in keystone_fetcher to filter which tenants should be billed."},{"line_number":8,"context_line":"In our case we currently have 2k projects (growing) and we want to bill all active tenants, so checking the role rating is useless and consumes resources for nothing. Besides, cloudkitty bills tenants regardless if there are enabled or disabled which is also useless and consumes resources in our case."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"ignore_disabled_tenants (Default\u003dFalse)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"d742ef65_9a87ac4f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":80},"in_reply_to":"cbcbfb6b_57ff40ed","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":8,"context_line":"In our case we currently have 2k projects (growing) and we want to bill all active tenants, so checking the role rating is useless and consumes resources for nothing. Besides, cloudkitty bills tenants regardless if there are enabled or disabled which is also useless and consumes resources in our case."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"ignore_disabled_tenants (Default\u003dFalse)"},{"line_number":11,"context_line":"Do not bill tenants which are disabled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"ignore_rating_role (Default\u003dFalse)"},{"line_number":14,"context_line":"Bill tenants even if the role rating isn\u0027t present. Useful to decrease the number of keystone API calls."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"8f611ac0_52b2f5a5","line":11,"range":{"start_line":11,"start_character":7,"end_line":11,"end_character":11},"updated":"2021-10-20 20:47:05.000000000","message":"rate","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"In our case we currently have 2k projects (growing) and we want to bill all active tenants, so checking the role rating is useless and consumes resources for nothing. Besides, cloudkitty bills tenants regardless if there are enabled or disabled which is also useless and consumes resources in our case."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"ignore_disabled_tenants (Default\u003dFalse)"},{"line_number":11,"context_line":"Do not bill tenants which are disabled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"ignore_rating_role (Default\u003dFalse)"},{"line_number":14,"context_line":"Bill tenants even if the role rating isn\u0027t present. Useful to decrease the number of keystone API calls."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"b2cc21fc_03156554","line":11,"range":{"start_line":11,"start_character":7,"end_line":11,"end_character":11},"in_reply_to":"8f611ac0_52b2f5a5","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":11,"context_line":"Do not bill tenants which are disabled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"ignore_rating_role (Default\u003dFalse)"},{"line_number":14,"context_line":"Bill tenants even if the role rating isn\u0027t present. Useful to decrease the number of keystone API calls."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I6479d76c367dc4217bce4de9c3db41c4612f0397"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7f9f0012_3ae90101","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":4},"updated":"2021-10-20 20:47:05.000000000","message":"rate","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Do not bill tenants which are disabled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"ignore_rating_role (Default\u003dFalse)"},{"line_number":14,"context_line":"Bill tenants even if the role rating isn\u0027t present. Useful to decrease the number of keystone API calls."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I6479d76c367dc4217bce4de9c3db41c4612f0397"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"29566f9b_7ef9c76f","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":4},"in_reply_to":"7f9f0012_3ae90101","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d3a120ea_fe1b7a6d","updated":"2021-10-20 20:47:05.000000000","message":"Thank you Olivier for your contribution! Some comments inline.","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"a2b1578ace04c3be15183d99265e4c3e192d4926","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"20b13892_a09d511a","updated":"2021-10-22 14:11:52.000000000","message":"recheck","commit_id":"916147158dd2769418ea14da8eca42838398115b"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ce075a7c_87b84ccb","updated":"2021-10-21 12:30:19.000000000","message":"recheck","commit_id":"916147158dd2769418ea14da8eca42838398115b"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"c9b478c2c260d95278000da3e1ebc8b6f3f89215","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"164a9333_3d64c501","updated":"2021-11-01 13:04:23.000000000","message":"Thank you for the patch. Please add release notes.","commit_id":"ffd03777c374b8a190fd7466a7c437437fb653b6"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"4d442bbb81d3ed4194660fc88c15524e253c5805","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4229549c_b34cdd1f","in_reply_to":"164a9333_3d64c501","updated":"2021-11-15 09:34:07.000000000","message":"Done.","commit_id":"ffd03777c374b8a190fd7466a7c437437fb653b6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"d2c5c0b868af34b4b596610e0d7c5ad7dc1872b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f1b84ea9_48705e33","updated":"2021-11-24 15:28:01.000000000","message":"Sorry for the review lag. Thanks for the changes, it\u0027s looking better. I have a few small ones, please also add documentation to doc/source/admin/configuration/fetcher.rst","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"7e955271f324b97f82feec1122604ed6c60b4a4b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"318c8b11_ee1331da","in_reply_to":"f1b84ea9_48705e33","updated":"2021-11-24 16:48:50.000000000","message":"Done.","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"}],"cloudkitty/fetcher/keystone.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from keystoneclient import exceptions"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"from cloudkitty import fetcher"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"865e7d07_1c01dced","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":33},"updated":"2021-10-20 20:47:05.000000000","message":"Please move LOG \u003d below `CONF \u003d cfg.CONF` further down.","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystoneclient import exceptions"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"from cloudkitty import fetcher"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"f984a328_177bd9ae","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":33},"in_reply_to":"865e7d07_1c01dced","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":true,"context_lines":[{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"from cloudkitty import fetcher"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"FETCHER_KEYSTONE_OPTS \u003d \u0027fetcher_keystone\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"11e3504a_49bc09fa","line":24,"in_reply_to":"96ad9af8_d4ee7646","updated":"2021-10-21 12:30:19.000000000","message":"\u003e pep8: E402 module level import not at top of file\n\nPlease fix.","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":35,"context_line":"    cfg.BoolOpt("},{"line_number":36,"context_line":"        \u0027ignore_rating_role\u0027,"},{"line_number":37,"context_line":"        default\u003dFalse,"},{"line_number":38,"context_line":"        help\u003d\u0027Skip rating role check for billing user\u0027,"},{"line_number":39,"context_line":"    ),"},{"line_number":40,"context_line":"    cfg.BoolOpt("},{"line_number":41,"context_line":"        \u0027ignore_disabled_tenants\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da4fe3a1_cef0ff36","line":38,"range":{"start_line":38,"start_character":41,"end_line":38,"end_character":48},"updated":"2021-10-20 20:47:05.000000000","message":"s/billing/cloudkitty/","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    cfg.BoolOpt("},{"line_number":36,"context_line":"        \u0027ignore_rating_role\u0027,"},{"line_number":37,"context_line":"        default\u003dFalse,"},{"line_number":38,"context_line":"        help\u003d\u0027Skip rating role check for billing user\u0027,"},{"line_number":39,"context_line":"    ),"},{"line_number":40,"context_line":"    cfg.BoolOpt("},{"line_number":41,"context_line":"        \u0027ignore_disabled_tenants\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5c125b73_3f8166e8","line":38,"range":{"start_line":38,"start_character":41,"end_line":38,"end_character":48},"in_reply_to":"da4fe3a1_cef0ff36","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":40,"context_line":"    cfg.BoolOpt("},{"line_number":41,"context_line":"        \u0027ignore_disabled_tenants\u0027,"},{"line_number":42,"context_line":"        default\u003dFalse,"},{"line_number":43,"context_line":"        help\u003d\u0027Stop billing disabled tenants\u0027,"},{"line_number":44,"context_line":"    ),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d81a2382_2ceb4ccd","line":43,"range":{"start_line":43,"start_character":19,"end_line":43,"end_character":26},"updated":"2021-10-20 20:47:05.000000000","message":"s/billing/rating/","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.BoolOpt("},{"line_number":41,"context_line":"        \u0027ignore_disabled_tenants\u0027,"},{"line_number":42,"context_line":"        default\u003dFalse,"},{"line_number":43,"context_line":"        help\u003d\u0027Stop billing disabled tenants\u0027,"},{"line_number":44,"context_line":"    ),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f4abb09_f9cd2f92","line":43,"range":{"start_line":43,"start_character":19,"end_line":43,"end_character":26},"in_reply_to":"d81a2382_2ceb4ccd","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        ignore_disabled_tenants \u003d CONF.fetcher_keystone.ignore_disabled_tenants"},{"line_number":89,"context_line":"        LOG.debug(\u0027Total number of tenants : %s\u0027, len(tenant_list))"},{"line_number":90,"context_line":"        for tenant in tenant_list[:]:"},{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"27911603_02c1a5ef","line":91,"range":{"start_line":91,"start_character":38,"end_line":91,"end_character":46},"updated":"2021-10-20 20:47:05.000000000","message":"if ignore_disabled_tenants:","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        ignore_disabled_tenants \u003d CONF.fetcher_keystone.ignore_disabled_tenants"},{"line_number":89,"context_line":"        LOG.debug(\u0027Total number of tenants : %s\u0027, len(tenant_list))"},{"line_number":90,"context_line":"        for tenant in tenant_list[:]:"},{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bd5204d7_e0189df1","line":91,"range":{"start_line":91,"start_character":38,"end_line":91,"end_character":46},"in_reply_to":"27911603_02c1a5ef","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":89,"context_line":"        LOG.debug(\u0027Total number of tenants : %s\u0027, len(tenant_list))"},{"line_number":90,"context_line":"        for tenant in tenant_list[:]:"},{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"0453b281_1f58a5da","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":42},"updated":"2021-10-20 20:47:05.000000000","message":"if not tenant.enabled:","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        LOG.debug(\u0027Total number of tenants : %s\u0027, len(tenant_list))"},{"line_number":90,"context_line":"        for tenant in tenant_list[:]:"},{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f6fa740_49162539","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":42},"in_reply_to":"0453b281_1f58a5da","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"},{"line_number":96,"context_line":"            if ignore_rating_role is False:"},{"line_number":97,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":3,"id":"38b7fdc6_5735946a","line":94,"range":{"start_line":94,"start_character":31,"end_line":94,"end_character":39},"updated":"2021-10-20 20:47:05.000000000","message":"Disabled","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"},{"line_number":96,"context_line":"            if ignore_rating_role is False:"},{"line_number":97,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":3,"id":"a689ba4f_e4b7fe95","line":94,"range":{"start_line":94,"start_character":50,"end_line":94,"end_character":57},"updated":"2021-10-20 20:47:05.000000000","message":"skipped","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"},{"line_number":96,"context_line":"            if ignore_rating_role is False:"},{"line_number":97,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":3,"id":"886a1051_b4650a71","line":94,"range":{"start_line":94,"start_character":31,"end_line":94,"end_character":39},"in_reply_to":"38b7fdc6_5735946a","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            if ignore_disabled_tenants is True:"},{"line_number":92,"context_line":"                if tenant.enabled is False:"},{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"},{"line_number":96,"context_line":"            if ignore_rating_role is False:"},{"line_number":97,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":3,"id":"6e4732f0_5ee866b3","line":94,"range":{"start_line":94,"start_character":50,"end_line":94,"end_character":57},"in_reply_to":"a689ba4f_e4b7fe95","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"},{"line_number":96,"context_line":"            if ignore_rating_role is False:"},{"line_number":97,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("},{"line_number":98,"context_line":"                    **{\u0027user\u0027: my_user_id,"},{"line_number":99,"context_line":"                       tenant_attr: tenant})"}],"source_content_type":"text/x-python","patch_set":3,"id":"99d170cc_b03bc0fb","line":96,"range":{"start_line":96,"start_character":12,"end_line":96,"end_character":42},"updated":"2021-10-20 20:47:05.000000000","message":"if not ignore_rating_role","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":94,"context_line":"                    LOG.debug(\u0027disabled tenant %s removed\u0027, tenant.name)"},{"line_number":95,"context_line":"                    continue"},{"line_number":96,"context_line":"            if ignore_rating_role is False:"},{"line_number":97,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("},{"line_number":98,"context_line":"                    **{\u0027user\u0027: my_user_id,"},{"line_number":99,"context_line":"                       tenant_attr: tenant})"}],"source_content_type":"text/x-python","patch_set":3,"id":"288da642_10144f16","line":96,"range":{"start_line":96,"start_character":12,"end_line":96,"end_character":42},"in_reply_to":"99d170cc_b03bc0fb","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":99,"context_line":"                       tenant_attr: tenant})"},{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"312adf79_ce5946c1","line":102,"range":{"start_line":102,"start_character":31,"end_line":102,"end_character":37},"updated":"2021-10-20 20:47:05.000000000","message":"Tenant","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":99,"context_line":"                       tenant_attr: tenant})"},{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ecd50fad_d10fca6a","line":102,"range":{"start_line":102,"start_character":41,"end_line":102,"end_character":48},"updated":"2021-10-20 20:47:05.000000000","message":"skipped","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                       tenant_attr: tenant})"},{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"6b4ae898_246ab171","line":102,"range":{"start_line":102,"start_character":31,"end_line":102,"end_character":37},"in_reply_to":"312adf79_ce5946c1","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                       tenant_attr: tenant})"},{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"59734247_481e2dcf","line":102,"range":{"start_line":102,"start_character":41,"end_line":102,"end_character":48},"in_reply_to":"ecd50fad_d10fca6a","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"c7d3c07c_468f38ef","line":103,"range":{"start_line":103,"start_character":29,"end_line":103,"end_character":35},"updated":"2021-10-20 20:47:05.000000000","message":"You should remove `active` from this message since for some configurations we will rate inactive tenants.","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3c499a253b5d1d58477bf743b1f9489bc179088","unresolved":true,"context_lines":[{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"70aed40a_2275378a","line":103,"range":{"start_line":103,"start_character":47,"end_line":103,"end_character":51},"updated":"2021-10-20 20:47:05.000000000","message":"rate","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1d51029b_900f38d2","line":103,"range":{"start_line":103,"start_character":47,"end_line":103,"end_character":51},"in_reply_to":"70aed40a_2275378a","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":29422,"name":"Olivier Chaze","display_name":"Olivier Chaze","email":"olivier.chaze@infomaniak.com","username":"o.chaze"},"change_message_id":"2393a9c1d0e74dc29c43a3ec10334862d2673c1b","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                if \u0027rating\u0027 not in [role.name for role in roles]:"},{"line_number":101,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":102,"context_line":"                    LOG.debug(\u0027tenant %s removed. no rating role\u0027, tenant.name)"},{"line_number":103,"context_line":"        LOG.debug(\u0027Number of active tenants to bill : %s\u0027, len(tenant_list))"},{"line_number":104,"context_line":"        return [tenant.id for tenant in tenant_list]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5287794b_c8846cd1","line":103,"range":{"start_line":103,"start_character":29,"end_line":103,"end_character":35},"in_reply_to":"c7d3c07c_468f38ef","updated":"2021-10-21 12:30:19.000000000","message":"Ack","commit_id":"dbfdc44d9b00b68d093216871f10d7a5abc26e6f"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"d2c5c0b868af34b4b596610e0d7c5ad7dc1872b2","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"from cloudkitty import fetcher"},{"line_number":18,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":19,"context_line":"from keystoneclient import client as kclient"},{"line_number":20,"context_line":"from keystoneclient import discover"}],"source_content_type":"text/x-python","patch_set":7,"id":"2aca0758_d93a6dfa","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":30},"updated":"2021-11-24 15:28:01.000000000","message":"This import should stay separate. See other OpenStack services, they use this pattern.","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"7e955271f324b97f82feec1122604ed6c60b4a4b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"from cloudkitty import fetcher"},{"line_number":18,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":19,"context_line":"from keystoneclient import client as kclient"},{"line_number":20,"context_line":"from keystoneclient import discover"}],"source_content_type":"text/x-python","patch_set":7,"id":"817b0d64_44749357","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":30},"in_reply_to":"2aca0758_d93a6dfa","updated":"2021-11-24 16:48:50.000000000","message":"Done","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"fcf893920dd514e8890e43233bc6ca08e0ae3464","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    cfg.StrOpt("},{"line_number":30,"context_line":"        \u0027keystone_version\u0027,"},{"line_number":31,"context_line":"        default\u003d\u00273\u0027,"},{"line_number":32,"context_line":"        help\u003d\u0027Keystone version to use\u0027,"},{"line_number":33,"context_line":"    ),"},{"line_number":34,"context_line":"    cfg.BoolOpt("},{"line_number":35,"context_line":"        \u0027ignore_rating_role\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9b5a1d54_77bbf8c9","line":32,"updated":"2021-11-25 10:56:50.000000000","message":"Why removing the \".\" at the end of the sentence. I personally prefer/use/write sentences with the punctuation.","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"cfd503ffa00825282988f26dee44f5cb173b731f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    cfg.StrOpt("},{"line_number":30,"context_line":"        \u0027keystone_version\u0027,"},{"line_number":31,"context_line":"        default\u003d\u00273\u0027,"},{"line_number":32,"context_line":"        help\u003d\u0027Keystone version to use\u0027,"},{"line_number":33,"context_line":"    ),"},{"line_number":34,"context_line":"    cfg.BoolOpt("},{"line_number":35,"context_line":"        \u0027ignore_rating_role\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"194d3b73_e0009f59","line":32,"in_reply_to":"9b5a1d54_77bbf8c9","updated":"2021-11-25 14:32:02.000000000","message":"Done","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"fcf893920dd514e8890e43233bc6ca08e0ae3464","unresolved":true,"context_lines":[{"line_number":92,"context_line":"            if ignore_disabled_tenants:"},{"line_number":93,"context_line":"                if not tenant.enabled:"},{"line_number":94,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":95,"context_line":"                    LOG.debug(\u0027Disabled tenant %s skipped\u0027, tenant.name)"},{"line_number":96,"context_line":"                    continue"},{"line_number":97,"context_line":"            if not ignore_rating_role:"},{"line_number":98,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":8,"id":"8f02c8a9_1743fd13","line":95,"updated":"2021-11-25 10:56:50.000000000","message":"What about using the tenant ID here as well? Also, what about adding \".\" at the end of sentences?","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"638236314af39966b3dd6486760570ee2ab69c6a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            if ignore_disabled_tenants:"},{"line_number":93,"context_line":"                if not tenant.enabled:"},{"line_number":94,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":95,"context_line":"                    LOG.debug(\u0027Disabled tenant %s skipped\u0027, tenant.name)"},{"line_number":96,"context_line":"                    continue"},{"line_number":97,"context_line":"            if not ignore_rating_role:"},{"line_number":98,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":8,"id":"4006ef8a_50446977","line":95,"in_reply_to":"1a7261f7_ecbebc23","updated":"2021-11-25 14:39:26.000000000","message":"You could add both. Just using names can be misleading as projects can be deleted and recreated with the same name.","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"6c8f3d0224cbebb92b9e47d428d2a5378c0392a9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            if ignore_disabled_tenants:"},{"line_number":93,"context_line":"                if not tenant.enabled:"},{"line_number":94,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":95,"context_line":"                    LOG.debug(\u0027Disabled tenant %s skipped\u0027, tenant.name)"},{"line_number":96,"context_line":"                    continue"},{"line_number":97,"context_line":"            if not ignore_rating_role:"},{"line_number":98,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":8,"id":"6a122ecc_81ebb00f","line":95,"in_reply_to":"4006ef8a_50446977","updated":"2021-11-26 09:12:54.000000000","message":"done.","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"cfd503ffa00825282988f26dee44f5cb173b731f","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            if ignore_disabled_tenants:"},{"line_number":93,"context_line":"                if not tenant.enabled:"},{"line_number":94,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":95,"context_line":"                    LOG.debug(\u0027Disabled tenant %s skipped\u0027, tenant.name)"},{"line_number":96,"context_line":"                    continue"},{"line_number":97,"context_line":"            if not ignore_rating_role:"},{"line_number":98,"context_line":"                roles \u003d getattr(self.admin_ks.roles, role_func)("}],"source_content_type":"text/x-python","patch_set":8,"id":"1a7261f7_ecbebc23","line":95,"in_reply_to":"8f02c8a9_1743fd13","updated":"2021-11-25 14:32:02.000000000","message":"I prefer the tenant name. Added the extra dot.","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"3bda034852784c53683a9042523a3e6aad560d65","unresolved":true,"context_lines":[{"line_number":92,"context_line":"            if ignore_disabled_tenants:"},{"line_number":93,"context_line":"                if not tenant.enabled:"},{"line_number":94,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":95,"context_line":"                    LOG.debug(\u0027W: Disabled tenant name %s with id %s skipped.\u0027,"},{"line_number":96,"context_line":"                              tenant.name, tenant.id)"},{"line_number":97,"context_line":"                    continue"},{"line_number":98,"context_line":"            if not ignore_rating_role:"}],"source_content_type":"text/x-python","patch_set":10,"id":"66b7c4c2_64bbbd02","line":95,"range":{"start_line":95,"start_character":31,"end_line":95,"end_character":34},"updated":"2021-11-29 14:15:02.000000000","message":"What does this mean?","commit_id":"fb27fdeb1fb3982eba2eca575d00dd8ffb8936d7"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"f6f8ed359944da080e6313a31e8e797bdeac50c2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            if ignore_disabled_tenants:"},{"line_number":93,"context_line":"                if not tenant.enabled:"},{"line_number":94,"context_line":"                    tenant_list.remove(tenant)"},{"line_number":95,"context_line":"                    LOG.debug(\u0027W: Disabled tenant name %s with id %s skipped.\u0027,"},{"line_number":96,"context_line":"                              tenant.name, tenant.id)"},{"line_number":97,"context_line":"                    continue"},{"line_number":98,"context_line":"            if not ignore_rating_role:"}],"source_content_type":"text/x-python","patch_set":10,"id":"32b013cb_8f6ab171","line":95,"range":{"start_line":95,"start_character":31,"end_line":95,"end_character":34},"in_reply_to":"66b7c4c2_64bbbd02","updated":"2021-11-29 18:36:33.000000000","message":"Done","commit_id":"fb27fdeb1fb3982eba2eca575d00dd8ffb8936d7"}],"doc/source/admin/configuration/fetcher.rst":[{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"fcf893920dd514e8890e43233bc6ca08e0ae3464","unresolved":true,"context_lines":[{"line_number":59,"context_line":"fetcher using regular Keystone authentication options as found here:"},{"line_number":60,"context_line":":doc:`configuration`."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project"},{"line_number":63,"context_line":"has the rating role, and will bill everyone."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If ``ignore_disabled_tenants`` is set, cloudkitty will not bill projects"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ae01858b_816a026e","line":62,"updated":"2021-11-25 10:56:50.000000000","message":"CloudKitty does not execute billing, but rather rating. Therefore, what about changing this sentence a little bit?\n\nSomething like: \n\"\"\"\nthe Keystone fetcher will not check if a project has the rating role; thus, CloudKitty will execute rating for every project it finds.\n\"\"\"","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"cfd503ffa00825282988f26dee44f5cb173b731f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"fetcher using regular Keystone authentication options as found here:"},{"line_number":60,"context_line":":doc:`configuration`."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project"},{"line_number":63,"context_line":"has the rating role, and will bill everyone."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If ``ignore_disabled_tenants`` is set, cloudkitty will not bill projects"}],"source_content_type":"text/x-rst","patch_set":8,"id":"15d07460_d140367f","line":62,"in_reply_to":"ae01858b_816a026e","updated":"2021-11-25 14:32:02.000000000","message":"Done","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"cfd503ffa00825282988f26dee44f5cb173b731f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"fetcher using regular Keystone authentication options as found here:"},{"line_number":60,"context_line":":doc:`configuration`."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project"},{"line_number":63,"context_line":"has the rating role, and will bill everyone."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If ``ignore_disabled_tenants`` is set, cloudkitty will not bill projects"}],"source_content_type":"text/x-rst","patch_set":8,"id":"e8f88693_7ff0b595","line":62,"in_reply_to":"ae01858b_816a026e","updated":"2021-11-25 14:32:02.000000000","message":"Done","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"fcf893920dd514e8890e43233bc6ca08e0ae3464","unresolved":true,"context_lines":[{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project"},{"line_number":63,"context_line":"has the rating role, and will bill everyone."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If ``ignore_disabled_tenants`` is set, cloudkitty will not bill projects"},{"line_number":66,"context_line":"that are disabled."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"02543de8_deeffff4","line":65,"updated":"2021-11-25 10:56:50.000000000","message":"What about a minor change here?\n\"\"\"\nis set, Cloudkitty will not rate projects that are disabled.\n\"\"\"","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"cfd503ffa00825282988f26dee44f5cb173b731f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project"},{"line_number":63,"context_line":"has the rating role, and will bill everyone."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If ``ignore_disabled_tenants`` is set, cloudkitty will not bill projects"},{"line_number":66,"context_line":"that are disabled."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1bfcb992_665aed2a","line":65,"in_reply_to":"02543de8_deeffff4","updated":"2021-11-25 14:32:02.000000000","message":"Done","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"cfd503ffa00825282988f26dee44f5cb173b731f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project"},{"line_number":63,"context_line":"has the rating role, and will bill everyone."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If ``ignore_disabled_tenants`` is set, cloudkitty will not bill projects"},{"line_number":66,"context_line":"that are disabled."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa3433a_ef7c9f0a","line":65,"in_reply_to":"02543de8_deeffff4","updated":"2021-11-25 14:32:02.000000000","message":"Done","commit_id":"540678892c1aa539b9c3219f2416d1697fec15d0"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"3c9b96a725ff77386cc78c3725623f0194ff7a59","unresolved":true,"context_lines":[{"line_number":59,"context_line":"fetcher using regular Keystone authentication options as found here:"},{"line_number":60,"context_line":":doc:`configuration`."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project has"},{"line_number":63,"context_line":"the rating role; thus, CloudKitty will execute rating for every project it"},{"line_number":64,"context_line":"finds."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"If ``ignore_disabled_tenants`` is set, Cloudkitty will not rate projects that"},{"line_number":67,"context_line":"are disabled."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Monasca"}],"source_content_type":"text/x-rst","patch_set":10,"id":"6a08f053_da97b75f","line":67,"range":{"start_line":62,"start_character":0,"end_line":67,"end_character":13},"updated":"2021-11-29 14:35:09.000000000","message":"Please use the same bullet point format as options above.","commit_id":"fb27fdeb1fb3982eba2eca575d00dd8ffb8936d7"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"f6f8ed359944da080e6313a31e8e797bdeac50c2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"fetcher using regular Keystone authentication options as found here:"},{"line_number":60,"context_line":":doc:`configuration`."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project has"},{"line_number":63,"context_line":"the rating role; thus, CloudKitty will execute rating for every project it"},{"line_number":64,"context_line":"finds."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"If ``ignore_disabled_tenants`` is set, Cloudkitty will not rate projects that"},{"line_number":67,"context_line":"are disabled."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Monasca"}],"source_content_type":"text/x-rst","patch_set":10,"id":"a3ca8384_b97cb5ac","line":67,"range":{"start_line":62,"start_character":0,"end_line":67,"end_character":13},"in_reply_to":"6a08f053_da97b75f","updated":"2021-11-29 18:36:33.000000000","message":"Done","commit_id":"fb27fdeb1fb3982eba2eca575d00dd8ffb8936d7"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"54a9a22df8959cca4fa78260d06da128d2a64be4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"fetcher using regular Keystone authentication options as found here:"},{"line_number":60,"context_line":":doc:`configuration`."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"If ``ignore_rating_role`` the Keystone fetcher will not check if a project has"},{"line_number":63,"context_line":"the rating role; thus, CloudKitty will execute rating for every project it"},{"line_number":64,"context_line":"finds."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"If ``ignore_disabled_tenants`` is set, Cloudkitty will not rate projects that"},{"line_number":67,"context_line":"are disabled."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Monasca"}],"source_content_type":"text/x-rst","patch_set":10,"id":"d49339a0_bd408cea","line":67,"range":{"start_line":62,"start_character":0,"end_line":67,"end_character":13},"in_reply_to":"a3ca8384_b97cb5ac","updated":"2021-11-29 21:28:42.000000000","message":"That wasn\u0027t quite what I had in mind. I made the change directly and fixed pep8 failures at the same time.","commit_id":"fb27fdeb1fb3982eba2eca575d00dd8ffb8936d7"}],"releasenotes/notes/ignore_disabled_tenants-and-ignore_rating_role-dfe542a0cafd412e.yaml":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"d2c5c0b868af34b4b596610e0d7c5ad7dc1872b2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"e5b7477f_f7755af9","line":4,"range":{"start_line":4,"start_character":21,"end_line":4,"end_character":67},"updated":"2021-11-24 15:28:01.000000000","message":"Nit: ``ignore_disabled_tenants`` and ``ignore_rating_role``","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"7e955271f324b97f82feec1122604ed6c60b4a4b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"6fc45bd7_524fc031","line":4,"range":{"start_line":4,"start_character":21,"end_line":4,"end_character":67},"in_reply_to":"e5b7477f_f7755af9","updated":"2021-11-24 16:48:50.000000000","message":"Done","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"d2c5c0b868af34b4b596610e0d7c5ad7dc1872b2","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"af214928_9c21fcc7","line":5,"updated":"2021-11-24 15:28:01.000000000","message":"Maybe add a short sentence about what they are doing?","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"d2c5c0b868af34b4b596610e0d7c5ad7dc1872b2","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"fbd3145a_5f1bc4e1","line":5,"range":{"start_line":5,"start_character":11,"end_line":5,"end_character":27},"updated":"2021-11-24 15:28:01.000000000","message":"Nit: ``fetcher_keystone``","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"d2c5c0b868af34b4b596610e0d7c5ad7dc1872b2","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"700b5146_28aead42","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":6},"updated":"2021-11-24 15:28:01.000000000","message":"to","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"7e955271f324b97f82feec1122604ed6c60b4a4b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"69ffb3f8_796aebf7","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":6},"in_reply_to":"700b5146_28aead42","updated":"2021-11-24 16:48:50.000000000","message":"Done","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"7e955271f324b97f82feec1122604ed6c60b4a4b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"74982756_124450ca","line":5,"in_reply_to":"af214928_9c21fcc7","updated":"2021-11-24 16:48:50.000000000","message":"Done","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"7e955271f324b97f82feec1122604ed6c60b4a4b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Two new options (ignore_disabled_tenants and ignore_rating_role) were added"},{"line_number":5,"context_line":"    in the fetcher_keystone section."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5874b049_6bf54c92","line":5,"range":{"start_line":5,"start_character":11,"end_line":5,"end_character":27},"in_reply_to":"fbd3145a_5f1bc4e1","updated":"2021-11-24 16:48:50.000000000","message":"Done","commit_id":"65e490fcb48c5bc61a59e4dba2d9e41c69e9748a"}]}
