)]}'
{"id":"openstack%2Fceilometer~695529","triplet_id":"openstack%2Fceilometer~master~I6ed4632f209ac51a07687476ca316212659d72bb","project":"openstack/ceilometer","branch":"master","topic":"multi-metric-pollster-pushUpstream","hashtags":[],"change_id":"I6ed4632f209ac51a07687476ca316212659d72bb","subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","status":"MERGED","created":"2019-11-21 17:08:32.000000000","updated":"2020-02-21 14:35:28.000000000","submitted":"2020-02-21 14:33:52.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"695529-1582295632465-7c03db43","meta_rev_id":"32774553943907d96e09eef2bcfc4136d3435ece","_number":695529,"virtual_id_number":695529,"owner":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2020-02-21 14:33:52.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},{"value":0,"date":"2020-02-21 12:14:56.000000000","_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},{"value":0,"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"all":[{"value":2,"date":"2020-02-20 22:11:52.000000000","_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2020-02-21 06:03:19.000000000","_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},{"value":0,"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},{"value":0,"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"all":[{"value":0,"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2020-02-21 06:03:19.000000000","_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},{"value":0,"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},{"value":0,"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2020-01-30 15:48:31.000000000","updated_by":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"reviewer":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"state":"REVIEWER"},{"updated":"2020-02-20 22:11:52.000000000","updated_by":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"reviewer":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"state":"REVIEWER"},{"updated":"2020-02-21 06:03:19.000000000","updated_by":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"reviewer":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"state":"REVIEWER"},{"updated":"2020-02-21 14:33:52.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"8237bb1871f3790825a12a1ee70224a9a41bd545","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-21 17:08:32.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"9ccd302767a8bacda1dede896cf4301260df2519","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-21 18:20:37.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/b3df3679c3894539b0f0040296d0a0e2 : SUCCESS in 8m 14s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a8113b3359574e99a4c726ae23874839 : FAILURE in 4m 10s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/cf2be231a68e4a6d84a72ea6bb92b919 : SUCCESS in 5m 53s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/d71e528b834f4b2f91dd9d36ae5648ab : SUCCESS in 5m 36s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/da096f905b0748f98ab7dac5833731af : SUCCESS in 6m 17s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/543fa76af6854e5ab49beb346f5d9850 : SUCCESS in 6m 38s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/d698a8793faa4d9a82733e5c3eb2a7ff : SUCCESS in 7m 30s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/fce6879a8da44f3093f4ee8350e720fd : SUCCESS in 1h 08m 18s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/2b342dea0aa245d5985f7dcb9ff4a24c : SUCCESS in 48m 28s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/059b3a5de91b431086fca2267237f4db : SUCCESS in 49m 27s","accounts_in_message":[],"_revision_number":1},{"id":"4ac75270691b393d32a1cd5f47c4865a9760960d","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-21 18:27:07.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"fbd8b6aaa50c7996face7378362413af30cea384","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-21 19:28:47.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/0050f3a10dab4549b443ba0b4a9152b9 : SUCCESS in 7m 55s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4d1598b6cc3444ebad67f9dc0c2b970e : SUCCESS in 3m 58s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/dda7475412bc406b917da24a541f3034 : SUCCESS in 6m 32s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/bf25832b7be34678a2a6edb6f38abcff : SUCCESS in 6m 42s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/d659e84ba34b4fad8e2b63469d65cb35 : SUCCESS in 6m 41s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1b9fdba8896a4ec3af0d59344ab5451f : SUCCESS in 8m 24s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/bad8e53f51754a3f8b1bec7c6a2eaa97 : SUCCESS in 8m 11s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/c8be94b31bdf4f6d9b37e81dc126c0ba : SUCCESS in 58m 44s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/1b6e0a55398341daa43b88164b82910a : SUCCESS in 41m 17s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/98e01808d81547989235773bd4239a24 : SUCCESS in 44m 49s","accounts_in_message":[],"_revision_number":2},{"id":"3edc7a011d5e64da1a0773551290df1f0b9e89fd","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-22 13:42:44.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"a1b36b7f2417ca1441efb20912e63dda7fb88d31","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-22 14:40:56.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/06e24dc152ad4568ad2f26a59a156d1c : SUCCESS in 5m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ca2a2607fd75449d8b1108b3592a312b : SUCCESS in 3m 35s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/1cf85971a0884b23a3d785806184b4d6 : SUCCESS in 5m 52s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/8f8652cc7f32478d88e245b26577b2e3 : SUCCESS in 5m 48s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/85bc3e0985b24ba8992132e575a949d9 : SUCCESS in 6m 06s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/27d442ffb5f64cb5ade10b369e5755cc : SUCCESS in 6m 31s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/0ed6b25deb504f65abf58a0228f2ec16 : SUCCESS in 6m 56s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/2eb1c126640a4709b6f0418a83e5eb49 : SUCCESS in 52m 57s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/8179dd8d2a724b499deb0c4cdddbb22b : SUCCESS in 39m 16s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/78d9d16672e94aaf8bdeb72ef4efcfe3 : SUCCESS in 42m 16s","accounts_in_message":[],"_revision_number":3},{"id":"0a2ead0876d3e49b228781704ee202f63db03840","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-26 12:24:20.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"3d790a1ecb1a15a100faac2fc145aa0629223cf2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-26 13:14:23.000000000","message":"Patch Set 4: Verified-1\n\nThis change depends on a change that failed to merge.","accounts_in_message":[],"_revision_number":4},{"id":"718eed921d79251026ec43f3aa97dc29e967d250","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-26 13:15:56.000000000","message":"Uploaded patch set 5: Patch Set 4 was rebased.","accounts_in_message":[],"_revision_number":5},{"id":"12e8fe65e746195fd963c930e3eb18a88f1e6962","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-26 13:31:37.000000000","message":"Patch Set 5: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/264a4d6c3b7148c7af103cfedc6f8e23 : SUCCESS in 6m 52s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ebe908f914a543198f37832d3e8b94aa : SUCCESS in 4m 43s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/8b9bcace328d440088414733243f224e : SUCCESS in 6m 17s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/d8614206790544328e065fece091ecec : SUCCESS in 6m 36s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/a2a8ec8d685e48d8867a67f06d25e6b2 : SUCCESS in 6m 36s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b3f91ce7e64648edbae55f42bfcbe404 : SUCCESS in 8m 26s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a8d936bfd3464f848c100cde667c0192 : SUCCESS in 7m 21s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/250f498bcf9944d687749a79e1117d22 : FAILURE in 7m 57s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/7312b7ed10cf40f18c73ad32a06d1c5b : FAILURE in 6m 23s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/2bb9824455cc49dead175eafab8a1191 : FAILURE in 6m 16s","accounts_in_message":[],"_revision_number":5},{"id":"0e536657dd652bc114e22ceac3e77c57378f5ba4","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-26 13:52:02.000000000","message":"Patch Set 5:\n\nrecheck","accounts_in_message":[],"_revision_number":5},{"id":"d2e518bdc725183bdfb7f7982677717d3f973a03","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-26 14:11:55.000000000","message":"Patch Set 5:\n\nThis change depends on a change that failed to merge.","accounts_in_message":[],"_revision_number":5},{"id":"7876120d892ae6bb260eaa302b1a1b754a141505","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-26 14:13:45.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.","accounts_in_message":[],"_revision_number":6},{"id":"9d1c58e67bde1b2b533c50e1ffcc09bdb8552422","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-26 14:35:08.000000000","message":"Patch Set 6:\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/2f14571c0d6f485ebee7a35b97e92917 : SUCCESS in 7m 55s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/885e97f7ecd94562843fe2a5a4d9c1be : SUCCESS in 3m 51s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/62bdc341b81b42609b88c4a28d0e4f62 : SUCCESS in 7m 20s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/05a857ba23cd42e1b7d35b527777a597 : SUCCESS in 7m 07s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/6ec623736d344100bb0a635ae5b36774 : SUCCESS in 6m 20s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5b9ba3ac2e3f4825ae174fd7ffb6e209 : SUCCESS in 7m 11s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c5832e51e69e46fbbc956ea20282a3c6 : SUCCESS in 9m 09s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/5ceec0fed4e548a4b1ec072b354ed372 : FAILURE in 8m 56s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/fa7a47be92fa42ff905694b29bf1bf9e : FAILURE in 8m 40s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/fb8aef2d627f47369166139fe9a103da : FAILURE in 8m 09s","accounts_in_message":[],"_revision_number":6},{"id":"af60f514b599d5985e7122422b73f28d58f885ec","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2019-11-26 15:52:58.000000000","message":"Patch Set 6:\n\nrecheck","accounts_in_message":[],"_revision_number":6},{"id":"3664d3a6435b0aa11274825d7c735d88c7d5be0a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-26 16:59:00.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/1a543f2883cf48e88640718f554a900b : SUCCESS in 6m 10s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0b8cfd668b7049eabf8e3e19bc6bacb0 : SUCCESS in 4m 17s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/8a46880004f14ef3a022819024102f7f : SUCCESS in 6m 11s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/b1fa9193ec4243ab806cf8d299c25fe2 : SUCCESS in 5m 57s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/7ca1f897e92a489c83949b761cea41f0 : SUCCESS in 8m 43s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/473f27159c1045e1b676aeebd4265c16 : SUCCESS in 5m 55s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/62a38e4ada954f33bdca0afbbdc59b92 : SUCCESS in 9m 02s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/de22401aa0fe419ca6c10a1216eca5b2 : SUCCESS in 57m 13s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/b4cee1c65b4e47bab2a1dfe29b3b184a : SUCCESS in 40m 44s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/104f581becd142c3b3952cf2b8396e1c : SUCCESS in 48m 09s","accounts_in_message":[],"_revision_number":6},{"id":"bcd3ec481f54521cc1ba898b38a0995df4de49fe","author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"date":"2019-12-08 07:44:18.000000000","message":"Patch Set 6: Code-Review-1\n\nHi Rafael, thanks for the amazing contribution so far, I believe the ceilometer users will benefit from the dynamic pollster implementation. \n\nHowever, I\u0027m a little bit uncomfortable with this adding feature for dynamic pollster, from the doc, I can see this multi-metric pollster is designed especially for RadosGW but makes the whole implementation hard to read, hard to maintain which is not what we want as an open source project.","accounts_in_message":[],"_revision_number":6},{"id":"0818286eeeef74f80df8deaf963fc0ffbc3d5721","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2020-01-21 13:37:51.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"22b014a45f383b2081e6cc19741272734a4dfde5","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2020-01-21 13:41:06.000000000","message":"Patch Set 7:\n\n\u003e Hi Rafael, thanks for the amazing contribution so far, I believe\n \u003e the ceilometer users will benefit from the dynamic pollster\n \u003e implementation.\n \u003e \n \u003e However, I\u0027m a little bit uncomfortable with this adding feature\n \u003e for dynamic pollster, from the doc, I can see this multi-metric\n \u003e pollster is designed especially for RadosGW but makes the whole\n \u003e implementation hard to read, hard to maintain which is not what we\n \u003e want as an open source project.\n\nHello Lingxian Kong, \nSorry for the long delay on this one, but the refactoring of this implementation was a bit complicated (and we had other things that gained priority). Thanks for the help of a friend (Pedro), we managed to rework the logic to make it a bit more flexible and friendly.\n\nWhat do you think of the implementation now?","accounts_in_message":[],"_revision_number":7},{"id":"ab5b1641cb1ae29431dbf6517a5a4521377a7ab7","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-01-21 14:48:31.000000000","message":"Patch Set 7: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/1674f019b4a7410ebd8b8a3832ed6e5b : SUCCESS in 7m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1c4df42bc2ad490696cbc1d83f0144bf : FAILURE in 4m 45s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/18945e76504c43469c901974fe3c8d4a : SUCCESS in 7m 22s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/a3300a6504594023bcec976f75b93e5e : SUCCESS in 7m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b3c13843869f4e6388d8e5d1d19b7cad : SUCCESS in 8m 23s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/aa8b27e9b07948e2a4cd5579ec3fbe41 : SUCCESS in 8m 12s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/f8dfbad8cee54106a3dff6a772755f3d : SUCCESS in 57m 54s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/11f46ab9a3ae422681e87f0840a05b5e : SUCCESS in 46m 05s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/018162fe70e54416b8663c090f1411aa : SUCCESS in 1h 02m 30s","accounts_in_message":[],"_revision_number":7},{"id":"ed1e4c09a5c2e3f57c458b95b6b4965069e19970","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2020-01-21 16:38:15.000000000","message":"Uploaded patch set 8.","accounts_in_message":[],"_revision_number":8},{"id":"4ea9cce9ffc496e35360ac73b729a0235fb93bd4","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-01-21 17:49:41.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/b7bd322110ba46a999d42bf8f16af09c : SUCCESS in 7m 49s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c416e2c2635641d5985fffb06ecf77b8 : SUCCESS in 4m 34s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/69d73db7ddaa453e9e89531442fad06c : SUCCESS in 7m 05s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/b343ec5b4053417697ec081cc1883978 : SUCCESS in 7m 54s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/77068ac1758a49ed8ddc296977c5e0f1 : SUCCESS in 6m 55s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/cc49b8a8b0cc45bda1df8d803349ab76 : SUCCESS in 8m 07s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/94b59f18778c46d2b5859593c06901ba : SUCCESS in 1h 02m 20s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/f84c37a99f7f418582808a43f82c92b3 : SUCCESS in 55m 27s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/1a12e2063ac84f3489f4f941ef4cf4f7 : SUCCESS in 58m 53s","accounts_in_message":[],"_revision_number":8},{"id":"8e596fc65c28c19d6d326438a873440d5b26aba0","author":{"_account_id":30695,"name":"Pedro Henrique Pereira Martins","email":"phpm13@gmail.com","username":"pedrohpmartins"},"date":"2020-01-30 15:48:31.000000000","message":"Patch Set 8: Code-Review+1","accounts_in_message":[],"_revision_number":8},{"id":"6ce3ed0690552f3ff5a26e8625f80b6db9521b52","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2020-02-17 12:51:53.000000000","message":"Patch Set 8:\n\nHello guys, \nThis is a quite interesting feature that we added to Ceilometer. We put a quite amount of energy on improving the code design. Could somebody helps us review and get this through? So, we can move on with more exciting features that we continue developing.","accounts_in_message":[],"_revision_number":8},{"id":"9e844abace6da15839d919aef347b6be4e9b844e","author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"date":"2020-02-18 02:46:29.000000000","message":"Patch Set 8:\n\n\u003e Hello guys,\n \u003e This is a quite interesting feature that we added to Ceilometer. We\n \u003e put a quite amount of energy on improving the code design. Could\n \u003e somebody helps us review and get this through? So, we can move on\n \u003e with more exciting features that we continue developing.\n\nWill do a review asap once I finish the internal stuff at the moment. Apologize for the delay.","accounts_in_message":[],"_revision_number":8},{"id":"9d2086687fc198e2108243c7ef1c82ae8e9e981b","author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"date":"2020-02-20 01:27:16.000000000","message":"Patch Set 8: Code-Review+1\n\n(1 comment)\n\nI understand aiming of this patch is to make the pollster definitions less redundant, I didn\u0027t test but the idea makes sense to me. Just a question need to be answered. Thanks for the code.","accounts_in_message":[],"_revision_number":8},{"id":"795c9261fe9935e4a0c9ad922b1e3664b986b08d","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2020-02-20 13:01:49.000000000","message":"Uploaded patch set 9.","accounts_in_message":[],"_revision_number":9},{"id":"cf07bc36bcfec37795aa08783beeadc424a95973","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2020-02-20 13:03:09.000000000","message":"Patch Set 9:\n\n(1 comment)\n\nThanks for the review Lingxian Kong!\n\nI have replied to your question in the documentation. If it is still unclear, I can try to improve it a bit further.","accounts_in_message":[],"_revision_number":9},{"id":"d911b1c9a14e5c0a7a15dc6248405a0cdce8f4a2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-20 14:04:35.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/2c9027c7342e49b6b4af9653b520f1a3 : SUCCESS in 7m 00s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9f001f7579d6480aab0345a3ba7fa04c : SUCCESS in 5m 29s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/7cbc41ec88e64515bf0b13f63f086d5d : SUCCESS in 7m 03s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/aeb933aafee64424b908f43e54b03f30 : SUCCESS in 7m 36s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/2db02ba121214ca2ae4dac1b87e8bf8c : SUCCESS in 7m 50s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5c80eec1668649f38fcd123671e0368f : SUCCESS in 10m 34s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/1cf31785a22a44ef90ca963b91a80ae3 : SUCCESS in 8m 26s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/0ebb43868ef6486ea38b7dd8f87a157b : SUCCESS in 1h 00m 53s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/4423bfc597154dff9c6e95758a59218f : SUCCESS in 47m 45s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/432244ac39334fc18dac7682bec5fc7d : SUCCESS in 51m 05s","accounts_in_message":[],"_revision_number":9},{"id":"bcd32d879735af3b0a01095c44e9def1fe8ae84b","author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"date":"2020-02-20 22:11:28.000000000","message":"Patch Set 8:\n\n(1 comment)","accounts_in_message":[],"_revision_number":8},{"id":"35b05d8ec72089e27f8d8df5d432833ea92da047","author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"date":"2020-02-20 22:11:52.000000000","message":"Patch Set 9: Code-Review+2","accounts_in_message":[],"_revision_number":9},{"id":"b216aff5143ff6ccf6d2ad4375eef7c049ccab45","author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"date":"2020-02-21 06:03:19.000000000","message":"Patch Set 9: Code-Review+2 Workflow+1\n\nthanks","accounts_in_message":[],"_revision_number":9},{"id":"2e3aa0ae55bd86f20cd67346e8140f8ee8af92b7","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-21 06:03:32.000000000","message":"Patch Set 9: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":9},{"id":"7a8d99d051ec6a1e9c5b771b721fca3a2c4d597b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-21 07:20:09.000000000","message":"Patch Set 9: Verified-2\n\nBuild failed (gate pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b6bbda2c641f4f9f805300271f37631e : SUCCESS in 6m 51s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/ab5ed40b30de442e8543eccfc5fb5e52 : SUCCESS in 8m 04s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/d76659ba399b43d190c555f33657c7f4 : SUCCESS in 10m 23s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6a24d62a9a884a15a3cfd74442e6c831 : SUCCESS in 11m 20s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/90b15937d08e46a89c7fcdfc8003159c : SUCCESS in 10m 13s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/9ae4962d170f42fda58e135dd348371b : SUCCESS in 1h 09m 24s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/f439e8ad798147fd91780fe109a0a6b9 : FAILURE in 58m 41s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/cbcca8cc577b49c9ab16bf913a2a47df : SUCCESS in 52m 20s","accounts_in_message":[],"_revision_number":9},{"id":"673d86ee80e588e65548a0bf57e332ce040ae0b7","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2020-02-21 12:14:56.000000000","message":"Patch Set 9:\n\nrecheck","accounts_in_message":[],"_revision_number":9},{"id":"6b837eef9aa892dbe4f64ee842c95af5bf6823ed","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-21 13:29:59.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c35f02760dad4f69ad7e298e38ef8479 : SUCCESS in 7m 46s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ebd1008b079d414baa1a4e39a7abc5a0 : SUCCESS in 5m 17s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/7746a1fcdca842939ed615a9d08575aa : SUCCESS in 7m 37s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/415087bbf68c4e4eba5a2d8f798e10c4 : SUCCESS in 7m 05s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/0a4d66accaf943e6bdf98de5a7751f00 : SUCCESS in 7m 42s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4083a0a22a9a422391a7e8f79610cc7a : SUCCESS in 8m 08s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/17d5b3164f2840eea94d24ee121e60a1 : SUCCESS in 8m 30s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/19007288e2704227a188e36b8f08e6ae : SUCCESS in 1h 09m 02s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/211fa9d8962f4c1581ec776bb2778f7e : SUCCESS in 49m 02s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/0143b40ee85d4e5496dc039e71849f02 : SUCCESS in 47m 57s","accounts_in_message":[],"_revision_number":9},{"id":"7820566f9a806d9a73ca63f49737ebae96c2242e","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-21 13:30:11.000000000","message":"Patch Set 9: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":9},{"id":"386ec676e0c370c9131685f643445cabe8eb1c67","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-21 14:33:52.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":9},{"id":"f67c3871f465469fd6f4e389ad9b15b8be659bfd","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-21 14:33:52.000000000","message":"Patch Set 9: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/11595cb12ffa4345ada01edae5b9ebce : SUCCESS in 7m 02s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/d0097a252981433ca3da4fadc7720449 : SUCCESS in 10m 04s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/392d7725c4324f6bbe3ed4d7631dd9f1 : SUCCESS in 8m 03s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5367451f65c548c39cd0f270181f5827 : SUCCESS in 10m 38s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/b028ac4962f74ee394f3dbd1f8df86a5 : SUCCESS in 8m 51s\n- grenade-dsvm-ceilometer https://zuul.opendev.org/t/openstack/build/157723018aff4707bc8f4988fe8286d1 : SUCCESS in 1h 02m 02s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/ad63a3e12551491d9c222bf5ab3b10c7 : SUCCESS in 46m 58s\n- telemetry-dsvm-integration-ipv6-only https://zuul.opendev.org/t/openstack/build/02981983cb104759afae0f6831e69fad : SUCCESS in 45m 05s","accounts_in_message":[],"_revision_number":9},{"id":"5fb7e7eb6f85d9acdbb552817d51f35884702aec","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-21 14:35:28.000000000","message":"Patch Set 9:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2fadaf7b360a4584b1eb7087028b20ec : SUCCESS in 1m 14s","accounts_in_message":[],"_revision_number":9}],"current_revision_number":9,"current_revision":"4e3c12968d53a28fb9fa016c1eb2377d796eed76","revisions":{"26e731dc12868194deaca2a2d772ca0ea655b731":{"kind":"REWORK","_number":1,"created":"2019-11-21 17:08:32.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/1"}}},"commit":{"parents":[{"commit":"a7cb44972072454e6511b79d9adf2405ec0fc80c","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/a7cb44972072454e6511b79d9adf2405ec0fc80c"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2019-11-21 17:05:17.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/26e731dc12868194deaca2a2d772ca0ea655b731"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/26e731dc12868194deaca2a2d772ca0ea655b731"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"a7cb44972072454e6511b79d9adf2405ec0fc80c","is_merged_in_target_branch":false,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":8,"change_status":"MERGED"}],"branch":"refs/heads/master"},"8ab94f1de0cba7854337939315897d4ace5b3d34":{"kind":"REWORK","_number":2,"created":"2019-11-21 18:27:07.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/2"}}},"commit":{"parents":[{"commit":"a7cb44972072454e6511b79d9adf2405ec0fc80c","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/a7cb44972072454e6511b79d9adf2405ec0fc80c"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2019-11-21 18:26:48.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/8ab94f1de0cba7854337939315897d4ace5b3d34"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/8ab94f1de0cba7854337939315897d4ace5b3d34"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"a7cb44972072454e6511b79d9adf2405ec0fc80c","is_merged_in_target_branch":false,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":8,"change_status":"MERGED"}],"branch":"refs/heads/master"},"1723b0c988359f8b245e8635c1b850a4b756144e":{"kind":"REWORK","_number":3,"created":"2019-11-22 13:42:44.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/3"}}},"commit":{"parents":[{"commit":"a7cb44972072454e6511b79d9adf2405ec0fc80c","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/a7cb44972072454e6511b79d9adf2405ec0fc80c"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2019-11-22 13:42:18.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/1723b0c988359f8b245e8635c1b850a4b756144e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/1723b0c988359f8b245e8635c1b850a4b756144e"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"a7cb44972072454e6511b79d9adf2405ec0fc80c","is_merged_in_target_branch":false,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":8,"change_status":"MERGED"}],"branch":"refs/heads/master"},"514f0cafb539d3c2d7c0f25fd48a47c8c1a7cced":{"kind":"REWORK","_number":4,"created":"2019-11-26 12:24:20.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/4"}}},"commit":{"parents":[{"commit":"95935fd266ebdd262a46a115acb8a6a580d933ae","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/95935fd266ebdd262a46a115acb8a6a580d933ae"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2019-11-26 12:21:38.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/514f0cafb539d3c2d7c0f25fd48a47c8c1a7cced"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/514f0cafb539d3c2d7c0f25fd48a47c8c1a7cced"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"95935fd266ebdd262a46a115acb8a6a580d933ae","is_merged_in_target_branch":false,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":9,"change_status":"MERGED"}],"branch":"refs/heads/master"},"21bd61c53fb1d444791bd5a4f675c0cd7ccef5cc":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2019-11-26 13:15:56.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/5"}}},"commit":{"parents":[{"commit":"b71ccade21d6b606dbddc027306a69bccaa6ab1b","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/b71ccade21d6b606dbddc027306a69bccaa6ab1b"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2019-11-26 13:15:26.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/21bd61c53fb1d444791bd5a4f675c0cd7ccef5cc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/21bd61c53fb1d444791bd5a4f675c0cd7ccef5cc"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"b71ccade21d6b606dbddc027306a69bccaa6ab1b","is_merged_in_target_branch":false,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":10,"change_status":"MERGED"}],"branch":"refs/heads/master"},"dd1ef23fd2f85f5880d5b8d8bbd60694b8ae8bbb":{"kind":"REWORK","_number":6,"created":"2019-11-26 14:13:45.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/6"}}},"commit":{"parents":[{"commit":"b422e9dd4b5ae2254416e59fb849e67f6447d23b","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/b422e9dd4b5ae2254416e59fb849e67f6447d23b"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2019-11-26 14:13:24.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/dd1ef23fd2f85f5880d5b8d8bbd60694b8ae8bbb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/dd1ef23fd2f85f5880d5b8d8bbd60694b8ae8bbb"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"b422e9dd4b5ae2254416e59fb849e67f6447d23b","is_merged_in_target_branch":true,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":11,"change_status":"MERGED"}],"branch":"refs/heads/master"},"19b2db0ece114f59a371b072713652ed6ad2d401":{"kind":"REWORK","_number":7,"created":"2020-01-21 13:37:51.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/7"}}},"commit":{"parents":[{"commit":"b422e9dd4b5ae2254416e59fb849e67f6447d23b","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/b422e9dd4b5ae2254416e59fb849e67f6447d23b"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2020-01-21 13:34:05.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/19b2db0ece114f59a371b072713652ed6ad2d401"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/19b2db0ece114f59a371b072713652ed6ad2d401"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"b422e9dd4b5ae2254416e59fb849e67f6447d23b","is_merged_in_target_branch":true,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":11,"change_status":"MERGED"}],"branch":"refs/heads/master"},"9dacc6bc09aa3cc629ff3d787e0b7362fb324b7d":{"kind":"REWORK","_number":8,"created":"2020-01-21 16:38:15.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/8"}}},"commit":{"parents":[{"commit":"b422e9dd4b5ae2254416e59fb849e67f6447d23b","subject":"Dynamic pollsters: enable operation on attributes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/b422e9dd4b5ae2254416e59fb849e67f6447d23b"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2020-01-21 16:38:00.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/9dacc6bc09aa3cc629ff3d787e0b7362fb324b7d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/9dacc6bc09aa3cc629ff3d787e0b7362fb324b7d"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"b422e9dd4b5ae2254416e59fb849e67f6447d23b","is_merged_in_target_branch":true,"change_id":"I9ee209410491b3f04259e1a5c62ac20461070ae1","change_number":694519,"patch_set_number":11,"change_status":"MERGED"}],"branch":"refs/heads/master"},"4e3c12968d53a28fb9fa016c1eb2377d796eed76":{"kind":"REWORK","_number":9,"created":"2020-02-20 13:01:49.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/29/695529/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/29/695529/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/29/695529/9"}}},"commit":{"parents":[{"commit":"d0e8f95fe4e0a46ad5864cc690309facdc368652","subject":"Merge \"Added support for python3\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/d0e8f95fe4e0a46ad5864cc690309facdc368652"}]}],"author":{"name":"rwe","email":"rafaelweingartner@gmail.com","date":"2019-11-19 14:41:26.000000000","tz":60},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2020-02-20 12:58:38.000000000","tz":-180},"subject":"Multi metric dynamic pollsters (handling attribute values with list of objects)","message":"Multi metric dynamic pollsters (handling attribute values with list of objects)\n\nThe initial idea for this feature comes from the `categories` fields that we\ncan find in the `summary` object of the RadosGW API. Each user has a\n`categories` attribute in the response; in the `categories` list, we can find\nthe object that presents ain a granular fashion the consumption of different\nRadosGW API operations such as GET, PUT, POST, and may others.\n\nIn that context, and having in mind that we have APIs with similar data\nstructures, we developed an extension for the dynamic pollster that enables\nmulti-metric processing for a single pollster. It works as follows.\n\nThe pollster name will contain a placeholder for the variable that\nidentifies the \"submetric\". E.g. `dynamic.radosgw.api.request.{category}`.\nThe placeholder `{category}` indicates the object attribute that is in the list\nof objects that we use to load the sub metric name. Then, we must use a special\nnotation in the `value_attribute` configuration to indicate that we are dealing\nwith a list of objects. This is achieved via `[]` (brackets); for instance, in\nthe `dynamic.radosgw.api.request.{category}`, we can use `[categories].ops`\nas the `value_attribute`. This indicates that the value we retrieve is a list\nof objects, and when the dynamic pollster processes it, we want it (the\npollster) to load the `ops` value for the sub metrics being generated\n\nDepends-On: https://review.opendev.org/#/c/694519/\nChange-Id: I6ed4632f209ac51a07687476ca316212659d72bb\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/4e3c12968d53a28fb9fa016c1eb2377d796eed76"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/4e3c12968d53a28fb9fa016c1eb2377d796eed76"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"d0e8f95fe4e0a46ad5864cc690309facdc368652","is_merged_in_target_branch":true}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
