)]}'
{"doc/source/admin/drivers/elasticsearch.rst":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"7327543e4c7c1b22fc406d860978343d27568027","unresolved":false,"context_lines":[{"line_number":1,"context_line":":title: Elasticsearch Driver"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Elasticsearch"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5fc1f717_594b4d86","line":1,"updated":"2019-03-22 00:06:28.000000000","message":"you need to include this file in doc/source/admin/connections.rst","commit_id":"e02f3cb41f665202804ebb0c8752fbaad76f2103"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"deadcdd202d66742234812b5151d86bec82372a1","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"The Elasticsearch driver supports reporters only. Purpose of the driver is"},{"line_number":7,"context_line":"to export build and buildset results to an Elasticsearch index. If the"},{"line_number":8,"context_line":"index is not created then the driver will set it with an appropriate mapping."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Optionnaly the driver can also add job\u0027s variables to build results."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5fc1f717_95089191","line":8,"range":{"start_line":8,"start_character":42,"end_line":8,"end_character":45},"updated":"2019-03-22 11:22:30.000000000","message":"create","commit_id":"f8e3fc29d3a2c346d716c88735eb76d29111c5ff"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"deadcdd202d66742234812b5151d86bec82372a1","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"The Elasticsearch driver supports reporters only. Purpose of the driver is"},{"line_number":7,"context_line":"to export build and buildset results to an Elasticsearch index. If the"},{"line_number":8,"context_line":"index is not created then the driver will set it with an appropriate mapping."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Optionnaly the driver can also add job\u0027s variables to build results."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5fc1f717_7505e579","line":8,"range":{"start_line":8,"start_character":6,"end_line":8,"end_character":21},"updated":"2019-03-22 11:22:30.000000000","message":"does not exist in Elastic","commit_id":"f8e3fc29d3a2c346d716c88735eb76d29111c5ff"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"deadcdd202d66742234812b5151d86bec82372a1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"to export build and buildset results to an Elasticsearch index. If the"},{"line_number":8,"context_line":"index is not created then the driver will set it with an appropriate mapping."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Optionnaly the driver can also add job\u0027s variables to build results."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Connection Configuration"},{"line_number":13,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5fc1f717_75dc0518","line":10,"range":{"start_line":10,"start_character":6,"end_line":10,"end_character":7},"updated":"2019-03-22 11:22:30.000000000","message":"remove","commit_id":"f8e3fc29d3a2c346d716c88735eb76d29111c5ff"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"deadcdd202d66742234812b5151d86bec82372a1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"      :required:"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"      Database connection information in the form of a URI understood"},{"line_number":30,"context_line":"      by the Elasticsearch Python client."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   .. attr:: index"},{"line_number":33,"context_line":"      :default: \u0027\u0027"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5fc1f717_752ac5e7","line":30,"updated":"2019-03-22 11:22:30.000000000","message":"maybe an example of a URI would be good? ... I don\u0027t know what usually a good practice in such docs","commit_id":"f8e3fc29d3a2c346d716c88735eb76d29111c5ff"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"deadcdd202d66742234812b5151d86bec82372a1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Reporter Configuration"},{"line_number":39,"context_line":"----------------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"This reporter is used to store results in a Elasticsearch index."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The Elasticsearch reporter does nothing on :attr:`pipeline.start` or"},{"line_number":44,"context_line":":attr:`pipeline.merge-failure`; it only acts on"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5fc1f717_d51b79c7","line":41,"range":{"start_line":41,"start_character":31,"end_line":41,"end_character":38},"updated":"2019-03-22 11:22:30.000000000","message":"build results","commit_id":"f8e3fc29d3a2c346d716c88735eb76d29111c5ff"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"deadcdd202d66742234812b5151d86bec82372a1","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"   The following attributes are supported:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"   .. attr:: index_job_vars"},{"line_number":52,"context_line":"      :default: []"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"      If set then job\u0027s variables will be indexed along with the build object"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5fc1f717_f5547556","line":51,"range":{"start_line":51,"start_character":13,"end_line":51,"end_character":27},"updated":"2019-03-22 11:22:30.000000000","message":"maybe better as \u0027job_vars_regexp\u0027 ?","commit_id":"f8e3fc29d3a2c346d716c88735eb76d29111c5ff"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"e84269255c5f83d15f0eec4c69d7d4fff252c7e4","unresolved":false,"context_lines":[{"line_number":3,"context_line":"Elasticsearch"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"The Elasticsearch driver supports reporters only. Purpose of the driver is"},{"line_number":7,"context_line":"to export build and buildset results to an Elasticsearch index. If the"},{"line_number":8,"context_line":"index does not exist in Elastic then the driver will create it with an"},{"line_number":9,"context_line":"appropriate mapping."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_72f94ec6","line":6,"range":{"start_line":6,"start_character":50,"end_line":6,"end_character":57},"updated":"2019-03-25 03:23:51.000000000","message":"The purpose","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"721e19560031cccdc6fb84a333061e18bbb7ada1","unresolved":false,"context_lines":[{"line_number":3,"context_line":"Elasticsearch"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"The Elasticsearch driver supports reporters only. Purpose of the driver is"},{"line_number":7,"context_line":"to export build and buildset results to an Elasticsearch index. If the"},{"line_number":8,"context_line":"index does not exist in Elastic then the driver will create it with an"},{"line_number":9,"context_line":"appropriate mapping."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_b4177dee","line":6,"range":{"start_line":6,"start_character":50,"end_line":6,"end_character":57},"in_reply_to":"5fc1f717_72f94ec6","updated":"2019-03-26 08:16:58.000000000","message":"Done","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"e84269255c5f83d15f0eec4c69d7d4fff252c7e4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Reporter Configuration"},{"line_number":42,"context_line":"----------------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This reporter is used to store build results in a Elasticsearch index."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The Elasticsearch reporter does nothing on :attr:`pipeline.start` or"},{"line_number":47,"context_line":":attr:`pipeline.merge-failure`; it only acts on"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_52fc52b4","line":44,"range":{"start_line":44,"start_character":48,"end_line":44,"end_character":49},"updated":"2019-03-25 03:23:51.000000000","message":"an","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"721e19560031cccdc6fb84a333061e18bbb7ada1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Reporter Configuration"},{"line_number":42,"context_line":"----------------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This reporter is used to store build results in a Elasticsearch index."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The Elasticsearch reporter does nothing on :attr:`pipeline.start` or"},{"line_number":47,"context_line":":attr:`pipeline.merge-failure`; it only acts on"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_d41489eb","line":44,"range":{"start_line":44,"start_character":48,"end_line":44,"end_character":49},"in_reply_to":"5fc1f717_52fc52b4","updated":"2019-03-26 08:16:58.000000000","message":"Done","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"e84269255c5f83d15f0eec4c69d7d4fff252c7e4","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"   The following attributes are supported:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"   .. attr:: job_vars_re"},{"line_number":55,"context_line":"      :default: []"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      If set then job\u0027s variables will be indexed along with the build object"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_32c6666a","line":54,"range":{"start_line":54,"start_character":13,"end_line":54,"end_character":24},"updated":"2019-03-25 03:23:51.000000000","message":"For consistency with the others driver schema, the attribute name should use \u0027-\u0027 instead of \u0027_\u0027. Also I think we could drop the \u0027re\u0027 suffix and document that this accepts a list of regexes.","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"721e19560031cccdc6fb84a333061e18bbb7ada1","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"   The following attributes are supported:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"   .. attr:: job_vars_re"},{"line_number":55,"context_line":"      :default: []"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      If set then job\u0027s variables will be indexed along with the build object"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_74d35539","line":54,"range":{"start_line":54,"start_character":13,"end_line":54,"end_character":24},"in_reply_to":"5fc1f717_32c6666a","updated":"2019-03-26 08:16:58.000000000","message":"Done","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"8d9152366eaabfb934a629271a6ae4cf1ef33160","unresolved":false,"context_lines":[{"line_number":55,"context_line":"      :default: []"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      If set then job\u0027s variables will be indexed along with the build object"},{"line_number":58,"context_line":"      but only variables matching one of the provided regexps."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_213abbe6","line":58,"updated":"2019-03-22 14:46:21.000000000","message":"Why not store them all?  If it\u0027s a matter of wanting a limited set of indexes, is there a way to usefully store all the variables in one indexed field?","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"cb749fd96d080052d0d3bd67c0694abc09d51368","unresolved":false,"context_lines":[{"line_number":55,"context_line":"      :default: []"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      If set then job\u0027s variables will be indexed along with the build object"},{"line_number":58,"context_line":"      but only variables matching one of the provided regexps."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_8971550f","line":58,"in_reply_to":"5fc1f717_213abbe6","updated":"2019-03-22 15:15:23.000000000","message":"Yes all variables could be added to the indexed build doc but the usecase that motivate me to write the reporter is not interested by all variables (their base job has around 50 vars). Also an Elasticsearch index is limited (by default) to 1000 fields so I feel safer to allow a selection of fields. We can also set the default to [.*].\n\nRegarding to store all of them in one field by flattening them, that a good point and that possible (using the text type to let Elasticsearch tokenize the field) but after I\u0027m not sure if that will be handy at query time. Or we can do both ? Feedback from Kibana/Elasticsearch experts will be welcome :)","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"43c3373805c46b71ebec06e942fac702b0b384c1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"      :default: []"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      If set then job\u0027s variables will be indexed along with the build object"},{"line_number":58,"context_line":"      but only variables matching one of the provided regexps."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5fc1f717_4c4ffb91","line":58,"in_reply_to":"5fc1f717_8971550f","updated":"2019-03-22 15:56:19.000000000","message":"my 2 cents, as will all flattening please be careful, the ir_* variables that we\u0027d like to index under zuul index sometimes are... while still being a string... quite complex by what characters they use, example:\n\n    ir_tripleo_overcloud_deploy_override_options: |-\n        --config-heat ComputeExtraConfig.nova::compute::consecutive_build_service_disable_threshold\u003d0 \\\n        --config-heat OpenDaylightUsername\u003dodladmin \\\n        --config-heat OpenDaylightPassword\u003dredhat \\\n        --extra-deploy-params\u003d\u0027-e /home/stack/virt/log_levels/netvirt_genius_debug.yaml\u0027","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"c53943e030a3e873bf0c62ec0f192c8d11a3664f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Optionaly the driver can also add job\u0027s variables to build results. In case"},{"line_number":12,"context_line":"the job\u0027s variables are configured to be indexed and a job uses zuul_return to"},{"line_number":13,"context_line":"return a dict such as ``{vars_overwrite: {}}`` to Zuul then the vars_overwrite"},{"line_number":14,"context_line":"content overwrites original jobs\u0027s variables."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Connection Configuration"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5fc1f717_6249fc8c","line":14,"updated":"2019-03-29 18:14:11.000000000","message":"The vars_overwrite doesn\u0027t seem consistent with typical Zuul behavior.  I think if a reporter wants to record either the variables or the return data for a build, that\u0027s okay.  But I don\u0027t think we should have a specific return value that is used to cause the reporter to report incorrect information about the build.  Just have it record returned variables as well (but, report them separately so they don\u0027t overlap).","commit_id":"60041a8601083227aa565eacd42024a4f4323ae4"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"efa2d5a268981c0534f98a1b814ab48e3798fee1","unresolved":false,"context_lines":[{"line_number":39,"context_line":"      Example: elasticsearch1.domain:9200,elasticsearch2.domain:9200"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   .. attr:: use_ssl"},{"line_number":42,"context_line":"      :default: false"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"      Turn on SSL."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"dfbec78f_0cd54a1c","line":42,"range":{"start_line":42,"start_character":16,"end_line":42,"end_character":21},"updated":"2019-05-11 17:10:51.000000000","message":"I think we should default to safe defaults, so ssl and verification enabled.","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"a5e03c98210ad4834895ad6ef245aca442bacf53","unresolved":false,"context_lines":[{"line_number":39,"context_line":"      Example: elasticsearch1.domain:9200,elasticsearch2.domain:9200"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   .. attr:: use_ssl"},{"line_number":42,"context_line":"      :default: false"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"      Turn on SSL."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"dfbec78f_3ee4e1df","line":42,"range":{"start_line":42,"start_character":16,"end_line":42,"end_character":21},"in_reply_to":"dfbec78f_0cd54a1c","updated":"2019-05-13 17:25:45.000000000","message":"Done","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"efa2d5a268981c0534f98a1b814ab48e3798fee1","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"      The Elasticsearch index to be used to index the data. To prevent"},{"line_number":89,"context_line":"      any name collisions between Zuul tenants, the tenant name is used as index"},{"line_number":90,"context_line":"      name prefix. The real index name will be \u003ctenant-name\u003e.\u003cindex-name\u003e."},{"line_number":91,"context_line":"      The index will be created if it does not exist."}],"source_content_type":"text/x-rst","patch_set":22,"id":"dfbec78f_ecdf9637","line":90,"range":{"start_line":90,"start_character":47,"end_line":90,"end_character":73},"updated":"2019-05-11 17:10:51.000000000","message":"I think it would be cleaner to postfix the tenant name instead of prefixing. This way you have all zuul indexes together when looking at a sorted index list in elasticsearch.","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"a5e03c98210ad4834895ad6ef245aca442bacf53","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"      The Elasticsearch index to be used to index the data. To prevent"},{"line_number":89,"context_line":"      any name collisions between Zuul tenants, the tenant name is used as index"},{"line_number":90,"context_line":"      name prefix. The real index name will be \u003ctenant-name\u003e.\u003cindex-name\u003e."},{"line_number":91,"context_line":"      The index will be created if it does not exist."}],"source_content_type":"text/x-rst","patch_set":22,"id":"dfbec78f_5ee995b4","line":90,"range":{"start_line":90,"start_character":47,"end_line":90,"end_character":73},"in_reply_to":"dfbec78f_ecdf9637","updated":"2019-05-13 17:25:45.000000000","message":"Done","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"703db239f291d4f772ec24a7654d858c70308842","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":".. attr:: pipeline.\u003creporter\u003e.\u003celasticsearch source\u003e"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"   The reporter support the following attributes:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"   .. attr:: index"},{"line_number":85,"context_line":"      :default: zuul"}],"source_content_type":"text/x-rst","patch_set":33,"id":"7faddb67_ab78dbc0","line":82,"updated":"2019-08-27 19:57:19.000000000","message":"nit: supports","commit_id":"da23b7bec0ad8c0458424dab582880e8d7ac434f"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"f87c0c990eae71d8ca2ddec5b175de2598828ab5","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":".. attr:: pipeline.\u003creporter\u003e.\u003celasticsearch source\u003e"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"   The reporter support the following attributes:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"   .. attr:: index"},{"line_number":85,"context_line":"      :default: zuul"}],"source_content_type":"text/x-rst","patch_set":33,"id":"7faddb67_dab2a3e5","line":82,"in_reply_to":"7faddb67_ab78dbc0","updated":"2019-08-29 12:41:55.000000000","message":"Done","commit_id":"da23b7bec0ad8c0458424dab582880e8d7ac434f"}],"doc/source/reference/drivers/elasticsearch.rst":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"12f412e167a60342bf1d28c2487d6c03375d205c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"uri\u003dhttps://managesf.sftests.com:9200"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Additional parameters to authenticate to the Elasticsearch server you"},{"line_number":91,"context_line":"can find in `client`_ class."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":42,"id":"9f560f44_e2c3f756","line":90,"updated":"2020-09-23 10:54:40.000000000","message":"docs: Unknown target name: \"client\".","commit_id":"85da1d134e4c6611760e473f99eccf97ae609ff1"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"5d24d78824647a5b1558cec9f9dff424c26b2e0a","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. code-block:: text"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"[connection elasticsearch]"},{"line_number":86,"context_line":"driver\u003delasticsearch"},{"line_number":87,"context_line":"uri\u003dhttps://managesf.sftests.com:9200"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Additional parameters to authenticate to the Elasticsearch server you"}],"source_content_type":"text/x-rst","patch_set":43,"id":"9f560f44_b1f667d7","line":87,"range":{"start_line":85,"start_character":0,"end_line":87,"end_character":37},"updated":"2020-09-25 14:09:35.000000000","message":"nit: this block needs to be indented to be a valid rst block","commit_id":"1fcf20b5fcc02fba2a4f2cb804fcf827d7496891"},{"author":{"_account_id":20676,"name":"daniel.pawlik","display_name":"Daniel Pawlik","email":"dpawlik@redhat.com","username":"daniel.pawlik"},"change_message_id":"2e3c51527dc9dabadabe491f6dbf58abd363bb3e","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. code-block:: text"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"[connection elasticsearch]"},{"line_number":86,"context_line":"driver\u003delasticsearch"},{"line_number":87,"context_line":"uri\u003dhttps://managesf.sftests.com:9200"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Additional parameters to authenticate to the Elasticsearch server you"}],"source_content_type":"text/x-rst","patch_set":43,"id":"9f560f44_d6898c25","line":87,"range":{"start_line":85,"start_character":0,"end_line":87,"end_character":37},"in_reply_to":"9f560f44_339c5a0d","updated":"2020-10-06 12:54:07.000000000","message":"Done: https://review.opendev.org/756284","commit_id":"1fcf20b5fcc02fba2a4f2cb804fcf827d7496891"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"abe554f2bc607c78aae53d5b18aad4ad9d2b99c7","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. code-block:: text"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"[connection elasticsearch]"},{"line_number":86,"context_line":"driver\u003delasticsearch"},{"line_number":87,"context_line":"uri\u003dhttps://managesf.sftests.com:9200"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Additional parameters to authenticate to the Elasticsearch server you"}],"source_content_type":"text/x-rst","patch_set":43,"id":"9f560f44_339c5a0d","line":87,"range":{"start_line":85,"start_character":0,"end_line":87,"end_character":37},"in_reply_to":"9f560f44_b1f667d7","updated":"2020-10-06 12:25:52.000000000","message":"Could somebody do a followup with the fix, please?","commit_id":"1fcf20b5fcc02fba2a4f2cb804fcf827d7496891"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"872fe1fcf0c243c7e96948bad0fffa8f31a948b4","unresolved":false,"context_lines":[{"line_number":112,"context_line":"      The Elasticsearch index to be used to index the data. To prevent"},{"line_number":113,"context_line":"      any name collisions between Zuul tenants, the tenant name is used as index"},{"line_number":114,"context_line":"      name prefix. The real index name will be \u003cindex-name\u003e.\u003ctenant-name\u003e."},{"line_number":115,"context_line":"      The index will be created if it does not exist."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"   .. attr:: index-vars"},{"line_number":118,"context_line":"      :default: false"}],"source_content_type":"text/x-rst","patch_set":45,"id":"1f621f24_8abefb62","line":115,"updated":"2020-11-02 18:00:29.000000000","message":"I think this was mentioned long ago when this work first started, but it would probably be a good idea to have some form of rotation on the indexes too. In order to clear out old data you essentially have to delete indexes. Also corrupted indexes are not easily recovered.\n\nI don\u0027t think that needs to go in the initial implementation, but it would be good to think about adding it.","commit_id":"6821c39cec2f0a3516976ca8d09028db162729e1"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"872fe1fcf0c243c7e96948bad0fffa8f31a948b4","unresolved":false,"context_lines":[{"line_number":118,"context_line":"      :default: false"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"      Boolean value that determines if the reporter should add job\u0027s vars"},{"line_number":121,"context_line":"      to the exported build doc."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"   .. attr:: index-returned-vars"},{"line_number":124,"context_line":"      :default: false"}],"source_content_type":"text/x-rst","patch_set":45,"id":"1f621f24_8a31db0e","line":121,"updated":"2020-11-02 18:00:29.000000000","message":"Does this include secrets? We should probably warn users here if so.","commit_id":"6821c39cec2f0a3516976ca8d09028db162729e1"}],"requirements.txt":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"872fe1fcf0c243c7e96948bad0fffa8f31a948b4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"jsonpath-rw"},{"line_number":36,"context_line":"urllib3!\u003d1.25.4,!\u003d1.25.5  # https://github.com/urllib3/urllib3/pull/1684"},{"line_number":37,"context_line":"cheroot!\u003d8.1.*,!\u003d8.2.*,!\u003d8.3.0 # https://github.com/cherrypy/cheroot/issues/263"},{"line_number":38,"context_line":"elasticsearch"}],"source_content_type":"text/plain","patch_set":45,"id":"1f621f24_8a4c3b9f","line":38,"updated":"2020-11-02 18:00:29.000000000","message":"This library will install an elasticsearch lib that is only compatible with elasticsearch 7 clusters according to the docs. We might want to add to our docs that you can replace the ES library with the appropriate version for your cluster? Can be added in a follow on.","commit_id":"6821c39cec2f0a3516976ca8d09028db162729e1"}],"zuul/driver/elasticsearch/__init__.py":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"7327543e4c7c1b22fc406d860978343d27568027","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                if not isinstance(reporter, elreporter.ElasticsearchReporter):"},{"line_number":35,"context_line":"                    continue"},{"line_number":36,"context_line":"                self.tenant_connections[tenant.name] \u003d reporter.connection"},{"line_number":37,"context_line":"                return"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def registerScheduler(self, scheduler):"},{"line_number":40,"context_line":"        self.sched \u003d scheduler"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_3948c185","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":22},"updated":"2019-03-22 00:06:28.000000000","message":"wouldn\u0027t that return prevent the report to be added to multiple actions?","commit_id":"e02f3cb41f665202804ebb0c8752fbaad76f2103"}],"zuul/driver/elasticsearch/connection.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"efa2d5a268981c0534f98a1b814ab48e3798fee1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.uri \u003d self.connection_config.get(\u0027uri\u0027).split(\u0027,\u0027)"},{"line_number":71,"context_line":"        self.cnx_opts \u003d {}"},{"line_number":72,"context_line":"        use_ssl \u003d self.connection_config.get(\u0027use_ssl\u0027, False)"},{"line_number":73,"context_line":"        if use_ssl:"},{"line_number":74,"context_line":"            if use_ssl.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":75,"context_line":"                use_ssl \u003d True"},{"line_number":76,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfbec78f_0c8c6a34","line":73,"range":{"start_line":73,"start_character":11,"end_line":73,"end_character":18},"updated":"2019-05-11 17:10:51.000000000","message":"This looks unused.","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"a5e03c98210ad4834895ad6ef245aca442bacf53","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.uri \u003d self.connection_config.get(\u0027uri\u0027).split(\u0027,\u0027)"},{"line_number":71,"context_line":"        self.cnx_opts \u003d {}"},{"line_number":72,"context_line":"        use_ssl \u003d self.connection_config.get(\u0027use_ssl\u0027, False)"},{"line_number":73,"context_line":"        if use_ssl:"},{"line_number":74,"context_line":"            if use_ssl.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":75,"context_line":"                use_ssl \u003d True"},{"line_number":76,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfbec78f_7e07b983","line":73,"range":{"start_line":73,"start_character":11,"end_line":73,"end_character":18},"in_reply_to":"dfbec78f_0c8c6a34","updated":"2019-05-13 17:25:45.000000000","message":"Done","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"efa2d5a268981c0534f98a1b814ab48e3798fee1","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            else:"},{"line_number":77,"context_line":"                use_ssl \u003d False"},{"line_number":78,"context_line":"        verify_certs \u003d self.connection_config.get(\u0027verify_certs\u0027, False)"},{"line_number":79,"context_line":"        if verify_certs:"},{"line_number":80,"context_line":"            if verify_certs.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":81,"context_line":"                verify_certs \u003d True"},{"line_number":82,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfbec78f_8c961a4c","line":79,"range":{"start_line":79,"start_character":11,"end_line":79,"end_character":23},"updated":"2019-05-11 17:10:51.000000000","message":"This looks unused.","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"a5e03c98210ad4834895ad6ef245aca442bacf53","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            else:"},{"line_number":77,"context_line":"                use_ssl \u003d False"},{"line_number":78,"context_line":"        verify_certs \u003d self.connection_config.get(\u0027verify_certs\u0027, False)"},{"line_number":79,"context_line":"        if verify_certs:"},{"line_number":80,"context_line":"            if verify_certs.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":81,"context_line":"                verify_certs \u003d True"},{"line_number":82,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfbec78f_3efdc16d","line":79,"range":{"start_line":79,"start_character":11,"end_line":79,"end_character":23},"in_reply_to":"dfbec78f_8c961a4c","updated":"2019-05-13 17:25:45.000000000","message":"Done","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"703db239f291d4f772ec24a7654d858c70308842","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \"message\": {\"type\": \"text\"},"},{"line_number":67,"context_line":"        \"tenant\": {\"type\": \"keyword\"},"},{"line_number":68,"context_line":"        # Build type specific attibutes"},{"line_number":69,"context_line":"        \"buildset_uuid\": {\"type\": \"keyword\"},"},{"line_number":70,"context_line":"        \"job_name\": {\"type\": \"keyword\"},"},{"line_number":71,"context_line":"        \"start_time\": {\"type\": \"date\", \"format\": \"epoch_second\"},"},{"line_number":72,"context_line":"        \"end_time\": {\"type\": \"date\", \"format\": \"epoch_second\"},"}],"source_content_type":"text/x-python","patch_set":33,"id":"7faddb67_4b49278c","line":69,"updated":"2019-08-27 19:57:19.000000000","message":"On the mqtt reporter we have:\n\n  buildset:\n    uuid: \u003cuuid\u003e\n    builds: []\n\nIs it possible to do the nesting here in the same way? If possible I think we should try to keep the reporting schemas as close together as possible.","commit_id":"da23b7bec0ad8c0458424dab582880e8d7ac434f"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"f87c0c990eae71d8ca2ddec5b175de2598828ab5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \"message\": {\"type\": \"text\"},"},{"line_number":67,"context_line":"        \"tenant\": {\"type\": \"keyword\"},"},{"line_number":68,"context_line":"        # Build type specific attibutes"},{"line_number":69,"context_line":"        \"buildset_uuid\": {\"type\": \"keyword\"},"},{"line_number":70,"context_line":"        \"job_name\": {\"type\": \"keyword\"},"},{"line_number":71,"context_line":"        \"start_time\": {\"type\": \"date\", \"format\": \"epoch_second\"},"},{"line_number":72,"context_line":"        \"end_time\": {\"type\": \"date\", \"format\": \"epoch_second\"},"}],"source_content_type":"text/x-python","patch_set":33,"id":"7faddb67_9a818ba3","line":69,"in_reply_to":"7faddb67_4b49278c","updated":"2019-08-29 12:41:55.000000000","message":"Yes it is possible but it will bring complexity when querying the index or building analytic dashboard. I\u0027m not a EL expert but I develop some projects based on EL so I\u0027m quite familiar with the query and schema model. So AFAIK having array of objects (like builds here) will not be convenient if the user want, for instance, to retrieve failed build docs. Indeed the user will get the buildsets docs that match but w/o a way detect the build(s) from the builds array that match the query. Here is a clear explanation: https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html#_how_arrays_of_objects_are_flattened\n\nWe can then use the nested objects concept where builds in the array will be real lucene objects but it complexifies the query structure (query and sorting). If a user want to use kibana to query the index it is not going to be convenient as well. See for more info: https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html#nested-fields-array-objects\n\nSo to sum up, I\u0027m not for it as I feel a flat schema is far more handy.\n\nAny thoughts @Clark and @Waldemar ?","commit_id":"da23b7bec0ad8c0458424dab582880e8d7ac434f"},{"author":{"_account_id":20676,"name":"daniel.pawlik","display_name":"Daniel Pawlik","email":"dpawlik@redhat.com","username":"daniel.pawlik"},"change_message_id":"530c99c50eda1d39f00c639f40254a62705d00c4","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.cnx_opts[\u0027client_key\u0027] \u003d self.connection_config.get("},{"line_number":103,"context_line":"                \u0027client_key\u0027, None)"},{"line_number":104,"context_line":"        self.es \u003d Elasticsearch("},{"line_number":105,"context_line":"            self.uri, serializer\u003dEncoder(), **self.cnx_opts)"},{"line_number":106,"context_line":"        self.ic \u003d IndicesClient(self.es)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def setIndex(self, index):"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f560f44_c86389b0","line":105,"updated":"2020-09-22 13:22:57.000000000","message":"I suggest to check elasticsearch connection using info method before returning the object, e.g.:\n\n        try:\n            self.log.debug(\"Elasticsearch info: %s\" % self.es.info())\n        except Exception as e:\n            self.log.warn(\"An error occured on estabilishing \"\n                          \"connection to Elasticsearch: %s\" % e)","commit_id":"c9e3dd753d98ef0aa6faeee64d189900f8ba2939"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"872fe1fcf0c243c7e96948bad0fffa8f31a948b4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            # Always remove SafeLoader left-over"},{"line_number":36,"context_line":"            d.pop(\u0027_source_context\u0027, None)"},{"line_number":37,"context_line":"            d.pop(\u0027_start_mark\u0027, None)"},{"line_number":38,"context_line":"            return d"},{"line_number":39,"context_line":"        elif ("},{"line_number":40,"context_line":"                isinstance(obj, zuul.model.SourceContext) or"},{"line_number":41,"context_line":"                isinstance(obj, zuul.configloader.ZuulMark)):"}],"source_content_type":"text/x-python","patch_set":45,"id":"1f621f24_7502600b","line":38,"updated":"2020-11-02 18:00:29.000000000","message":"Do these need to recursively call JSONSerializer.deafault() on d now that it has been sanitized?","commit_id":"6821c39cec2f0a3516976ca8d09028db162729e1"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"872fe1fcf0c243c7e96948bad0fffa8f31a948b4","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        elif ("},{"line_number":40,"context_line":"                isinstance(obj, zuul.model.SourceContext) or"},{"line_number":41,"context_line":"                isinstance(obj, zuul.configloader.ZuulMark)):"},{"line_number":42,"context_line":"            return {}"},{"line_number":43,"context_line":"        return JSONSerializer.default(self, obj)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"1f621f24_d509b42c","line":42,"updated":"2020-11-02 18:00:29.000000000","message":"See above.","commit_id":"6821c39cec2f0a3516976ca8d09028db162729e1"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"872fe1fcf0c243c7e96948bad0fffa8f31a948b4","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.cnx_opts[\u0027client_key\u0027] \u003d self.connection_config.get("},{"line_number":103,"context_line":"                \u0027client_key\u0027, None)"},{"line_number":104,"context_line":"        self.es \u003d Elasticsearch("},{"line_number":105,"context_line":"            self.uri, serializer\u003dEncoder(), **self.cnx_opts)"},{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            self.log.debug(\"Elasticsearch info: %s\" % self.es.info())"},{"line_number":108,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":45,"id":"1f621f24_f564b0e7","line":105,"range":{"start_line":105,"start_character":22,"end_line":105,"end_character":40},"updated":"2020-11-02 18:00:29.000000000","message":"Related to the earlier questions about the encoder: do we need a special encoder at all? it seems like we\u0027re curating the inputs to elasticsearch in the reporter to exclude this extra info?","commit_id":"6821c39cec2f0a3516976ca8d09028db162729e1"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"872fe1fcf0c243c7e96948bad0fffa8f31a948b4","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        try:"},{"line_number":142,"context_line":"            bulk(self.es, self.gen(source_it, index))"},{"line_number":143,"context_line":"            self.es.indices.refresh(index\u003dindex)"},{"line_number":144,"context_line":"            self.log.info(\u0027%s docs indexed to %s\u0027 % ("},{"line_number":145,"context_line":"                len(source_it), self.connection_name))"},{"line_number":146,"context_line":"        except BulkIndexError as exc:"},{"line_number":147,"context_line":"            self.log.warn(\"Some docs failed to be indexed (%s)\" % exc)"}],"source_content_type":"text/x-python","patch_set":45,"id":"1f621f24_d557f401","line":144,"range":{"start_line":144,"start_character":21,"end_line":144,"end_character":25},"updated":"2020-11-02 18:00:29.000000000","message":"This should probably be debug level as we don\u0027t need info logs for all the data storage?","commit_id":"6821c39cec2f0a3516976ca8d09028db162729e1"}],"zuul/driver/elasticsearch/reporter.py":[{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"df7ad3cb2fdb64b485a93848e278fd320a603a29","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                \"duration\": str(end_time - start_time),"},{"line_number":82,"context_line":"                \"voting\": build.job.voting,"},{"line_number":83,"context_line":"                \"log_url\": url,"},{"line_number":84,"context_line":"                \"node_name\": build.node_name,"},{"line_number":85,"context_line":"            }"},{"line_number":86,"context_line":"            docs.append(build_doc)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_ff58fdfa","line":84,"range":{"start_line":84,"start_character":15,"end_line":84,"end_character":29},"updated":"2019-03-20 17:32:38.000000000","message":"maybe I\u0027m misreading the code here but is/should there be a conneciton between builds and their buildset? i.e.: each build_doc dict should have buildset_uuid set as well?","commit_id":"56904154b02d2c1c43866e064e0ca4527916f422"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"e84269255c5f83d15f0eec4c69d7d4fff252c7e4","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def getSchema():"},{"line_number":125,"context_line":"    el_reporter \u003d v.Schema(v.Any(None, dict))"},{"line_number":126,"context_line":"    return el_reporter"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_f28f7e20","line":125,"range":{"start_line":125,"start_character":39,"end_line":125,"end_character":43},"updated":"2019-03-25 03:23:51.000000000","message":"This is missing {\u0027job-vars\u0027: {}} validation.","commit_id":"d0ac0c8ee0a019309ec69f02732cf63969783620"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"efa2d5a268981c0534f98a1b814ab48e3798fee1","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                \"duration\": str(end_time - start_time),"},{"line_number":87,"context_line":"                \"voting\": build.job.voting,"},{"line_number":88,"context_line":"                \"log_url\": url,"},{"line_number":89,"context_line":"                \"node_name\": build.node_name,"},{"line_number":90,"context_line":"            }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            # Extends the build doc with some buildset info"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfbec78f_4c758231","line":89,"range":{"start_line":89,"start_character":16,"end_line":89,"end_character":45},"updated":"2019-05-11 17:10:51.000000000","message":"I think you found technical debt here. Zuul has native multi-node support so a single node_name doesn\u0027t make sense. Looking at the code build.node_name looks unused to me. If you want to add node information you probably want to use build.nodeset which also contains more information about the nodes.","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"a5e03c98210ad4834895ad6ef245aca442bacf53","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                \"duration\": str(end_time - start_time),"},{"line_number":87,"context_line":"                \"voting\": build.job.voting,"},{"line_number":88,"context_line":"                \"log_url\": url,"},{"line_number":89,"context_line":"                \"node_name\": build.node_name,"},{"line_number":90,"context_line":"            }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            # Extends the build doc with some buildset info"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfbec78f_1e3d5d2a","line":89,"range":{"start_line":89,"start_character":16,"end_line":89,"end_character":45},"in_reply_to":"dfbec78f_4c758231","updated":"2019-05-13 17:25:45.000000000","message":"I\u0027ll remove it then. At first glance the sqlreporter and the web UI/Rest API are using that attribute too.\nSo I\u0027ll followup with a patch to propose the removal of build.node_name from Zuul.","commit_id":"b0d443d71a3e7a0da2349bc24992a1bdcb0ff02f"}]}
