)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"1d1eb512026472aee8f8187144d82380e0f37817","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b7936fa5_596d31bb","updated":"2024-11-01 07:26:19.000000000","message":"recheck deployment machine ran out of RAM","commit_id":"969d40c24da8f8f4080b663ddf4a0261ed71a74b"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"d4b9169b22944c9db8e5282a09c490710b85a03c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2ed91ee3_8f56c7ba","updated":"2024-10-24 13:30:43.000000000","message":"recheck mariadb with rabbitmq failed to start","commit_id":"969d40c24da8f8f4080b663ddf4a0261ed71a74b"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c664069c6813c21fd239007fc97b527f5320257b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2dc38c3c_bffb6eae","updated":"2025-01-20 10:16:50.000000000","message":"not a complete review yet, but noticed some issue about the tests","commit_id":"8a456ff3c2a4f270ef99c5e7f7472eab1ddbba4a"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0982a789a6079f84d2b61f352ddd74309ae41f5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f25d7496_8b5a7727","updated":"2025-03-28 09:01:06.000000000","message":"Thank you @frickler@offenerstapel.de for the very thorough review.","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9e13e6e466027bf4a506709bf3886d00384a11ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fb0367b0_fcba5879","updated":"2025-03-26 16:12:54.000000000","message":"recheck logs expired\n\nneed to double check logs for completeness, some minor comments inline","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"7c0a5bded69a3a14ee50f8c45b80a654632cccdc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"62dc6160_be159e85","updated":"2025-03-12 08:45:58.000000000","message":"thx for the update, the tests are looking better, I still need to do a full review","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"549b222103f2d8c31f794a39ecb60d3539efff68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7379eb60_ee2f3f1d","updated":"2025-03-28 09:42:39.000000000","message":"thanks for the update, results looked fine for the previous PS, remaining failures are unrelated","commit_id":"555ca5fd9efbd8c45811f76637983d4d0f046463"}],"ansible/library/kolla_toolbox.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9e13e6e466027bf4a506709bf3886d00384a11ad","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        self.container_errors \u003d container_errors"},{"line_number":111,"context_line":"        self.result \u003d dict()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _get_toolbox_container(self) -\u003e bool:"},{"line_number":114,"context_line":"        \"\"\"Get the kolla_toolbox container object, if up and running.\"\"\""},{"line_number":115,"context_line":"        cont \u003d self.client.containers.list("},{"line_number":116,"context_line":"            filters\u003ddict(name\u003d\u0027kolla_toolbox\u0027, status\u003d\u0027running\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2e9d3269_c64fb415","line":113,"range":{"start_line":113,"start_character":40,"end_line":113,"end_character":44},"updated":"2025-03-26 16:12:54.000000000","message":"A container object isn\u0027t `bool`, is it?","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0982a789a6079f84d2b61f352ddd74309ae41f5b","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        self.container_errors \u003d container_errors"},{"line_number":111,"context_line":"        self.result \u003d dict()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _get_toolbox_container(self) -\u003e bool:"},{"line_number":114,"context_line":"        \"\"\"Get the kolla_toolbox container object, if up and running.\"\"\""},{"line_number":115,"context_line":"        cont \u003d self.client.containers.list("},{"line_number":116,"context_line":"            filters\u003ddict(name\u003d\u0027kolla_toolbox\u0027, status\u003d\u0027running\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"d17eb59f_8301e671","line":113,"range":{"start_line":113,"start_character":40,"end_line":113,"end_character":44},"in_reply_to":"2e9d3269_c64fb415","updated":"2025-03-28 09:01:06.000000000","message":"Nope :) \n\nI removed the type hint for this completely as adding it would require importing both type definitions, which is not possible in practice as users have only either docker or podman.","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"549b222103f2d8c31f794a39ecb60d3539efff68","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.container_errors \u003d container_errors"},{"line_number":111,"context_line":"        self.result \u003d dict()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _get_toolbox_container(self) -\u003e bool:"},{"line_number":114,"context_line":"        \"\"\"Get the kolla_toolbox container object, if up and running.\"\"\""},{"line_number":115,"context_line":"        cont \u003d self.client.containers.list("},{"line_number":116,"context_line":"            filters\u003ddict(name\u003d\u0027kolla_toolbox\u0027, status\u003d\u0027running\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a9acb931_29670abd","line":113,"range":{"start_line":113,"start_character":40,"end_line":113,"end_character":44},"in_reply_to":"d17eb59f_8301e671","updated":"2025-03-28 09:42:39.000000000","message":"Done","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9e13e6e466027bf4a506709bf3886d00384a11ad","unresolved":true,"context_lines":[{"line_number":199,"context_line":"        return result"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def main(self) -\u003e None:"},{"line_number":202,"context_line":"        \"\"\"Run command inside the kolla_toobox container with defined args.\"\"\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        kolla_toolbox \u003d self._get_toolbox_container()"},{"line_number":205,"context_line":"        command \u003d self._generate_command()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7139be66_bb3b87d2","line":202,"range":{"start_line":202,"start_character":34,"end_line":202,"end_character":46},"updated":"2025-03-26 16:12:54.000000000","message":"nit: kolla_toolbox","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0982a789a6079f84d2b61f352ddd74309ae41f5b","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        return result"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def main(self) -\u003e None:"},{"line_number":202,"context_line":"        \"\"\"Run command inside the kolla_toobox container with defined args.\"\"\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        kolla_toolbox \u003d self._get_toolbox_container()"},{"line_number":205,"context_line":"        command \u003d self._generate_command()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ddecde71_1959acf6","line":202,"range":{"start_line":202,"start_character":34,"end_line":202,"end_character":46},"in_reply_to":"7139be66_bb3b87d2","updated":"2025-03-28 09:01:06.000000000","message":"Done","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9e13e6e466027bf4a506709bf3886d00384a11ad","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                                       tty\u003dTrue,"},{"line_number":213,"context_line":"                                       user\u003dself.module.params.get(\u0027user\u0027))"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        output_json \u003d self._process_container_output(output_raw)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.result \u003d output_json"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"def create_container_client(module: AnsibleModule):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ece6ceb6_a6e871ff","line":217,"range":{"start_line":215,"start_character":8,"end_line":217,"end_character":33},"updated":"2025-03-26 16:12:54.000000000","message":"```suggestion\n        self.result \u003d self._process_container_output(output_raw)\n```\n\nseems simpler to me and works just as well?","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0982a789a6079f84d2b61f352ddd74309ae41f5b","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                                       tty\u003dTrue,"},{"line_number":213,"context_line":"                                       user\u003dself.module.params.get(\u0027user\u0027))"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        output_json \u003d self._process_container_output(output_raw)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.result \u003d output_json"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"def create_container_client(module: AnsibleModule):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ebc5a026_6ca02f88","line":217,"range":{"start_line":215,"start_character":8,"end_line":217,"end_character":33},"in_reply_to":"ece6ceb6_a6e871ff","updated":"2025-03-28 09:01:06.000000000","message":"Done","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9e13e6e466027bf4a506709bf3886d00384a11ad","unresolved":true,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"def create_container_client(module: AnsibleModule):"},{"line_number":221,"context_line":"    \"\"\"Return appropriate container engine based on parameters.\"\"\""},{"line_number":222,"context_line":"    container_engine \u003d module.params.get(\u0027container_engine\u0027)"},{"line_number":223,"context_line":"    api_version \u003d module.params.get(\u0027api_version\u0027)"},{"line_number":224,"context_line":"    timeout \u003d module.params.get(\u0027timeout\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"07ee6ee6_8c131d5a","line":221,"range":{"start_line":221,"start_character":36,"end_line":221,"end_character":42},"updated":"2025-03-26 16:12:54.000000000","message":"client?","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0982a789a6079f84d2b61f352ddd74309ae41f5b","unresolved":true,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"def create_container_client(module: AnsibleModule):"},{"line_number":221,"context_line":"    \"\"\"Return appropriate container engine based on parameters.\"\"\""},{"line_number":222,"context_line":"    container_engine \u003d module.params.get(\u0027container_engine\u0027)"},{"line_number":223,"context_line":"    api_version \u003d module.params.get(\u0027api_version\u0027)"},{"line_number":224,"context_line":"    timeout \u003d module.params.get(\u0027timeout\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"90e4339c_48217b33","line":221,"range":{"start_line":221,"start_character":36,"end_line":221,"end_character":42},"in_reply_to":"07ee6ee6_8c131d5a","updated":"2025-03-28 09:01:06.000000000","message":"imho \"container engine client\" probably sounds best","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"}],"tests/test_kolla_toolbox.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c664069c6813c21fd239007fc97b527f5320257b","unresolved":true,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            kolla_toolbox.create_ansible_module()"},{"line_number":318,"context_line":"        except AnsibleFailJson as e:"},{"line_number":319,"context_line":"            self.assertIn("},{"line_number":320,"context_line":"                \u0027missing required arguments: module_name\u0027, e.result[\u0027msg\u0027])"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"c15717b5_880bc9b3","line":318,"updated":"2025-01-20 10:16:50.000000000","message":"this test looks incomplete to me, it will silently pass if the function does not raise any exception. I think this should rather be something like\n\n```\nwith self.assertRaises(AnsibleFailJson) as e:\n    kolla_toolbox.create_ansible_module()\nself.assertIn(...)\n```\n\nsame for the other negative tests","commit_id":"8a456ff3c2a4f270ef99c5e7f7472eab1ddbba4a"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"eb2e5c81127ce998bf1de8ae6b9c3775e82f653b","unresolved":true,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            kolla_toolbox.create_ansible_module()"},{"line_number":318,"context_line":"        except AnsibleFailJson as e:"},{"line_number":319,"context_line":"            self.assertIn("},{"line_number":320,"context_line":"                \u0027missing required arguments: module_name\u0027, e.result[\u0027msg\u0027])"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"21b3bcb2_2a24aea3","line":318,"in_reply_to":"16bc96c3_14f86c95","updated":"2025-02-09 12:46:51.000000000","message":"None of the tests should be able to fail silently now.","commit_id":"8a456ff3c2a4f270ef99c5e7f7472eab1ddbba4a"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"7c0a5bded69a3a14ee50f8c45b80a654632cccdc","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            kolla_toolbox.create_ansible_module()"},{"line_number":318,"context_line":"        except AnsibleFailJson as e:"},{"line_number":319,"context_line":"            self.assertIn("},{"line_number":320,"context_line":"                \u0027missing required arguments: module_name\u0027, e.result[\u0027msg\u0027])"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"33b3c7c3_ec997165","line":318,"in_reply_to":"21b3bcb2_2a24aea3","updated":"2025-03-12 08:45:58.000000000","message":"Acknowledged","commit_id":"8a456ff3c2a4f270ef99c5e7f7472eab1ddbba4a"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"4922574c1eb48e2ff79befb750f51c6763a03776","unresolved":true,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            kolla_toolbox.create_ansible_module()"},{"line_number":318,"context_line":"        except AnsibleFailJson as e:"},{"line_number":319,"context_line":"            self.assertIn("},{"line_number":320,"context_line":"                \u0027missing required arguments: module_name\u0027, e.result[\u0027msg\u0027])"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"16bc96c3_14f86c95","line":318,"in_reply_to":"c15717b5_880bc9b3","updated":"2025-01-23 15:01:23.000000000","message":"You\u0027re absolutely right. I can\u0027t belive I\u0027ve missed it. One of the tests actually was failing silently.\n\nThe example you\u0027ve provided is not working with oslotest, it has a little different behavior compared to unittest. But my implementation should fix the silent fails.","commit_id":"8a456ff3c2a4f270ef99c5e7f7472eab1ddbba4a"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9e13e6e466027bf4a506709bf3886d00384a11ad","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2024 Tietoevry"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":4,"id":"76f29387_3dd89f6a","line":1,"updated":"2025-03-26 16:12:54.000000000","message":"if the file isn\u0027t executable, we don\u0027t need this, do we?","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0982a789a6079f84d2b61f352ddd74309ae41f5b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2024 Tietoevry"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":4,"id":"25878186_92a9b1c2","line":1,"in_reply_to":"76f29387_3dd89f6a","updated":"2025-03-28 09:01:06.000000000","message":"We do not","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9e13e6e466027bf4a506709bf3886d00384a11ad","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2024 Tietoevry"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":5,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":6,"context_line":"# You may obtain a copy of the License at"}],"source_content_type":"text/x-python","patch_set":4,"id":"a3252497_89e6323c","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":26},"updated":"2025-03-26 16:12:54.000000000","message":"shouldn\u0027t this be `Tietoevry Oyj` or similar? cf. https://en.wikipedia.org/wiki/Tietoevry","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"549b222103f2d8c31f794a39ecb60d3539efff68","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2024 Tietoevry"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":5,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":6,"context_line":"# You may obtain a copy of the License at"}],"source_content_type":"text/x-python","patch_set":4,"id":"008474d5_e1509438","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":26},"in_reply_to":"078d82dd_e80ab7b0","updated":"2025-03-28 09:42:39.000000000","message":"ok, fine then, thx for checking","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"},{"author":{"_account_id":36702,"name":"Roman Krcek","display_name":"Roman Krček","email":"roman.krcek@tietoevry.com","username":"r-krcek"},"change_message_id":"0982a789a6079f84d2b61f352ddd74309ae41f5b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2024 Tietoevry"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":5,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":6,"context_line":"# You may obtain a copy of the License at"}],"source_content_type":"text/x-python","patch_set":4,"id":"078d82dd_e80ab7b0","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":26},"in_reply_to":"a3252497_89e6323c","updated":"2025-03-28 09:01:06.000000000","message":"Boss approved that just \"Tietoevry\" is ok.","commit_id":"903d792d62424f1cfdbcec800f513676f4972122"}]}
