)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b05b1352_8142f26a","updated":"2023-01-18 12:58:09.000000000","message":"Overall, I like the ideas mentioned in this blueprint a lot and I think they should be implemented.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"50f2558cf65d5905842cfb2da2af9cae211874f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"85d89602_15cf6804","updated":"2023-01-18 14:00:17.000000000","message":"Hi Mariusz, Thanks for yours considerations 😊","commit_id":"5abc3d5c31185c47eceab59730156532282e4012"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"8b5331d2b9af093ae0e9b807eeb8ab4824999b98","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"33df51df_25f3f059","updated":"2023-01-18 15:44:48.000000000","message":"Looks like we are still hitting issues with tox 4 despite https://review.opendev.org/c/openstack/cloudkitty/+/869557 being merged:\n\n```\nfailed with make is not allowed, use allowlist_externals to allow it\n```\nI think this feature branch may need to be rebased because I can see `make` on the \"allowlist_externals\" list on the master.","commit_id":"5abc3d5c31185c47eceab59730156532282e4012"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"2d090fb6f94ed129622043d7e42880800ae916a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"14f7fe18_2ae67c32","updated":"2023-01-27 15:48:47.000000000","message":"recheck","commit_id":"5abc3d5c31185c47eceab59730156532282e4012"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"6fc0a6c9d19d46e7bb487df3823a01a764e7c170","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a66b7391_54b651cd","updated":"2023-01-27 12:11:50.000000000","message":"recheck","commit_id":"5abc3d5c31185c47eceab59730156532282e4012"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"6894a0b69a7b45b980dccb4f814646610989c2c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dc89ce5f_aaf9f8bb","updated":"2023-01-25 18:19:31.000000000","message":"recheck","commit_id":"5abc3d5c31185c47eceab59730156532282e4012"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5c1ec0744368f74dcc1500e4de179229170356ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"699f3c2e_c26ebf50","in_reply_to":"33df51df_25f3f059","updated":"2023-01-18 15:50:29.000000000","message":"\u003e Looks like we are still hitting issues with tox 4 despite https://review.opendev.org/c/openstack/cloudkitty/+/869557 being merged:\n\u003e \n\u003e ```\n\u003e failed with make is not allowed, use allowlist_externals to allow it\n\u003e ```\n\u003e I think this feature branch may need to be rebased because I can see `make` on the \"allowlist_externals\" list on the master.\n\nWait, no, I was looking at a wrong `tox.ini`. :D\nThe line with `make` is commented out here: https://opendev.org/openstack/cloudkitty/src/branch/master/tox.ini#L68 so it shouldn\u0027t have triggered.","commit_id":"5abc3d5c31185c47eceab59730156532282e4012"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"f5214be61787d3c18ea9980b3c4ac4cdef32755e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8eae3ace_23cafe9f","updated":"2023-01-27 18:44:07.000000000","message":"I am fixing the build errors at: https://review.opendev.org/c/openstack/cloudkitty-specs/+/872041","commit_id":"8b39c03baec0e091b45c7427b7846211ce33f8d7"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"02ed1bd448821e45b39e228bdbec8d5ba208bd92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"34f45e3b_38172696","updated":"2023-01-30 12:00:17.000000000","message":"recheck","commit_id":"8b39c03baec0e091b45c7427b7846211ce33f8d7"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"07e29030b0178eaf12eb3426e597243fee29c604","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"366e017d_5e771580","updated":"2023-01-27 15:50:10.000000000","message":"recheck","commit_id":"8b39c03baec0e091b45c7427b7846211ce33f8d7"}],"specs/antelope/add_start_end_for_rating_rules.rst":[{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    - updated_by: last keystone user who changed the rule;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    - deleted_by: keystone user who deleted the rule."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. code-block:: SQL"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"92e2d907_35b1aa94","line":102,"range":{"start_line":102,"start_character":18,"end_line":102,"end_character":52},"updated":"2022-11-30 22:19:15.000000000","message":"is it going to be the user name or the user id?","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"f96fcf422ef1eab15a93f694c954d770d5ce8390","unresolved":true,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    - updated_by: last keystone user who changed the rule;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    - deleted_by: keystone user who deleted the rule."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. code-block:: SQL"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ee354fe_cf86d5e7","line":102,"range":{"start_line":102,"start_character":18,"end_line":102,"end_character":52},"in_reply_to":"33df981c_ea42ded6","updated":"2022-12-01 15:21:10.000000000","message":"do we have a guarantee that the username is unique?","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"12ba635232195140b55481f2bfee7e5c3f55dfe0","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    - updated_by: last keystone user who changed the rule;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    - deleted_by: keystone user who deleted the rule."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. code-block:: SQL"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ea159387_192e7197","line":102,"range":{"start_line":102,"start_character":18,"end_line":102,"end_character":52},"in_reply_to":"680cf3c1_f7a9c87d","updated":"2022-12-01 17:54:06.000000000","message":"Ack","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"68e298bc982bc8dce2bec156c46ae28e180a8e4c","unresolved":true,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    - updated_by: last keystone user who changed the rule;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    - deleted_by: keystone user who deleted the rule."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. code-block:: SQL"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"680cf3c1_f7a9c87d","line":102,"range":{"start_line":102,"start_character":18,"end_line":102,"end_character":52},"in_reply_to":"7ee354fe_cf86d5e7","updated":"2022-12-01 16:22:29.000000000","message":"Hmm, I though it was, but reading the keystone doc, it is only unique in the domain, so I will use the user id instead of username.","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":true,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    - updated_by: last keystone user who changed the rule;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    - deleted_by: keystone user who deleted the rule."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. code-block:: SQL"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"33df981c_ea42ded6","line":102,"range":{"start_line":102,"start_character":18,"end_line":102,"end_character":52},"in_reply_to":"92e2d907_35b1aa94","updated":"2022-12-01 13:34:00.000000000","message":"I thought in use the username","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    changes:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"      - Now we will not delete a rule anymore, instead, this endpoint will"},{"line_number":197,"context_line":"        mark a rule as deleted, using the current date the request was called."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"}],"source_content_type":"text/x-rst","patch_set":1,"id":"79821850_3732c0d2","line":196,"range":{"start_line":196,"start_character":8,"end_line":196,"end_character":11},"updated":"2022-11-30 22:19:15.000000000","message":"drop the now","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    changes:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"      - Now we will not delete a rule anymore, instead, this endpoint will"},{"line_number":197,"context_line":"        mark a rule as deleted, using the current date the request was called."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7cac5522_3969228c","line":196,"range":{"start_line":196,"start_character":8,"end_line":196,"end_character":11},"in_reply_to":"79821850_3732c0d2","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    method: POST"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    changes:"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"66af5360_08fc1885","line":215,"range":{"start_line":215,"start_character":12,"end_line":215,"end_character":16},"updated":"2022-11-30 22:19:15.000000000","message":"same here regarding the user identifier","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"f96fcf422ef1eab15a93f694c954d770d5ce8390","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    method: POST"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    changes:"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"c47ff582_d99a23b9","line":215,"range":{"start_line":215,"start_character":12,"end_line":215,"end_character":16},"in_reply_to":"2f575225_953d74a7","updated":"2022-12-01 15:21:10.000000000","message":"Ack","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":true,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    method: POST"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    changes:"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2f575225_953d74a7","line":215,"range":{"start_line":215,"start_character":12,"end_line":215,"end_character":16},"in_reply_to":"66af5360_08fc1885","updated":"2022-12-01 13:34:00.000000000","message":"These are the new values you will be able to send via REST API to Cloudkitty, the user identifier will not be allowed to post or put via REST API, it will be inferred using the Keystone authentication token.","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    method: PUT"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    changes:"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"01ac9aef_cd0f5f9e","line":248,"range":{"start_line":248,"start_character":12,"end_line":248,"end_character":15},"updated":"2022-11-30 22:19:15.000000000","message":"and what about the user that updated the rule? Is the identifier going to be stored?","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    method: PUT"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    changes:"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bc186b4d_c44c2c1f","line":248,"range":{"start_line":248,"start_character":12,"end_line":248,"end_character":15},"in_reply_to":"01ac9aef_cd0f5f9e","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    changes:"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"      - Now we will allow to update only the rule\u0027s end date, nothing else,"},{"line_number":253,"context_line":"        and only if the current end date is not defined (none). The new end"},{"line_number":254,"context_line":"        value must be something in the future."},{"line_number":255,"context_line":"      - It will be also allowed to update rules where the start date is still"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d7629ce4_d258d55d","line":252,"range":{"start_line":252,"start_character":8,"end_line":252,"end_character":11},"updated":"2022-11-30 22:19:15.000000000","message":"drop the now","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    changes:"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"      - Now we will allow to update only the rule\u0027s end date, nothing else,"},{"line_number":253,"context_line":"        and only if the current end date is not defined (none). The new end"},{"line_number":254,"context_line":"        value must be something in the future."},{"line_number":255,"context_line":"      - It will be also allowed to update rules where the start date is still"}],"source_content_type":"text/x-rst","patch_set":1,"id":"05308e90_f0446cad","line":252,"range":{"start_line":252,"start_character":8,"end_line":252,"end_character":11},"in_reply_to":"d7629ce4_d258d55d","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    method: DELETE"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    changes:"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"842b5582_2a5a8c26","line":266,"range":{"start_line":266,"start_character":4,"end_line":266,"end_character":18},"updated":"2022-11-30 22:19:15.000000000","message":"Will we mark/set the user that deleted the rule as well in the database?","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"  - path: /v1/rating/module_config/pyscripts/scripts"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    method: DELETE"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    changes:"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"543ae9d9_59c57206","line":266,"range":{"start_line":266,"start_character":4,"end_line":266,"end_character":18},"in_reply_to":"842b5582_2a5a8c26","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    changes:"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"      - Now we will not delete a rule anymore, instead, this endpoint will"},{"line_number":271,"context_line":"        mark a rule as deleted, using the current date the request was called."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"4c85fe6b_d4ec42c7","line":270,"range":{"start_line":270,"start_character":8,"end_line":270,"end_character":11},"updated":"2022-11-30 22:19:15.000000000","message":"drop the now","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    changes:"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"      - Now we will not delete a rule anymore, instead, this endpoint will"},{"line_number":271,"context_line":"        mark a rule as deleted, using the current date the request was called."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d85ebb03_8ec5d877","line":270,"range":{"start_line":270,"start_character":8,"end_line":270,"end_character":11},"in_reply_to":"4c85fe6b_d4ec42c7","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":277,"context_line":"Here are presented the proposed changes in the processing and reprocessing"},{"line_number":278,"context_line":"workflows in Cloudkitty orchestrator."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Processing"},{"line_number":281,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4c5cb0ea_f5cefb8d","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":10},"updated":"2022-11-30 22:19:15.000000000","message":"maybe a consideration here saying that besides the change in the loading of the rules, the rest is the same.","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":277,"context_line":"Here are presented the proposed changes in the processing and reprocessing"},{"line_number":278,"context_line":"workflows in Cloudkitty orchestrator."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Processing"},{"line_number":281,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"}],"source_content_type":"text/x-rst","patch_set":1,"id":"896e6f48_6dddc08e","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":10},"in_reply_to":"4c5cb0ea_f5cefb8d","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":280,"context_line":"Processing"},{"line_number":281,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"},{"line_number":284,"context_line":"    which rules must be used to process the data frame cost:"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"      - check if the rule\u0027s start timestamp is \u003c\u003d than the current timestamp;"}],"source_content_type":"text/x-rst","patch_set":1,"id":"01fad7a4_4dcaf3e0","line":283,"range":{"start_line":283,"start_character":4,"end_line":283,"end_character":8},"updated":"2022-11-30 22:19:15.000000000","message":"Drop the now","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":280,"context_line":"Processing"},{"line_number":281,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"},{"line_number":284,"context_line":"    which rules must be used to process the data frame cost:"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"      - check if the rule\u0027s start timestamp is \u003c\u003d than the current timestamp;"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a05687e1_98bdeca4","line":283,"range":{"start_line":283,"start_character":4,"end_line":283,"end_character":8},"in_reply_to":"01fad7a4_4dcaf3e0","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":289,"context_line":"        and"},{"line_number":290,"context_line":"      - check if there is no timestamp set in the deleted field of the rule;"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Reprocessing"},{"line_number":293,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"}],"source_content_type":"text/x-rst","patch_set":1,"id":"06774f4e_1514587e","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":12},"updated":"2022-11-30 22:19:15.000000000","message":"maybe a consideration here saying that besides the change in the loading of the rules, the rest is the same.","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        and"},{"line_number":290,"context_line":"      - check if there is no timestamp set in the deleted field of the rule;"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Reprocessing"},{"line_number":293,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a5674fad_90ddd87d","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":12},"in_reply_to":"06774f4e_1514587e","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":292,"context_line":"Reprocessing"},{"line_number":293,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"},{"line_number":296,"context_line":"    which rules must be used to process the data frames cost:"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"      - check if the rule\u0027s start timestamp is \u003c\u003d than the processed data frame timestamp;"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5dbcbef6_042f2c24","line":295,"range":{"start_line":295,"start_character":4,"end_line":295,"end_character":7},"updated":"2022-11-30 22:19:15.000000000","message":"same here","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":292,"context_line":"Reprocessing"},{"line_number":293,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"  - Now we will have three more filters (besides the tenant_id) when checking"},{"line_number":296,"context_line":"    which rules must be used to process the data frames cost:"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"      - check if the rule\u0027s start timestamp is \u003c\u003d than the processed data frame timestamp;"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ab5870f_24a61748","line":295,"range":{"start_line":295,"start_character":4,"end_line":295,"end_character":7},"in_reply_to":"5dbcbef6_042f2c24","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":304,"context_line":"Final thoughts"},{"line_number":305,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Now, if we want to update any rule that is already been in use (the start"},{"line_number":308,"context_line":"value is in the past), we will need to delete it and create a new one with"},{"line_number":309,"context_line":"the updated values, using this approach allows us to track all changes a"},{"line_number":310,"context_line":"rule had, easing the rules audition."},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"If all the rules get expired, then it will start rating all the resources"},{"line_number":313,"context_line":"with 0 (zero) value."}],"source_content_type":"text/x-rst","patch_set":1,"id":"53948e0e_189a5a48","line":310,"range":{"start_line":307,"start_character":0,"end_line":310,"end_character":36},"updated":"2022-11-30 22:19:15.000000000","message":"With this extension, if one needs to update any rule that has already been in use (the start value is in the past), we will need to delete it and create a new one with the updated values; alternatively, one can set the end date, and then create a new one. By using this approach we can track all changes a rule has, which facilitated auditing the system.","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":304,"context_line":"Final thoughts"},{"line_number":305,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Now, if we want to update any rule that is already been in use (the start"},{"line_number":308,"context_line":"value is in the past), we will need to delete it and create a new one with"},{"line_number":309,"context_line":"the updated values, using this approach allows us to track all changes a"},{"line_number":310,"context_line":"rule had, easing the rules audition."},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"If all the rules get expired, then it will start rating all the resources"},{"line_number":313,"context_line":"with 0 (zero) value."}],"source_content_type":"text/x-rst","patch_set":1,"id":"67e88037_dbb99b30","line":310,"range":{"start_line":307,"start_character":0,"end_line":310,"end_character":36},"in_reply_to":"53948e0e_189a5a48","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"8f144bc84a3df80397499fcb7713289a88cc75ea","unresolved":true,"context_lines":[{"line_number":309,"context_line":"the updated values, using this approach allows us to track all changes a"},{"line_number":310,"context_line":"rule had, easing the rules audition."},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"If all the rules get expired, then it will start rating all the resources"},{"line_number":313,"context_line":"with 0 (zero) value."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Alternatives"},{"line_number":316,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"eca10d1d_8fbaf4ce","line":313,"range":{"start_line":312,"start_character":0,"end_line":313,"end_character":20},"updated":"2022-11-30 22:19:15.000000000","message":"If all rules get expired, then we will start rating all the resources\nwith 0 (zero) value. However, that would be expected, as there is no valid rating rules anymore. To avoid that, one can always use rules without and end date.","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3c29b5a92c82099e0d194fcb1d6cdbdfafdf6779","unresolved":false,"context_lines":[{"line_number":309,"context_line":"the updated values, using this approach allows us to track all changes a"},{"line_number":310,"context_line":"rule had, easing the rules audition."},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"If all the rules get expired, then it will start rating all the resources"},{"line_number":313,"context_line":"with 0 (zero) value."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Alternatives"},{"line_number":316,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5be5c70d_94005489","line":313,"range":{"start_line":312,"start_character":0,"end_line":313,"end_character":20},"in_reply_to":"eca10d1d_8fbaf4ce","updated":"2022-12-01 13:34:00.000000000","message":"Done","commit_id":"9afe59d9997ea10e19d855f2e3f18cbecd8d8264"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"33ca7c8a064997590443999c3c3eb8c2d22e982a","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Extend CloudKitty rating API to set a time to live for each rating rule on modules Hashmap and Pyscript."},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This specification proposes an extension in the rating rules to add a life"}],"source_content_type":"text/x-rst","patch_set":4,"id":"f1479843_00414600","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":104},"updated":"2022-12-12 14:31:15.000000000","message":"Please make the title more succinct.","commit_id":"7c13b5a9151e8b41dbe83432ac475fe0a0a87938"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1158fa4693e53163016b9b7dc052ad665ed85aeb","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Extend CloudKitty rating API to set a time to live for each rating rule on modules Hashmap and Pyscript."},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This specification proposes an extension in the rating rules to add a life"}],"source_content_type":"text/x-rst","patch_set":4,"id":"202190df_8ef7ba03","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":104},"in_reply_to":"f1479843_00414600","updated":"2022-12-19 15:13:58.000000000","message":"Done","commit_id":"7c13b5a9151e8b41dbe83432ac475fe0a0a87938"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"97774f083670b0d8c589ab3441157856701c4e5d","unresolved":true,"context_lines":[{"line_number":413,"context_line":"Work Items"},{"line_number":414,"context_line":"----------"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1) propose, discuss, and merge the spec"},{"line_number":417,"context_line":"2) execute the implementations as described."},{"line_number":418,"context_line":"3) implement changes in the CloudKitty client to support the new API"},{"line_number":419,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"2f3a6326_4d4f28a7","line":416,"range":{"start_line":416,"start_character":0,"end_line":416,"end_character":39},"updated":"2022-12-12 14:33:03.000000000","message":"This isn\u0027t normally in work items. This section describes steps to execute once the spec is approved.","commit_id":"7c13b5a9151e8b41dbe83432ac475fe0a0a87938"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1158fa4693e53163016b9b7dc052ad665ed85aeb","unresolved":false,"context_lines":[{"line_number":413,"context_line":"Work Items"},{"line_number":414,"context_line":"----------"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1) propose, discuss, and merge the spec"},{"line_number":417,"context_line":"2) execute the implementations as described."},{"line_number":418,"context_line":"3) implement changes in the CloudKitty client to support the new API"},{"line_number":419,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfdcd305_07613081","line":416,"range":{"start_line":416,"start_character":0,"end_line":416,"end_character":39},"in_reply_to":"2f3a6326_4d4f28a7","updated":"2022-12-19 15:13:58.000000000","message":"Done","commit_id":"7c13b5a9151e8b41dbe83432ac475fe0a0a87938"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"97774f083670b0d8c589ab3441157856701c4e5d","unresolved":true,"context_lines":[{"line_number":414,"context_line":"----------"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1) propose, discuss, and merge the spec"},{"line_number":417,"context_line":"2) execute the implementations as described."},{"line_number":418,"context_line":"3) implement changes in the CloudKitty client to support the new API"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ab72f509_07608c8b","line":417,"range":{"start_line":417,"start_character":0,"end_line":417,"end_character":44},"updated":"2022-12-12 14:33:03.000000000","message":"A high level view of the implementation steps here would be good. Check nova-specs for examples.","commit_id":"7c13b5a9151e8b41dbe83432ac475fe0a0a87938"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1158fa4693e53163016b9b7dc052ad665ed85aeb","unresolved":false,"context_lines":[{"line_number":414,"context_line":"----------"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"1) propose, discuss, and merge the spec"},{"line_number":417,"context_line":"2) execute the implementations as described."},{"line_number":418,"context_line":"3) implement changes in the CloudKitty client to support the new API"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"96834af3_080ab8d3","line":417,"range":{"start_line":417,"start_character":0,"end_line":417,"end_character":44},"in_reply_to":"ab72f509_07608c8b","updated":"2022-12-19 15:13:58.000000000","message":"Done","commit_id":"7c13b5a9151e8b41dbe83432ac475fe0a0a87938"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"To facilitate operators\u0027 work and make the Cloudkitty rating rules creation"},{"line_number":46,"context_line":"process more dynamic and flexible, we propose to add a start and end date in"},{"line_number":47,"context_line":"the hashmap and Pyscript rating rules modules."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Furthermore, as we are working with billing data, which will be used to charge"},{"line_number":50,"context_line":"the cloud environment users, we also propose to create an auditing mechanism"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2892ba82_e4060c2d","line":47,"range":{"start_line":46,"start_character":35,"end_line":47,"end_character":45},"updated":"2023-01-18 12:58:09.000000000","message":"Definitely, this would be useful to have.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"50f2558cf65d5905842cfb2da2af9cae211874f8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"To facilitate operators\u0027 work and make the Cloudkitty rating rules creation"},{"line_number":46,"context_line":"process more dynamic and flexible, we propose to add a start and end date in"},{"line_number":47,"context_line":"the hashmap and Pyscript rating rules modules."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Furthermore, as we are working with billing data, which will be used to charge"},{"line_number":50,"context_line":"the cloud environment users, we also propose to create an auditing mechanism"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b859fa41_d35ea794","line":47,"range":{"start_line":46,"start_character":35,"end_line":47,"end_character":45},"in_reply_to":"2892ba82_e4060c2d","updated":"2023-01-18 14:00:17.000000000","message":"Ack","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Furthermore, as we are working with billing data, which will be used to charge"},{"line_number":50,"context_line":"the cloud environment users, we also propose to create an auditing mechanism"},{"line_number":51,"context_line":"for the rating rules; to achieve that, we will stop deleting the rating rules"},{"line_number":52,"context_line":"from the database; instead of it, we will mark them as deleted and at the same"},{"line_number":53,"context_line":"time, we will start denying the rule updating process in some specific"},{"line_number":54,"context_line":"situations. The goal of these changes is to make the system more secure,"},{"line_number":55,"context_line":"auditable, and predictable. Moreover, we will add two new columns, one to"},{"line_number":56,"context_line":"store the user that created the rule, and another one with the user that"}],"source_content_type":"text/x-rst","patch_set":5,"id":"526c2cdb_623cb089","line":53,"range":{"start_line":51,"start_character":39,"end_line":53,"end_character":4},"updated":"2023-01-18 12:58:09.000000000","message":"I like this idea and I think this should be done. Do you think deleted rules should be kept indefinitely or would it be possible to specify a rotation policy to purge very old rules?","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"50f2558cf65d5905842cfb2da2af9cae211874f8","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Furthermore, as we are working with billing data, which will be used to charge"},{"line_number":50,"context_line":"the cloud environment users, we also propose to create an auditing mechanism"},{"line_number":51,"context_line":"for the rating rules; to achieve that, we will stop deleting the rating rules"},{"line_number":52,"context_line":"from the database; instead of it, we will mark them as deleted and at the same"},{"line_number":53,"context_line":"time, we will start denying the rule updating process in some specific"},{"line_number":54,"context_line":"situations. The goal of these changes is to make the system more secure,"},{"line_number":55,"context_line":"auditable, and predictable. Moreover, we will add two new columns, one to"},{"line_number":56,"context_line":"store the user that created the rule, and another one with the user that"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a28b4b42_dcb1eff9","line":53,"range":{"start_line":51,"start_character":39,"end_line":53,"end_character":4},"in_reply_to":"526c2cdb_623cb089","updated":"2023-01-18 14:00:17.000000000","message":"Hmm, we could create it as well in some future patch, but I think that even keeping all the rules for long periods, they number should not increase as much to start generating some performance/storage problems.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"004b1b5b96a37f114b07c5ecf638e70ac76d96f6","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Furthermore, as we are working with billing data, which will be used to charge"},{"line_number":50,"context_line":"the cloud environment users, we also propose to create an auditing mechanism"},{"line_number":51,"context_line":"for the rating rules; to achieve that, we will stop deleting the rating rules"},{"line_number":52,"context_line":"from the database; instead of it, we will mark them as deleted and at the same"},{"line_number":53,"context_line":"time, we will start denying the rule updating process in some specific"},{"line_number":54,"context_line":"situations. The goal of these changes is to make the system more secure,"},{"line_number":55,"context_line":"auditable, and predictable. Moreover, we will add two new columns, one to"},{"line_number":56,"context_line":"store the user that created the rule, and another one with the user that"}],"source_content_type":"text/x-rst","patch_set":5,"id":"50c6f4f3_0fde3021","line":53,"range":{"start_line":51,"start_character":39,"end_line":53,"end_character":4},"in_reply_to":"a28b4b42_dcb1eff9","updated":"2023-01-18 15:17:03.000000000","message":"Agree, let\u0027s leave this for a later patch/blueprint.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":57,"context_line":"removed it."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The update is only going to be allowed if the rules have never been used"},{"line_number":60,"context_line":"to rate a metric by CloudKitty. If it has already been used, we will not"},{"line_number":61,"context_line":"allow updating it. The rationale is that we cannot change a rule while it"},{"line_number":62,"context_line":"is being used, so we maintain it consistent. Operators will always be able"},{"line_number":63,"context_line":"to delete a rating rule to be able to remove it from processing and"},{"line_number":64,"context_line":"reprocessing. If rating rules have None as the end date, we then allow an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"88c5d954_d1145284","line":61,"range":{"start_line":60,"start_character":32,"end_line":61,"end_character":18},"updated":"2023-01-18 12:58:09.000000000","message":"What will decide whether the rule was used or not?","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"50f2558cf65d5905842cfb2da2af9cae211874f8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"removed it."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The update is only going to be allowed if the rules have never been used"},{"line_number":60,"context_line":"to rate a metric by CloudKitty. If it has already been used, we will not"},{"line_number":61,"context_line":"allow updating it. The rationale is that we cannot change a rule while it"},{"line_number":62,"context_line":"is being used, so we maintain it consistent. Operators will always be able"},{"line_number":63,"context_line":"to delete a rating rule to be able to remove it from processing and"},{"line_number":64,"context_line":"reprocessing. If rating rules have None as the end date, we then allow an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a3885cde_c8d5160d","line":61,"range":{"start_line":60,"start_character":32,"end_line":61,"end_character":18},"in_reply_to":"88c5d954_d1145284","updated":"2023-01-18 14:00:17.000000000","message":"If it\u0027s start date is before the current date, it will be considered as used, I think it should be the simplest solution. Even in some cases that we just created a new rule using start as 1 minute in the future, then if we wait a few minutes, the rule start will be in the past, but the rating process was not started yet due the configured \u0027period\u0027, so we are considering a rule as used when it was not processed yet, but I think that it will make things simpler, not so accurate, but simpler :), What do you think?","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"004b1b5b96a37f114b07c5ecf638e70ac76d96f6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"removed it."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The update is only going to be allowed if the rules have never been used"},{"line_number":60,"context_line":"to rate a metric by CloudKitty. If it has already been used, we will not"},{"line_number":61,"context_line":"allow updating it. The rationale is that we cannot change a rule while it"},{"line_number":62,"context_line":"is being used, so we maintain it consistent. Operators will always be able"},{"line_number":63,"context_line":"to delete a rating rule to be able to remove it from processing and"},{"line_number":64,"context_line":"reprocessing. If rating rules have None as the end date, we then allow an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"72f5ce5c_5552762e","line":61,"range":{"start_line":60,"start_character":32,"end_line":61,"end_character":18},"in_reply_to":"a3885cde_c8d5160d","updated":"2023-01-18 15:17:03.000000000","message":"Yes, this makes sense. Maybe add \"(the start value is in the past)\" here as well to clarify what the condition is?","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":68,"context_line":"For rating rules that have not been used yet, we allow operators to update"},{"line_number":69,"context_line":"anything they wish, including price, start, and end dates."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Another process that we will allow operators to do is to create rating rules"},{"line_number":72,"context_line":"that start in a past time. As long as they send an extra parameter saying that"},{"line_number":73,"context_line":"they understand that the data point that is in the past will not have this"},{"line_number":74,"context_line":"rule to be applied if a reprocessing is not executed."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c4b97af5_f657d7cc","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":26},"updated":"2023-01-18 12:58:09.000000000","message":"I understand the rationale as it would be useful to have the ability to change historical data but I also feel this may end up causing problems when operators change the rule in the wrong period of time but didn\u0027t take a note of the original time. Maybe we should add a separate table only for keeping track of changes to dates or just not implement this part for now?","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"004b1b5b96a37f114b07c5ecf638e70ac76d96f6","unresolved":false,"context_lines":[{"line_number":68,"context_line":"For rating rules that have not been used yet, we allow operators to update"},{"line_number":69,"context_line":"anything they wish, including price, start, and end dates."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Another process that we will allow operators to do is to create rating rules"},{"line_number":72,"context_line":"that start in a past time. As long as they send an extra parameter saying that"},{"line_number":73,"context_line":"they understand that the data point that is in the past will not have this"},{"line_number":74,"context_line":"rule to be applied if a reprocessing is not executed."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bb2f2f51_f81a6edb","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":26},"in_reply_to":"94de9d0d_e8e79a48","updated":"2023-01-18 15:17:03.000000000","message":"So will the history of updates be stored anywhere or only the UUID of the user who\u0027s chnaged the rule last time? My main concern here is the ability to rollback to old conditions if need be but I guess we can make keeping track of these a responsibility of the operator for now.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"1ec2b56f3f2b427bbcdf60de9deb796947c22efc","unresolved":false,"context_lines":[{"line_number":68,"context_line":"For rating rules that have not been used yet, we allow operators to update"},{"line_number":69,"context_line":"anything they wish, including price, start, and end dates."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Another process that we will allow operators to do is to create rating rules"},{"line_number":72,"context_line":"that start in a past time. As long as they send an extra parameter saying that"},{"line_number":73,"context_line":"they understand that the data point that is in the past will not have this"},{"line_number":74,"context_line":"rule to be applied if a reprocessing is not executed."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"f22b5fd8_cf2c8c4b","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":26},"in_reply_to":"bb2f2f51_f81a6edb","updated":"2023-01-18 15:27:28.000000000","message":"Not allowing users to simply update a rule, it will forces the user to delete the rule and create a new one with the new desired values, and, as we are not deleting rules anymore but marking them as deleted, we will know the deleted rule values, the user that deleted the rule and so on. To improve this behavior to users, they could create the new rule using the same name the old rule had, so it will ease to keep the track of the changes, and the history will be stored in the same table, just need to follow the deleted rules with the same name the rule you want to see the history, as well, if the name is not the same, you can track them using the \u0027service_id\u0027 or \u0027field_id\u0027 plus the \u0027value\u0027 in the rules definitions.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"50f2558cf65d5905842cfb2da2af9cae211874f8","unresolved":false,"context_lines":[{"line_number":68,"context_line":"For rating rules that have not been used yet, we allow operators to update"},{"line_number":69,"context_line":"anything they wish, including price, start, and end dates."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Another process that we will allow operators to do is to create rating rules"},{"line_number":72,"context_line":"that start in a past time. As long as they send an extra parameter saying that"},{"line_number":73,"context_line":"they understand that the data point that is in the past will not have this"},{"line_number":74,"context_line":"rule to be applied if a reprocessing is not executed."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"94de9d0d_e8e79a48","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":26},"in_reply_to":"c4b97af5_f657d7cc","updated":"2023-01-18 14:00:17.000000000","message":"the update of rules will be allowed only for rules that not started yet (start is a future date), and for the rules that are already used, the only thing allowed to be updated is the end date (only if the end date is null, otherwise nothing will be allowed to be updated). We could also forbidden all kind of updates, so if the user wants to do any update, the one will need to delete and create a new rule, so is how the track will be handled without needs of new tables.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"8b5331d2b9af093ae0e9b807eeb8ab4824999b98","unresolved":false,"context_lines":[{"line_number":68,"context_line":"For rating rules that have not been used yet, we allow operators to update"},{"line_number":69,"context_line":"anything they wish, including price, start, and end dates."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Another process that we will allow operators to do is to create rating rules"},{"line_number":72,"context_line":"that start in a past time. As long as they send an extra parameter saying that"},{"line_number":73,"context_line":"they understand that the data point that is in the past will not have this"},{"line_number":74,"context_line":"rule to be applied if a reprocessing is not executed."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"6dbd14f7_58322d5e","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":26},"in_reply_to":"f22b5fd8_cf2c8c4b","updated":"2023-01-18 15:44:48.000000000","message":"Sounds good.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":160,"context_line":"          \u003e than the provided start and cannot be in the past;"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"          name: the rule name, it is a required value, must be a string."},{"line_number":163,"context_line":"          The name must be unique for all not deleted rules (not"},{"line_number":164,"context_line":"          marked as deleted);"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"          description: the rule description, is a optional parameter, and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ef131f07_dd31809a","line":163,"range":{"start_line":163,"start_character":10,"end_line":163,"end_character":59},"updated":"2023-01-18 12:58:09.000000000","message":"Wouldn\u0027t it be better to use UUIDs to identify individual rules and let users name these whatever they want, even if the name is already used by a different rule?","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"50f2558cf65d5905842cfb2da2af9cae211874f8","unresolved":false,"context_lines":[{"line_number":160,"context_line":"          \u003e than the provided start and cannot be in the past;"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"          name: the rule name, it is a required value, must be a string."},{"line_number":163,"context_line":"          The name must be unique for all not deleted rules (not"},{"line_number":164,"context_line":"          marked as deleted);"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"          description: the rule description, is a optional parameter, and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"df75e93a_1f666af6","line":163,"range":{"start_line":163,"start_character":10,"end_line":163,"end_character":59},"in_reply_to":"ef131f07_dd31809a","updated":"2023-01-18 14:00:17.000000000","message":"The rules already have unique uuids, the unique names are more likely to allow operators to create some kind of information to make their rules unique, if they dont care about this field, they could generate random uuids to fill this field when creating the rules :).","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":326,"context_line":"      - check if there is no timestamp set in the deleted field of the rule;"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Besides the changes introduced in this proposal, which we will filter the rules"},{"line_number":329,"context_line":"processed, the rest of the processing workflow will still the same."},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Reprocessing"},{"line_number":332,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"05f0cd6c_9f87af08","line":329,"range":{"start_line":329,"start_character":52,"end_line":329,"end_character":57},"updated":"2023-01-18 12:58:09.000000000","message":"*stay","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"6e43778d0aa058e7f09271d2a251a8c33644a9f6","unresolved":false,"context_lines":[{"line_number":326,"context_line":"      - check if there is no timestamp set in the deleted field of the rule;"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Besides the changes introduced in this proposal, which we will filter the rules"},{"line_number":329,"context_line":"processed, the rest of the processing workflow will still the same."},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Reprocessing"},{"line_number":332,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ca275c20_1012f890","line":329,"range":{"start_line":329,"start_character":52,"end_line":329,"end_character":57},"in_reply_to":"05f0cd6c_9f87af08","updated":"2023-01-18 14:00:31.000000000","message":"Done","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":341,"context_line":"      - check if there is no timestamp set in the deleted field of the rule;"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Besides the changes introduced in this proposal, which we will filter the rules"},{"line_number":344,"context_line":"processed, the rest of the reprocessing workflow will still the same."},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Final thoughts"},{"line_number":347,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fbc6e9c8_8d271b12","line":344,"range":{"start_line":344,"start_character":54,"end_line":344,"end_character":59},"updated":"2023-01-18 12:58:09.000000000","message":"*stay","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"6e43778d0aa058e7f09271d2a251a8c33644a9f6","unresolved":false,"context_lines":[{"line_number":341,"context_line":"      - check if there is no timestamp set in the deleted field of the rule;"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Besides the changes introduced in this proposal, which we will filter the rules"},{"line_number":344,"context_line":"processed, the rest of the reprocessing workflow will still the same."},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Final thoughts"},{"line_number":347,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8645b574_6a8a01e9","line":344,"range":{"start_line":344,"start_character":54,"end_line":344,"end_character":59},"in_reply_to":"fbc6e9c8_8d271b12","updated":"2023-01-18 14:00:31.000000000","message":"Done","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":25277,"name":"Mariusz Karpiarz","email":"mariusz.karpiarz@codethink.co.uk","username":"mkarpiarz"},"change_message_id":"5422bf41d8695c9f7a8eeb2c6d1b004ab533d6a4","unresolved":true,"context_lines":[{"line_number":347,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"With this extension, if one needs to update any rule that has already been in use"},{"line_number":350,"context_line":"(the start value is in the past), we will need to delete it and create a new one"},{"line_number":351,"context_line":"with the updated values; alternatively, one can set the end date, and then create"},{"line_number":352,"context_line":"a new one. By using this approach we can track all changes a rule has, which"},{"line_number":353,"context_line":"facilitated auditing the system."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1e9da4ba_fb741f2f","line":350,"range":{"start_line":350,"start_character":0,"end_line":350,"end_character":33},"updated":"2023-01-18 12:58:09.000000000","message":"Is this the condition for determining whether the role was used or not?","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"50f2558cf65d5905842cfb2da2af9cae211874f8","unresolved":false,"context_lines":[{"line_number":347,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"With this extension, if one needs to update any rule that has already been in use"},{"line_number":350,"context_line":"(the start value is in the past), we will need to delete it and create a new one"},{"line_number":351,"context_line":"with the updated values; alternatively, one can set the end date, and then create"},{"line_number":352,"context_line":"a new one. By using this approach we can track all changes a rule has, which"},{"line_number":353,"context_line":"facilitated auditing the system."}],"source_content_type":"text/x-rst","patch_set":5,"id":"0d8647bc_730a4f73","line":350,"range":{"start_line":350,"start_character":0,"end_line":350,"end_character":33},"in_reply_to":"1e9da4ba_fb741f2f","updated":"2023-01-18 14:00:17.000000000","message":"Yes it is.","commit_id":"3b7b71563b0d33d248ab9ae7bbc0692189f3defd"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c15fab795f08cf3a7ea692a54fde0b79c32b2b5b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"the hashmap and Pyscript rating rules modules."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Furthermore, as we are working with billing data, which will be used to charge"},{"line_number":50,"context_line":"the cloud environment users, we also propose to create an auditing mechanism"},{"line_number":51,"context_line":"for the rating rules; to achieve that, we will stop deleting the rating rules"},{"line_number":52,"context_line":"from the database; instead of it, we will mark them as deleted and at the same"},{"line_number":53,"context_line":"time, we will start denying the rule updating process in some specific"},{"line_number":54,"context_line":"situations. The goal of these changes is to make the system more secure,"},{"line_number":55,"context_line":"auditable, and predictable. Moreover, we will add two new columns, one to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"47f29453_f4ff8cd5","line":52,"range":{"start_line":50,"start_character":29,"end_line":52,"end_character":62},"updated":"2023-02-06 14:06:38.000000000","message":"Excellent idea 👍","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c15fab795f08cf3a7ea692a54fde0b79c32b2b5b","unresolved":true,"context_lines":[{"line_number":52,"context_line":"from the database; instead of it, we will mark them as deleted and at the same"},{"line_number":53,"context_line":"time, we will start denying the rule updating process in some specific"},{"line_number":54,"context_line":"situations. The goal of these changes is to make the system more secure,"},{"line_number":55,"context_line":"auditable, and predictable. Moreover, we will add two new columns, one to"},{"line_number":56,"context_line":"store the user that created the rule, and another one with the user that"},{"line_number":57,"context_line":"removed it."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The update is only going to be allowed if the rules have never been used"},{"line_number":60,"context_line":"to rate a metric by CloudKitty. If it has already been used, we will not"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7fbd9e3a_a81a28ea","line":57,"range":{"start_line":55,"start_character":28,"end_line":57,"end_character":11},"updated":"2023-02-06 14:06:38.000000000","message":"You actually propose three (also updated_by).","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"f173d4d086b274820189df40229231cebdf99cce","unresolved":false,"context_lines":[{"line_number":52,"context_line":"from the database; instead of it, we will mark them as deleted and at the same"},{"line_number":53,"context_line":"time, we will start denying the rule updating process in some specific"},{"line_number":54,"context_line":"situations. The goal of these changes is to make the system more secure,"},{"line_number":55,"context_line":"auditable, and predictable. Moreover, we will add two new columns, one to"},{"line_number":56,"context_line":"store the user that created the rule, and another one with the user that"},{"line_number":57,"context_line":"removed it."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The update is only going to be allowed if the rules have never been used"},{"line_number":60,"context_line":"to rate a metric by CloudKitty. If it has already been used, we will not"}],"source_content_type":"text/x-rst","patch_set":8,"id":"4a9e3e95_7c53ba80","line":57,"range":{"start_line":55,"start_character":28,"end_line":57,"end_character":11},"in_reply_to":"7fbd9e3a_a81a28ea","updated":"2023-02-06 17:39:22.000000000","message":"Missed that one, thanks 😊","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c15fab795f08cf3a7ea692a54fde0b79c32b2b5b","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    - deleted: deletion timestamp;"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    - created_by: keystone user\u0027s id who created the rule;"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    - updated_by: last keystone user\u0027s id who changed the rule;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    - deleted_by: keystone user\u0027s id who deleted the rule."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. code-block:: SQL"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"a80c4d35_42a6d012","line":102,"range":{"start_line":98,"start_character":0,"end_line":102,"end_character":58},"updated":"2023-02-06 14:06:38.000000000","message":"What about recording all actions in another table, like Nova on instance events? This would allow us to keep a record of all updates instead of just the last one.","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"f173d4d086b274820189df40229231cebdf99cce","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    - deleted: deletion timestamp;"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    - created_by: keystone user\u0027s id who created the rule;"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    - updated_by: last keystone user\u0027s id who changed the rule;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    - deleted_by: keystone user\u0027s id who deleted the rule."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. code-block:: SQL"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"e48b2874_edc1d4ce","line":102,"range":{"start_line":98,"start_character":0,"end_line":102,"end_character":58},"in_reply_to":"a80c4d35_42a6d012","updated":"2023-02-06 17:39:22.000000000","message":"We could do that, but, with the current updating rules context, we are restricting the updating of rules to only a few conditions (the most of times, only updating the end date), so the number of rules recreation (deletion + creation) should be higher than the number of rules updates. And for the case of recreation, we are already tracking the rules in the mappings table, as we are not removing the rules anymore, but marking them as deleted. So what do you think? Would it be enough using this \"recreate\" approach? Or do you think that we would need this new table to handle the updating exceptions (updating roles where did not start yet)?","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c15fab795f08cf3a7ea692a54fde0b79c32b2b5b","unresolved":true,"context_lines":[{"line_number":154,"context_line":"          end: the timestamp the rule will have no more effect; if none"},{"line_number":155,"context_line":"          is provided, it will be none, meaning that it is an"},{"line_number":156,"context_line":"          endless rule (rule without an end date); if a date without"},{"line_number":157,"context_line":"          time is provided, the next midnight day minus 1 minute"},{"line_number":158,"context_line":"          (23:59:00) will be used; if the timezone is not provided,"},{"line_number":159,"context_line":"          we use the timezone of the system. Its value must be"},{"line_number":160,"context_line":"          \u003e than the provided start and cannot be in the past;"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ee36ad0b_360600cd","line":158,"range":{"start_line":157,"start_character":28,"end_line":158,"end_character":20},"updated":"2023-02-06 14:06:38.000000000","message":"I would make the end date at 00:00:00 and use a strict comparison.","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"f173d4d086b274820189df40229231cebdf99cce","unresolved":true,"context_lines":[{"line_number":154,"context_line":"          end: the timestamp the rule will have no more effect; if none"},{"line_number":155,"context_line":"          is provided, it will be none, meaning that it is an"},{"line_number":156,"context_line":"          endless rule (rule without an end date); if a date without"},{"line_number":157,"context_line":"          time is provided, the next midnight day minus 1 minute"},{"line_number":158,"context_line":"          (23:59:00) will be used; if the timezone is not provided,"},{"line_number":159,"context_line":"          we use the timezone of the system. Its value must be"},{"line_number":160,"context_line":"          \u003e than the provided start and cannot be in the past;"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"86441361_55137265","line":158,"range":{"start_line":157,"start_character":28,"end_line":158,"end_character":20},"in_reply_to":"ee36ad0b_360600cd","updated":"2023-02-06 17:39:22.000000000","message":"This default time for end date will be set only if the user does not send a date with time (timestamp), if the user sends it, then we are going to use it. For the case the user does not send the time and we set the time as 00:00:00, then the rule is going to end at the end of the specific day, but at the beginning of the day, and if we set it to next day midnight, the user could be confused - \"I set the end day to 23/01/01 and it sets the end day to 24/01/01 00:00:00\". \n\nSo, basically here the desired behavior is that if the user does not set an end time, then it should be automatically set to the end of the day. What do you think?","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c15fab795f08cf3a7ea692a54fde0b79c32b2b5b","unresolved":true,"context_lines":[{"line_number":416,"context_line":"1) Extend the database model;"},{"line_number":417,"context_line":"2) Create the data migration process to fill the initial start dates;"},{"line_number":418,"context_line":"3) Adapt the REST APIs to accept the new fields;"},{"line_number":419,"context_line":"    3.1) Adapt Hash-mappings mappings REST API;"},{"line_number":420,"context_line":"    3.2) Adapt Pyscript REST API;"},{"line_number":421,"context_line":"4) Create the validation mechanism to the new fields;"},{"line_number":422,"context_line":"5) Change the deletion REST API to not delete the rules anymore;"}],"source_content_type":"text/x-rst","patch_set":8,"id":"05e1f943_8c07300c","line":419,"range":{"start_line":419,"start_character":15,"end_line":419,"end_character":28},"updated":"2023-02-06 14:06:38.000000000","message":"hashmap","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"f173d4d086b274820189df40229231cebdf99cce","unresolved":false,"context_lines":[{"line_number":416,"context_line":"1) Extend the database model;"},{"line_number":417,"context_line":"2) Create the data migration process to fill the initial start dates;"},{"line_number":418,"context_line":"3) Adapt the REST APIs to accept the new fields;"},{"line_number":419,"context_line":"    3.1) Adapt Hash-mappings mappings REST API;"},{"line_number":420,"context_line":"    3.2) Adapt Pyscript REST API;"},{"line_number":421,"context_line":"4) Create the validation mechanism to the new fields;"},{"line_number":422,"context_line":"5) Change the deletion REST API to not delete the rules anymore;"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c11df1af_68b13d8e","line":419,"range":{"start_line":419,"start_character":15,"end_line":419,"end_character":28},"in_reply_to":"05e1f943_8c07300c","updated":"2023-02-06 17:39:22.000000000","message":"Done","commit_id":"8c51b2813e1566c8c05f2245a5b103562d6fa446"}]}
