)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"be363688cdd226121a5b4cfd1453725afd7bfe82","unresolved":true,"context_lines":[{"line_number":11,"context_line":"Today we have some hardcoded pollsters that are gathering"},{"line_number":12,"context_line":"data from running virtual machines through libvirt or"},{"line_number":13,"context_line":"different programs running in the compute nodes. However,"},{"line_number":14,"context_line":"the Dynamic pollster does not support this kind of"},{"line_number":15,"context_line":"operations to gather data, it only supports HTTP Rest"},{"line_number":16,"context_line":"requests to collect data."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"921c243c_72d4d8fb","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":20},"updated":"2022-08-30 12:08:25.000000000","message":"the Dynamic pollster definition","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3caf5eaab665f9121588d3edcec6cc038d3d69ef","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Today we have some hardcoded pollsters that are gathering"},{"line_number":12,"context_line":"data from running virtual machines through libvirt or"},{"line_number":13,"context_line":"different programs running in the compute nodes. However,"},{"line_number":14,"context_line":"the Dynamic pollster does not support this kind of"},{"line_number":15,"context_line":"operations to gather data, it only supports HTTP Rest"},{"line_number":16,"context_line":"requests to collect data."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"2fe34247_f4240eca","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":20},"in_reply_to":"921c243c_72d4d8fb","updated":"2022-08-30 12:42:07.000000000","message":"Ack","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"be363688cdd226121a5b4cfd1453725afd7bfe82","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Proposal"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"To allow this kind of operations using Dynamic pollsters,"},{"line_number":21,"context_line":"we propose to add a new pollster definition using the"},{"line_number":22,"context_line":"`os.subprocess` lib to run host commands to collect"},{"line_number":23,"context_line":"Host/VMs data and store them in the configured backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7b930b2a_8beff66e","line":20,"range":{"start_line":20,"start_character":9,"end_line":20,"end_character":38},"updated":"2022-08-30 12:08:25.000000000","message":"host commands/scripts in the","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3caf5eaab665f9121588d3edcec6cc038d3d69ef","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Proposal"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"To allow this kind of operations using Dynamic pollsters,"},{"line_number":21,"context_line":"we propose to add a new pollster definition using the"},{"line_number":22,"context_line":"`os.subprocess` lib to run host commands to collect"},{"line_number":23,"context_line":"Host/VMs data and store them in the configured backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"d120609c_ceb6c477","line":20,"range":{"start_line":20,"start_character":9,"end_line":20,"end_character":38},"in_reply_to":"7b930b2a_8beff66e","updated":"2022-08-30 12:42:07.000000000","message":"Ack","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"be363688cdd226121a5b4cfd1453725afd7bfe82","unresolved":true,"context_lines":[{"line_number":20,"context_line":"To allow this kind of operations using Dynamic pollsters,"},{"line_number":21,"context_line":"we propose to add a new pollster definition using the"},{"line_number":22,"context_line":"`os.subprocess` lib to run host commands to collect"},{"line_number":23,"context_line":"Host/VMs data and store them in the configured backend."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I50b8dc341ce457780416b41d138e35f5a0d083b6"},{"line_number":26,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ceilometer/+/850253"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"d1bee86e_88c1b5d3","line":23,"range":{"start_line":23,"start_character":36,"end_line":23,"end_character":55},"updated":"2022-08-30 12:08:25.000000000","message":"configured backend. This will provide more flexibility and make the Dynamic pollsters able to be used in Ceilometer compute instances as well.","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3caf5eaab665f9121588d3edcec6cc038d3d69ef","unresolved":false,"context_lines":[{"line_number":20,"context_line":"To allow this kind of operations using Dynamic pollsters,"},{"line_number":21,"context_line":"we propose to add a new pollster definition using the"},{"line_number":22,"context_line":"`os.subprocess` lib to run host commands to collect"},{"line_number":23,"context_line":"Host/VMs data and store them in the configured backend."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I50b8dc341ce457780416b41d138e35f5a0d083b6"},{"line_number":26,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ceilometer/+/850253"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"72d880ff_4e6d19cc","line":23,"range":{"start_line":23,"start_character":36,"end_line":23,"end_character":55},"in_reply_to":"d1bee86e_88c1b5d3","updated":"2022-08-30 12:42:07.000000000","message":"Ack","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"ff160d5c26f5b2e819639a89500b03f42f172f8e","unresolved":true,"context_lines":[{"line_number":13,"context_line":"different programs running in the compute nodes. However,"},{"line_number":14,"context_line":"the Dynamic pollster definition does not support this kind of"},{"line_number":15,"context_line":"operations to gather data, it only supports HTTP Rest"},{"line_number":16,"context_line":"requests to collect data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Proposal"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ce66639e_b338ce62","line":16,"updated":"2022-09-01 12:36:14.000000000","message":"I would add something like (at the end of the sentence) \"Therefore, it is not possible to use the dynamic pollster definition to create a YML based pollster that runs and collects data from Libvirt in the compute nodes.\"","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"30f3d461f19ef16dd1b0f54837450592d1f3f56b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"different programs running in the compute nodes. However,"},{"line_number":14,"context_line":"the Dynamic pollster definition does not support this kind of"},{"line_number":15,"context_line":"operations to gather data, it only supports HTTP Rest"},{"line_number":16,"context_line":"requests to collect data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Proposal"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1d0d4667_b5bc8d2f","line":16,"in_reply_to":"ce66639e_b338ce62","updated":"2022-09-01 15:10:34.000000000","message":"Ack, thanks","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"891bf90d44547bb0b2d7eeb3dcea119e611c3248","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8b16ab09_529d0b74","updated":"2022-08-03 21:25:40.000000000","message":"recheck","commit_id":"d493cf54796b82ca26ed613656f0ac616c88db97"},{"author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"change_message_id":"2e8d5a929892797db4b4cc0d4ba0e119ab741b38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1f521af7_a7a4fc7f","updated":"2022-08-19 14:11:05.000000000","message":"Looks like this failed the telemetry-dvsm-integration job due to gnocchi:\n\n++ /opt/stack/ceilometer/devstack/plugin.sh:start_ceilometer:322 :   /usr/local/bin/ceilometer-upgrade\n2022-08-04 13:42:28.163 119541 DEBUG ceilometer.cmd.storage [-] Upgrading Gnocchi resource types upgrade /opt/stack/ceilometer/ceilometer/cmd/storage.py:42\n2022-08-04 13:42:28.451 119541 CRITICAL ceilometer [-] Unhandled error: gnocchiclient.exceptions.ClientException: Internal Server Error (HTTP 500)\n2022-08-04 13:42:28.451 119541 ERROR ceilometer Traceback (most recent call last):\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/bin/ceilometer-upgrade\", line 10, in \u003cmodule\u003e\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     sys.exit(upgrade())\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/opt/stack/ceilometer/ceilometer/cmd/storage.py\", line 49, in upgrade\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     tenacity.Retrying(\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/lib/python3.8/dist-packages/tenacity/__init__.py\", line 423, in __call__\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     do \u003d self.iter(retry_state\u003dretry_state)\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/lib/python3.8/dist-packages/tenacity/__init__.py\", line 360, in iter\n\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     return fut.result()\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/lib/python3.8/concurrent/futures/_base.py\", line 437, in result\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     return self.__get_result()\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/lib/python3.8/concurrent/futures/_base.py\", line 389, in __get_result\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     raise self._exception\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/lib/python3.8/dist-packages/tenacity/__init__.py\", line 426, in __call__\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     result \u003d fn(*args, **kwargs)\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/opt/stack/ceilometer/ceilometer/gnocchi_client.py\", line 253, in upgrade_resource_types\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     gnocchi_version \u003d version.LooseVersion(gnocchi.build.get())\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/lib/python3.8/dist-packages/gnocchiclient/v1/build.py\", line 19, in get\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     return self._get(\"\").json().get(\"build\", \"unknown\")\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/lib/python3.8/dist-packages/gnocchiclient/v1/base.py\", line 37, in _get\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     return self.client.api.get(*args, **kwargs)\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/lib/python3.8/dist-packages/keystoneauth1/adapter.py\", line 395, in get\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     return self.request(url, \u0027GET\u0027, **kwargs)\n2022-08-04 13:42:28.451 119541 ERROR ceilometer   File \"/usr/local/lib/python3.8/dist-packages/gnocchiclient/client.py\", line 52, in request\n2022-08-04 13:42:28.451 119541 ERROR ceilometer     raise exceptions.from_response(resp, method)\n2022-08-04 13:42:28.451 119541 ERROR ceilometer gnocchiclient.exceptions.ClientException: Internal Server Error (HTTP 500)\n2022-08-04 13:42:28.451 119541 ERROR ceilometer ","commit_id":"4300f0fdea72af3623336c27aaddbf3e21896821"},{"author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"change_message_id":"9892df3fc4832a50fe964996f61ab11a2c5cf4d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2df66182_5a5e223e","updated":"2022-08-19 14:12:41.000000000","message":"recheck","commit_id":"4300f0fdea72af3623336c27aaddbf3e21896821"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3caf5eaab665f9121588d3edcec6cc038d3d69ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2e8b57d8_edf4627a","updated":"2022-08-30 12:42:07.000000000","message":"Hi Rafael, thanks for the review 😊. \n","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"be363688cdd226121a5b4cfd1453725afd7bfe82","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"04238208_a513c7a3","updated":"2022-08-30 12:08:25.000000000","message":"Thanks for the patch. However, it seems to be mixed with some other changes in the extra metadata gathering. Is this on purpose? Or, are those changes there by mistake, and they should be in a separated patch?","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3caf5eaab665f9121588d3edcec6cc038d3d69ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2ba411d6_9e2f7efb","in_reply_to":"04238208_a513c7a3","updated":"2022-08-30 12:42:07.000000000","message":"It was on purpose. We introduced a new pollster definition which is not compatible with the extra metadata, so we improved the extra metadata to be compatible with all the pollsters` definitions (including this new \u0027host command\u0027). Its most like we created a new feature and made old features compatible with this new one.","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"2e2633c9fe6749d488653ebb888ec0d7bfed308f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c5c2947d_7b7ad90e","in_reply_to":"2ba411d6_9e2f7efb","updated":"2022-08-30 12:55:53.000000000","message":"I see. Now I understand. Thanks!","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"30f3d461f19ef16dd1b0f54837450592d1f3f56b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"541f873a_3e4a81bc","updated":"2022-09-01 15:10:34.000000000","message":"Hello Rafael, thanks for yours contributions. I did some changes in the patch to address yours suggestions.","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"ff160d5c26f5b2e819639a89500b03f42f172f8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ea8a1e80_47dfee40","updated":"2022-09-01 12:36:14.000000000","message":"I have a question regarding the use of paging with Host_commands. How will it behave?","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"30f3d461f19ef16dd1b0f54837450592d1f3f56b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"914a3d0c_680f518f","in_reply_to":"ea8a1e80_47dfee40","updated":"2022-09-01 15:10:34.000000000","message":"It is not compatible with paging, I will add it, so when you use paging with the host_command, the next_page result must be the next command you will execute, something like that:\n\n      host_command: |\n        echo \u0027{\"server\": [{\"status\": \"ACTIVE\"}], \"next\": \"\"}\u0027\n      next_sample_url_attribute: |\n        next | \"echo \" + value + \"\u0027{\\\"server\\\": [{\\\"status\\\": \\\"INACTIVE\\\"}]}\u0027\"","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"c27cd97c6a428bd27b40322e5a21c8879fc002e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"41267d8a_8dc5ad55","updated":"2022-09-02 17:32:43.000000000","message":"recheck","commit_id":"6f0ea8ce747abb90e6c357531125c294da783a17"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"be86432df0c25f9e11b5b15da76b74320ef94868","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fa6bf2ff_75bd118b","updated":"2022-10-11 13:31:42.000000000","message":"recheck","commit_id":"cb448a1dbc48ddd28d9fd0f6b6e44deafd636f52"}],"ceilometer/polling/dynamic_pollster.py":[{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"be363688cdd226121a5b4cfd1453725afd7bfe82","unresolved":true,"context_lines":[{"line_number":606,"context_line":"                samples \u003d extra_metadata_pollster.get_samples("},{"line_number":607,"context_line":"                    manager, None, resources)"},{"line_number":608,"context_line":"                for sample in samples:"},{"line_number":609,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":610,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":611,"context_line":"            return extra_metadata_samples"},{"line_number":612,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d3e75504_6271842c","line":609,"updated":"2022-08-30 12:08:25.000000000","message":"same here","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3caf5eaab665f9121588d3edcec6cc038d3d69ef","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                samples \u003d extra_metadata_pollster.get_samples("},{"line_number":607,"context_line":"                    manager, None, resources)"},{"line_number":608,"context_line":"                for sample in samples:"},{"line_number":609,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":610,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":611,"context_line":"            return extra_metadata_samples"},{"line_number":612,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a8d5cffe_2b78fffb","line":609,"in_reply_to":"d3e75504_6271842c","updated":"2022-08-30 12:42:07.000000000","message":"Done","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"be363688cdd226121a5b4cfd1453725afd7bfe82","unresolved":true,"context_lines":[{"line_number":572,"context_line":"                \"Required fields %s not specified.\""},{"line_number":573,"context_line":"                % missing, self.configurations)"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    def retrieve_extra_metadata(self, manager, request_sample, pollster_conf):"},{"line_number":576,"context_line":"        extra_metadata_fields \u003d self.configurations[\u0027extra_metadata_fields\u0027]"},{"line_number":577,"context_line":"        if extra_metadata_fields:"},{"line_number":578,"context_line":"            extra_metadata_samples \u003d {}"},{"line_number":579,"context_line":"            if not isinstance(extra_metadata_fields, (list, tuple)):"},{"line_number":580,"context_line":"                extra_metadata_fields \u003d [extra_metadata_fields]"},{"line_number":581,"context_line":"            for ext_metadata in extra_metadata_fields:"},{"line_number":582,"context_line":"                ext_metadata.setdefault("},{"line_number":583,"context_line":"                    \u0027sample_type\u0027, self.configurations[\u0027sample_type\u0027])"},{"line_number":584,"context_line":"                ext_metadata.setdefault(\u0027unit\u0027, self.configurations[\u0027unit\u0027])"},{"line_number":585,"context_line":"                ext_metadata.setdefault("},{"line_number":586,"context_line":"                    \u0027value_attribute\u0027, ext_metadata.get("},{"line_number":587,"context_line":"                        \u0027value\u0027, self.configurations[\u0027value_attribute\u0027]))"},{"line_number":588,"context_line":"                ext_metadata[\u0027base_metadata\u0027] \u003d {"},{"line_number":589,"context_line":"                    \u0027extra_metadata_captured\u0027: extra_metadata_samples,"},{"line_number":590,"context_line":"                    \u0027sample\u0027: request_sample"},{"line_number":591,"context_line":"                }"},{"line_number":592,"context_line":"                parent_cache_ttl \u003d self.configurations["},{"line_number":593,"context_line":"                    \u0027extra_metadata_fields_cache_seconds\u0027]"},{"line_number":594,"context_line":"                cache_ttl \u003d ext_metadata.get("},{"line_number":595,"context_line":"                    \u0027extra_metadata_fields_cache_seconds\u0027, parent_cache_ttl"},{"line_number":596,"context_line":"                )"},{"line_number":597,"context_line":"                response_cache \u003d self.response_cache"},{"line_number":598,"context_line":"                extra_metadata_pollster \u003d DynamicPollster("},{"line_number":599,"context_line":"                    ext_metadata, conf\u003dpollster_conf, cache_ttl\u003dcache_ttl,"},{"line_number":600,"context_line":"                    extra_metadata_responses_cache\u003dresponse_cache,"},{"line_number":601,"context_line":"                )"},{"line_number":602,"context_line":"                resources \u003d [None]"},{"line_number":603,"context_line":"                if ext_metadata.get(\u0027endpoint_type\u0027):"},{"line_number":604,"context_line":"                    resources \u003d manager.discover(["},{"line_number":605,"context_line":"                        extra_metadata_pollster.default_discovery], {})"},{"line_number":606,"context_line":"                samples \u003d extra_metadata_pollster.get_samples("},{"line_number":607,"context_line":"                    manager, None, resources)"},{"line_number":608,"context_line":"                for sample in samples:"},{"line_number":609,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":610,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":611,"context_line":"            return extra_metadata_samples"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        LOG.debug(\"No extra metadata to be captured for pollsters [%s] and \""},{"line_number":614,"context_line":"                  \"request sample [%s].\", self.definitions, request_sample)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fd64ceb2_75a1b0c0","line":611,"range":{"start_line":575,"start_character":4,"end_line":611,"end_character":41},"updated":"2022-08-30 12:08:25.000000000","message":"This change does not seem to be related to this patch. Is it here by mistake?","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"3caf5eaab665f9121588d3edcec6cc038d3d69ef","unresolved":false,"context_lines":[{"line_number":572,"context_line":"                \"Required fields %s not specified.\""},{"line_number":573,"context_line":"                % missing, self.configurations)"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    def retrieve_extra_metadata(self, manager, request_sample, pollster_conf):"},{"line_number":576,"context_line":"        extra_metadata_fields \u003d self.configurations[\u0027extra_metadata_fields\u0027]"},{"line_number":577,"context_line":"        if extra_metadata_fields:"},{"line_number":578,"context_line":"            extra_metadata_samples \u003d {}"},{"line_number":579,"context_line":"            if not isinstance(extra_metadata_fields, (list, tuple)):"},{"line_number":580,"context_line":"                extra_metadata_fields \u003d [extra_metadata_fields]"},{"line_number":581,"context_line":"            for ext_metadata in extra_metadata_fields:"},{"line_number":582,"context_line":"                ext_metadata.setdefault("},{"line_number":583,"context_line":"                    \u0027sample_type\u0027, self.configurations[\u0027sample_type\u0027])"},{"line_number":584,"context_line":"                ext_metadata.setdefault(\u0027unit\u0027, self.configurations[\u0027unit\u0027])"},{"line_number":585,"context_line":"                ext_metadata.setdefault("},{"line_number":586,"context_line":"                    \u0027value_attribute\u0027, ext_metadata.get("},{"line_number":587,"context_line":"                        \u0027value\u0027, self.configurations[\u0027value_attribute\u0027]))"},{"line_number":588,"context_line":"                ext_metadata[\u0027base_metadata\u0027] \u003d {"},{"line_number":589,"context_line":"                    \u0027extra_metadata_captured\u0027: extra_metadata_samples,"},{"line_number":590,"context_line":"                    \u0027sample\u0027: request_sample"},{"line_number":591,"context_line":"                }"},{"line_number":592,"context_line":"                parent_cache_ttl \u003d self.configurations["},{"line_number":593,"context_line":"                    \u0027extra_metadata_fields_cache_seconds\u0027]"},{"line_number":594,"context_line":"                cache_ttl \u003d ext_metadata.get("},{"line_number":595,"context_line":"                    \u0027extra_metadata_fields_cache_seconds\u0027, parent_cache_ttl"},{"line_number":596,"context_line":"                )"},{"line_number":597,"context_line":"                response_cache \u003d self.response_cache"},{"line_number":598,"context_line":"                extra_metadata_pollster \u003d DynamicPollster("},{"line_number":599,"context_line":"                    ext_metadata, conf\u003dpollster_conf, cache_ttl\u003dcache_ttl,"},{"line_number":600,"context_line":"                    extra_metadata_responses_cache\u003dresponse_cache,"},{"line_number":601,"context_line":"                )"},{"line_number":602,"context_line":"                resources \u003d [None]"},{"line_number":603,"context_line":"                if ext_metadata.get(\u0027endpoint_type\u0027):"},{"line_number":604,"context_line":"                    resources \u003d manager.discover(["},{"line_number":605,"context_line":"                        extra_metadata_pollster.default_discovery], {})"},{"line_number":606,"context_line":"                samples \u003d extra_metadata_pollster.get_samples("},{"line_number":607,"context_line":"                    manager, None, resources)"},{"line_number":608,"context_line":"                for sample in samples:"},{"line_number":609,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":610,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":611,"context_line":"            return extra_metadata_samples"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        LOG.debug(\"No extra metadata to be captured for pollsters [%s] and \""},{"line_number":614,"context_line":"                  \"request sample [%s].\", self.definitions, request_sample)"}],"source_content_type":"text/x-python","patch_set":3,"id":"0c7d2f91_a561c1f7","line":611,"range":{"start_line":575,"start_character":4,"end_line":611,"end_character":41},"in_reply_to":"fd64ceb2_75a1b0c0","updated":"2022-08-30 12:42:07.000000000","message":"this change is a must one to allow us using extra metadata with the new introduced \u0027host_command\u0027 definition.","commit_id":"dafb40d5e465d883c67c36b9f8798b1d0e82a10b"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"ff160d5c26f5b2e819639a89500b03f42f172f8e","unresolved":true,"context_lines":[{"line_number":609,"context_line":"                    manager, None, resources)"},{"line_number":610,"context_line":"                for sample in samples:"},{"line_number":611,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":612,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":613,"context_line":"            return extra_metadata_samples"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        LOG.debug(\"No extra metadata to be captured for pollsters [%s] and \""}],"source_content_type":"text/x-python","patch_set":6,"id":"85843c34_deff1f09","line":612,"updated":"2022-09-01 12:36:14.000000000","message":"The way you structured here, if the samples have the same metadata keys, they will override each other.","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"b33bdb819d5da2e9efeb6cb97ff3c7b4ca103317","unresolved":true,"context_lines":[{"line_number":609,"context_line":"                    manager, None, resources)"},{"line_number":610,"context_line":"                for sample in samples:"},{"line_number":611,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":612,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":613,"context_line":"            return extra_metadata_samples"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        LOG.debug(\"No extra metadata to be captured for pollsters [%s] and \""}],"source_content_type":"text/x-python","patch_set":6,"id":"c706c541_408be893","line":612,"in_reply_to":"2d1a7d7c_63dc6db1","updated":"2022-09-01 20:15:02.000000000","message":"Hmm, but in the end, all extra_metadata samples must be set into the metadata attribute in the root sample, even if we do that, they will be overwritten when we flat them into the root sample metadata. We could append the extra_metadata_field`s sample.name to the metadata`s name in the root sample, but I think this is not a good deal to force it in the code as you can do the same via YAML config, just mapping the metadata name to other one.\n\nI think that multiple extra_metadata_fields sharing the same metadata name does not make much sense to me, except in the cases that the metadata has an unknown source, so we will need to navigate through multiple sources (using multiple extra_metadata_fields) until we find the metadata, so a logic to overwrite the metadata only if the value is not None, could be a good one, so we will avoid None values if the last source does not return the metadata.","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"30f3d461f19ef16dd1b0f54837450592d1f3f56b","unresolved":true,"context_lines":[{"line_number":609,"context_line":"                    manager, None, resources)"},{"line_number":610,"context_line":"                for sample in samples:"},{"line_number":611,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":612,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":613,"context_line":"            return extra_metadata_samples"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        LOG.debug(\"No extra metadata to be captured for pollsters [%s] and \""}],"source_content_type":"text/x-python","patch_set":6,"id":"8fb1cb5e_ddfcb949","line":612,"in_reply_to":"85843c34_deff1f09","updated":"2022-09-01 15:10:34.000000000","message":"yes the extra_metadata_fields are overriding themselves metadata (not the root sample metadata, it is handled in the caller of this procedure), I think that it is ok, as you can configure the extra_metadata_fields metadata and also map their names to not collides with each other, if they all collides, then the last one will be used, and if they collides with the root sample, then the root sample metadata will be used and a warn will be logged.","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"1dd2e7199280047ee17f0fe17fb4f52b5a6d15d3","unresolved":true,"context_lines":[{"line_number":609,"context_line":"                    manager, None, resources)"},{"line_number":610,"context_line":"                for sample in samples:"},{"line_number":611,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":612,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":613,"context_line":"            return extra_metadata_samples"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        LOG.debug(\"No extra metadata to be captured for pollsters [%s] and \""}],"source_content_type":"text/x-python","patch_set":6,"id":"2d1a7d7c_63dc6db1","line":612,"in_reply_to":"8fb1cb5e_ddfcb949","updated":"2022-09-01 19:06:10.000000000","message":"What if we added the sample metadata as a nested object:\n```\nextra_metadata_samples[sample.name] \u003d {\u0027sample_name\u0027: sample.volume, \u0027metadata\u0027: sample.resource_metadata}\n```\n\nOf course, by doing this, then you need to change the place where this metadata are evaluated/used.\n\nWhat do you think? So, we can avoid one sample from interfering on each other","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"2b5bfe86e46a82ba6c3840ab9967f3785dc4a28a","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                    manager, None, resources)"},{"line_number":610,"context_line":"                for sample in samples:"},{"line_number":611,"context_line":"                    extra_metadata_samples[sample.name] \u003d sample.volume"},{"line_number":612,"context_line":"                    extra_metadata_samples.update(sample.resource_metadata)"},{"line_number":613,"context_line":"            return extra_metadata_samples"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        LOG.debug(\"No extra metadata to be captured for pollsters [%s] and \""}],"source_content_type":"text/x-python","patch_set":6,"id":"a0813bda_7553662c","line":612,"in_reply_to":"c706c541_408be893","updated":"2022-09-13 18:34:27.000000000","message":"Ack","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"ff160d5c26f5b2e819639a89500b03f42f172f8e","unresolved":true,"context_lines":[{"line_number":694,"context_line":"            return cached_response"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        if cached_response and max_ttl_for_cache \u003c current_time:"},{"line_number":697,"context_line":"            LOG.debug(\"Cleaning cached response [%s] for request [%s] \""},{"line_number":698,"context_line":"                      \"as the TTL [max\u003d%s, current_time\u003d%s] has expired.\","},{"line_number":699,"context_line":"                      cached_response, definitions,"},{"line_number":700,"context_line":"                      max_ttl_for_cache, current_time)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3c9a4305_5d04d6df","line":697,"updated":"2022-09-01 12:36:14.000000000","message":"Are you really cleaning here? It seems that only a log message is shown. Before this worked, because right after the message, the request would be executed and the cache overwritten.\n\nI see that if you do not return anything, the request is going to be executed. Therefore, it might be interesting to change the message. Or, maybe, to actually clean the cache object here for the entry that has expired.","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"30f3d461f19ef16dd1b0f54837450592d1f3f56b","unresolved":true,"context_lines":[{"line_number":694,"context_line":"            return cached_response"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        if cached_response and max_ttl_for_cache \u003c current_time:"},{"line_number":697,"context_line":"            LOG.debug(\"Cleaning cached response [%s] for request [%s] \""},{"line_number":698,"context_line":"                      \"as the TTL [max\u003d%s, current_time\u003d%s] has expired.\","},{"line_number":699,"context_line":"                      cached_response, definitions,"},{"line_number":700,"context_line":"                      max_ttl_for_cache, current_time)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bb226c50_fd9b3684","line":697,"in_reply_to":"3c9a4305_5d04d6df","updated":"2022-09-01 15:10:34.000000000","message":"Ok, in deed the cache is never cleaned (even in the old version), but overwritten with the response value just after it gets expired, but it is not so visible as this cache workflow was extracted to a separated method. I will remove the cache entry in the same method to avoid misunderstandings in the future.","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"1dd2e7199280047ee17f0fe17fb4f52b5a6d15d3","unresolved":false,"context_lines":[{"line_number":694,"context_line":"            return cached_response"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        if cached_response and max_ttl_for_cache \u003c current_time:"},{"line_number":697,"context_line":"            LOG.debug(\"Cleaning cached response [%s] for request [%s] \""},{"line_number":698,"context_line":"                      \"as the TTL [max\u003d%s, current_time\u003d%s] has expired.\","},{"line_number":699,"context_line":"                      cached_response, definitions,"},{"line_number":700,"context_line":"                      max_ttl_for_cache, current_time)"}],"source_content_type":"text/x-python","patch_set":6,"id":"229b55a2_e06d8c59","line":697,"in_reply_to":"bb226c50_fd9b3684","updated":"2022-09-01 19:06:10.000000000","message":"Done","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"}],"doc/source/admin/telemetry-dynamic-pollster.rst":[{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"ff160d5c26f5b2e819639a89500b03f42f172f8e","unresolved":true,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"The dynamic pollster system can also be used for local host commands,"},{"line_number":473,"context_line":"these commands must be installed in the system that is running the"},{"line_number":474,"context_line":"Ceilometer agent."},{"line_number":475,"context_line":"To configure local hosts commands, one can use all but two attributes of"},{"line_number":476,"context_line":"the Dynamic pollster system. The attributes that are not supported are"},{"line_number":477,"context_line":"the ``endpoint_type`` and ``url_path``. The dynamic pollster system for"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7d6b713e_3d8f3d23","line":474,"range":{"start_line":474,"start_character":0,"end_line":474,"end_character":17},"updated":"2022-09-01 12:36:14.000000000","message":"Ceilometer compute agente","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"30f3d461f19ef16dd1b0f54837450592d1f3f56b","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"The dynamic pollster system can also be used for local host commands,"},{"line_number":473,"context_line":"these commands must be installed in the system that is running the"},{"line_number":474,"context_line":"Ceilometer agent."},{"line_number":475,"context_line":"To configure local hosts commands, one can use all but two attributes of"},{"line_number":476,"context_line":"the Dynamic pollster system. The attributes that are not supported are"},{"line_number":477,"context_line":"the ``endpoint_type`` and ``url_path``. The dynamic pollster system for"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f2f24d4c_c2f7625f","line":474,"range":{"start_line":474,"start_character":0,"end_line":474,"end_character":17},"in_reply_to":"7d6b713e_3d8f3d23","updated":"2022-09-01 15:10:34.000000000","message":"Done","commit_id":"e2d6cedfb618dc3ba4f1236c098c515abc7afae2"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"77218db54191806408c805af7220fabeca4fae5b","unresolved":true,"context_lines":[{"line_number":498,"context_line":"    unit: \"request\""},{"line_number":499,"context_line":"    value_attribute: \"value\""},{"line_number":500,"context_line":"    response_entries_key: \"test\""},{"line_number":501,"context_line":"    data_id_attribute: \"data-id\""},{"line_number":502,"context_line":"    host_command: \"echo \u0027\u003ctest\u003e\u003cdata-id\u003eid1\u003c/data-id\u003e\u003cmeta\u003emeta-data-to-store\u003c/meta\u003e\u003cvalue\u003e1\u003c/value\u003e\u003c/test\u003e\u0027\""},{"line_number":503,"context_line":"    metadata_fields:"},{"line_number":504,"context_line":"        - \"meta\""}],"source_content_type":"text/x-rst","patch_set":10,"id":"eb7bcd49_30614ac6","line":501,"range":{"start_line":501,"start_character":4,"end_line":501,"end_character":21},"updated":"2022-09-11 19:23:47.000000000","message":"What is this option here? It does not seem to be a dynamic pollster configuration.","commit_id":"6f0ea8ce747abb90e6c357531125c294da783a17"},{"author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"change_message_id":"edde60778f5e7d61187a336453275a0b60f0ab82","unresolved":true,"context_lines":[{"line_number":498,"context_line":"    unit: \"request\""},{"line_number":499,"context_line":"    value_attribute: \"value\""},{"line_number":500,"context_line":"    response_entries_key: \"test\""},{"line_number":501,"context_line":"    data_id_attribute: \"data-id\""},{"line_number":502,"context_line":"    host_command: \"echo \u0027\u003ctest\u003e\u003cdata-id\u003eid1\u003c/data-id\u003e\u003cmeta\u003emeta-data-to-store\u003c/meta\u003e\u003cvalue\u003e1\u003c/value\u003e\u003c/test\u003e\u0027\""},{"line_number":503,"context_line":"    metadata_fields:"},{"line_number":504,"context_line":"        - \"meta\""}],"source_content_type":"text/x-rst","patch_set":10,"id":"48baf86c_660c30ec","line":501,"range":{"start_line":501,"start_character":4,"end_line":501,"end_character":21},"in_reply_to":"01dda169_b5ce3686","updated":"2022-09-13 18:42:15.000000000","message":"It is already removed\nhttps://review.opendev.org/c/openstack/ceilometer/+/852021/13/doc/source/admin/telemetry-dynamic-pollster.rst#501","commit_id":"6f0ea8ce747abb90e6c357531125c294da783a17"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"e4b7ea7c5d6e9597da4a06d747c0c832834028c2","unresolved":false,"context_lines":[{"line_number":498,"context_line":"    unit: \"request\""},{"line_number":499,"context_line":"    value_attribute: \"value\""},{"line_number":500,"context_line":"    response_entries_key: \"test\""},{"line_number":501,"context_line":"    data_id_attribute: \"data-id\""},{"line_number":502,"context_line":"    host_command: \"echo \u0027\u003ctest\u003e\u003cdata-id\u003eid1\u003c/data-id\u003e\u003cmeta\u003emeta-data-to-store\u003c/meta\u003e\u003cvalue\u003e1\u003c/value\u003e\u003c/test\u003e\u0027\""},{"line_number":503,"context_line":"    metadata_fields:"},{"line_number":504,"context_line":"        - \"meta\""}],"source_content_type":"text/x-rst","patch_set":10,"id":"84b32fd4_c99a1420","line":501,"range":{"start_line":501,"start_character":4,"end_line":501,"end_character":21},"in_reply_to":"48baf86c_660c30ec","updated":"2022-09-13 18:43:22.000000000","message":"Ack","commit_id":"6f0ea8ce747abb90e6c357531125c294da783a17"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"9fd3f80e406b305086ecacbb83cd3f23a70f4b83","unresolved":true,"context_lines":[{"line_number":498,"context_line":"    unit: \"request\""},{"line_number":499,"context_line":"    value_attribute: \"value\""},{"line_number":500,"context_line":"    response_entries_key: \"test\""},{"line_number":501,"context_line":"    data_id_attribute: \"data-id\""},{"line_number":502,"context_line":"    host_command: \"echo \u0027\u003ctest\u003e\u003cdata-id\u003eid1\u003c/data-id\u003e\u003cmeta\u003emeta-data-to-store\u003c/meta\u003e\u003cvalue\u003e1\u003c/value\u003e\u003c/test\u003e\u0027\""},{"line_number":503,"context_line":"    metadata_fields:"},{"line_number":504,"context_line":"        - \"meta\""}],"source_content_type":"text/x-rst","patch_set":10,"id":"01dda169_b5ce3686","line":501,"range":{"start_line":501,"start_character":4,"end_line":501,"end_character":21},"in_reply_to":"eb7bcd49_30614ac6","updated":"2022-09-13 18:34:52.000000000","message":"Pedro, there is still this left over here.","commit_id":"6f0ea8ce747abb90e6c357531125c294da783a17"}]}
