)]}'
{"doc/source/developer/specs/kubernetes-operator.rst":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"c0c5b395851ddf7ddffea9a922d8fbcfb002e2db","unresolved":false,"context_lines":[{"line_number":39,"context_line":"::"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  apiVersion: zuul-ci.org/v1alpha1"},{"line_number":42,"context_line":"  kind: Zuul"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"While Zuul requires Nodepool to operator, there are friendly people"},{"line_number":45,"context_line":"using Nodepool without Zuul. There should then also be a Nodepool CRD,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_443d3129","line":42,"updated":"2019-06-12 08:28:31.000000000","message":"Shouldn\u0027t this be specified? Fwiw here is the spec i used for the zuul+nodepool allinone operator poc:\n  https://github.com/TristanCacqueray/zuul-operator/blob/master/ansible/group_vars/all.yaml#L3-L24\n\nPerhaps we should isolate connections and tenants information, here are some proposals:\n\n  kind: Zuul\n  spec:\n    merger:\n      min: 0\n      max: 5\n    executor:\n      min: 1\n      max: 5\n    web:\n      min: 1\n      max: 1\n    executor_environment_configmap_name: null\n    \n\n  kind: ZuulConnection\n  spec:\n    name: ...\n    configmap_name: null\n\n  kind ZuulTenant\n  spec:\n    name: ...\n    source:\n      ...\n\nThen a ZuulConnection config map would be provided by the user like so:\n\n  kind: ConfigMap\n  data:\n    conn_rsa: ...\n    zuul.d/conn.conf: |\n      [connection name]\n      driver\u003dgerrit\n      host\u003d...\n      sshkey\u003d/etc/zuul/conn_rsa","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"59bf85536b1afe99a49f585c5acc27c1496a5626","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  apiVersion: zuul-ci.org/v1alpha1"},{"line_number":42,"context_line":"  kind: Zuul"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"While Zuul requires Nodepool to operator, there are friendly people"},{"line_number":45,"context_line":"using Nodepool without Zuul. There should then also be a Nodepool CRD,"},{"line_number":46,"context_line":"something like:"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_aa76aba3","line":44,"updated":"2019-05-21 17:14:23.000000000","message":"s/operator/operate/","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"c0c5b395851ddf7ddffea9a922d8fbcfb002e2db","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  apiVersion: zuul-ci.org/v1alpha1"},{"line_number":51,"context_line":"  kind: Nodepool"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Images"},{"line_number":55,"context_line":"------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_041c19bf","line":52,"updated":"2019-06-12 08:28:31.000000000","message":"Similarly for Nodepool, we may want to have a CR per top-level nodepool configloader objects, e.g. NodepoolLabel, NodepoolProvider","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"33a4a3ea28c6396bc51da5fa9428091c89e95502","unresolved":false,"context_lines":[{"line_number":72,"context_line":"for a deployer to manually install a list of documented operators and CRD"},{"line_number":73,"context_line":"definitions before installing the Zuul Operator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The Operator should provide config override settings to allow a deployer to say \"I already have one of these that\u0027s located at Location, please don\u0027t create"},{"line_number":76,"context_line":"one.\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_7224a05e","line":75,"range":{"start_line":75,"start_character":28,"end_line":75,"end_character":52},"updated":"2019-05-16 00:27:01.000000000","message":"CRD spec are provided as extra-var and they will override any group_vars/roles-default, thus we only need to reference dependencies apiVersion/kind as vars to enable override.\n\nHowever, supporting multiple dependency implementations may be too much work since the different operators may behave differently (e.g. the postgresql operator on operatorhub requires a \"primarysecretname\" object to create the zuul user while another one may need something else).\n\nThus I think we should pick one for RDMS and one for Zookeeper and stick with it. I had good success with: https://operatorhub.io/operator/alpha/postgres-operator.v3.5.0 and https://github.com/pravega/zookeeper-operator#install-the-operator )","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"59bf85536b1afe99a49f585c5acc27c1496a5626","unresolved":false,"context_lines":[{"line_number":72,"context_line":"for a deployer to manually install a list of documented operators and CRD"},{"line_number":73,"context_line":"definitions before installing the Zuul Operator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The Operator should provide config override settings to allow a deployer to say \"I already have one of these that\u0027s located at Location, please don\u0027t create"},{"line_number":76,"context_line":"one.\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_ca799f93","line":75,"updated":"2019-05-21 17:14:23.000000000","message":"Hard no on Postgres as \"the one\", and mostly no on MySQL being \"the one\". Given that every Zuul I\u0027ve set up is/was MySQL based, and OpenDev is as well. I don\u0027t think it would serve our community to tell other people to run what we don\u0027t, even if Postgres is a fine choice).\n\nThat said, I agree that they probably won\u0027t be entirely compatible, but I\u0027d hope they can have flags, and the database can simply be an optional plug-in and not a hard-dependency, so users can simply choose between 1 of 4 options: CRD\u0027d (mysql|postgres), or manually configured (mysql|postgres).\n\nSince we should not dither over this, what if we just start with \"plug in your database details here\" and just make clear that we don\u0027t help you set up the database?","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"8cbed7350a79aa12205a8ee2172a577780ec37d5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"for a deployer to manually install a list of documented operators and CRD"},{"line_number":73,"context_line":"definitions before installing the Zuul Operator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The Operator should provide config override settings to allow a deployer to say \"I already have one of these that\u0027s located at Location, please don\u0027t create"},{"line_number":76,"context_line":"one.\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_0a967094","line":75,"in_reply_to":"bfb3d3c7_2074fe98","updated":"2019-05-28 12:47:41.000000000","message":"I think we should support only DBURI and one and only one CRD that the zuul operator manages.\n\nDBURI handles all versions of the world where the user has an alternate opinion about what should happen with databases.\n\nOnly-one-CRD allows \"kubectl get-me-a-zuul\" to be about as straightforward as docker-compose.\n\nThe reason I think we should also support the db is that by and large the db for zuul is not interesting or hard to deal with and is an implementation detail for the simple case.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"57cbeab7835ed3c20a03a58f07a5b8563b57adbb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"for a deployer to manually install a list of documented operators and CRD"},{"line_number":73,"context_line":"definitions before installing the Zuul Operator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The Operator should provide config override settings to allow a deployer to say \"I already have one of these that\u0027s located at Location, please don\u0027t create"},{"line_number":76,"context_line":"one.\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_f2579c01","line":75,"in_reply_to":"bfb3d3c7_b031350e","updated":"2019-05-22 20:40:02.000000000","message":"FWIW, we\u0027re running our zuul with postgres. But we use an externally managed db.\n\nSo I\u0027d be fine with three options: CRD (mysql|postgres) and DBURI\n\nHowever if it\u0027s too much effort (I don\u0027t know how much it would be) I think we should standardize the CRD to one.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"37515f4c3d598b715ac4906186a940dcaa2cebc5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"for a deployer to manually install a list of documented operators and CRD"},{"line_number":73,"context_line":"definitions before installing the Zuul Operator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The Operator should provide config override settings to allow a deployer to say \"I already have one of these that\u0027s located at Location, please don\u0027t create"},{"line_number":76,"context_line":"one.\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_b031350e","line":75,"in_reply_to":"bfb3d3c7_ca799f93","updated":"2019-05-21 22:44:44.000000000","message":"Looking at the operatorhub catalogue, FWIW there are only percona and vitess operators to setup mysql. Shouldn\u0027t we consider the rdms an implementation detail that the user doesn\u0027t need to know about?\n\nOtherwise I\u0027m fine with enabling the user to provide it\u0027s own dburi.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"356d2b452bb1eb85de656c69ed61513709f23715","unresolved":false,"context_lines":[{"line_number":72,"context_line":"for a deployer to manually install a list of documented operators and CRD"},{"line_number":73,"context_line":"definitions before installing the Zuul Operator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The Operator should provide config override settings to allow a deployer to say \"I already have one of these that\u0027s located at Location, please don\u0027t create"},{"line_number":76,"context_line":"one.\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_2074fe98","line":75,"in_reply_to":"bfb3d3c7_f2579c01","updated":"2019-05-22 22:48:50.000000000","message":"Supporting both mysql|postgres may complicate OLM dependencies declaration, not sure we can declare optional dependencies based on a CRD spec option...","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"59bf85536b1afe99a49f585c5acc27c1496a5626","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"},{"line_number":79,"context_line":"MySQL and PostGres. The Zuul Operator should not attempt to support managing"},{"line_number":80,"context_line":"both, but instead should pick one and allow deployers who wish to use a"},{"line_number":81,"context_line":"different one to use the config override setting pointing to the DB location."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Zuul Config"},{"line_number":84,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_6a70b3a6","line":81,"updated":"2019-05-21 17:14:23.000000000","message":"See above. I disagree with this point, but if we had to pick one, we\u0027d have to pick the one that most current users are on, which I believe is MySQL. Also, a nit, it\u0027s either Postgres, or PostgreSQL.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"8cbed7350a79aa12205a8ee2172a577780ec37d5","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Zuul supports multiple backends for some things, such as supporting both"},{"line_number":79,"context_line":"MySQL and PostGres. The Zuul Operator should not attempt to support managing"},{"line_number":80,"context_line":"both, but instead should pick one and allow deployers who wish to use a"},{"line_number":81,"context_line":"different one to use the config override setting pointing to the DB location."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Zuul Config"},{"line_number":84,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_2ac9f4aa","line":81,"in_reply_to":"bfb3d3c7_6a70b3a6","updated":"2019-05-28 12:47:41.000000000","message":"Assuming we decide to support one, I agree that we should pick MySQL.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"33a4a3ea28c6396bc51da5fa9428091c89e95502","unresolved":false,"context_lines":[{"line_number":93,"context_line":"connections, the Operator needs to make decisions based on what\u0027s going to"},{"line_number":94,"context_line":"go there, or needs to add information about services it is also controlling"},{"line_number":95,"context_line":"on behalf of the deployer, like RDBMS and Zookeeper connection info, the"},{"line_number":96,"context_line":"information should exist in the CRD as parameters."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Concretely, completely external files like ``clouds.yaml`` and ``kube/config``"},{"line_number":99,"context_line":"should be in Secrets referenced in the config. Zuul files like "}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_d2deac3c","line":96,"updated":"2019-05-16 00:27:01.000000000","message":"If the user can provides part of the zuul.conf, shouldn\u0027t we be able to discover if we need to setup a Zookeeper or a RDMS?\n\nOn the other hand, extra files may be needed by zuul.conf entries (such as ssh key for gerrit connection or github app certificats). Thus it may be worthy to consider providing a:\n\n  apiVersion: zuul-ci.org/v1alpha1\n  kind: Source\n  spec:\n    zuul_conf_entry_configmapname: \"\"\n    secretname: \"\"\n\nAnd iterate over those when creating the final zuul.conf and mount all the secrets in /var/lib/zuul","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"59bf85536b1afe99a49f585c5acc27c1496a5626","unresolved":false,"context_lines":[{"line_number":93,"context_line":"connections, the Operator needs to make decisions based on what\u0027s going to"},{"line_number":94,"context_line":"go there, or needs to add information about services it is also controlling"},{"line_number":95,"context_line":"on behalf of the deployer, like RDBMS and Zookeeper connection info, the"},{"line_number":96,"context_line":"information should exist in the CRD as parameters."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Concretely, completely external files like ``clouds.yaml`` and ``kube/config``"},{"line_number":99,"context_line":"should be in Secrets referenced in the config. Zuul files like "}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_8a73a7b1","line":96,"updated":"2019-05-21 17:14:23.000000000","message":"It would be nice if zuul did .d configuration, so we can just generate some in the Operator, and bind mount in others from secrets objects. I also submitted a patch a bazillion years ago (4 months?) that would allow environment variable interpolation in zuul.conf.. that would also help here.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"57cbeab7835ed3c20a03a58f07a5b8563b57adbb","unresolved":false,"context_lines":[{"line_number":93,"context_line":"connections, the Operator needs to make decisions based on what\u0027s going to"},{"line_number":94,"context_line":"go there, or needs to add information about services it is also controlling"},{"line_number":95,"context_line":"on behalf of the deployer, like RDBMS and Zookeeper connection info, the"},{"line_number":96,"context_line":"information should exist in the CRD as parameters."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Concretely, completely external files like ``clouds.yaml`` and ``kube/config``"},{"line_number":99,"context_line":"should be in Secrets referenced in the config. Zuul files like "}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_f25a3cf1","line":96,"in_reply_to":"bfb3d3c7_102a818f","updated":"2019-05-22 20:40:02.000000000","message":"++ for .d configuration\n\nFTR, the environment interpolation change is here: https://review.opendev.org/612824","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"37515f4c3d598b715ac4906186a940dcaa2cebc5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"connections, the Operator needs to make decisions based on what\u0027s going to"},{"line_number":94,"context_line":"go there, or needs to add information about services it is also controlling"},{"line_number":95,"context_line":"on behalf of the deployer, like RDBMS and Zookeeper connection info, the"},{"line_number":96,"context_line":"information should exist in the CRD as parameters."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Concretely, completely external files like ``clouds.yaml`` and ``kube/config``"},{"line_number":99,"context_line":"should be in Secrets referenced in the config. Zuul files like "}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_102a818f","line":96,"in_reply_to":"bfb3d3c7_8a73a7b1","updated":"2019-05-21 22:44:44.000000000","message":"To keep things simple, we would also need to enable settings secrets content (e.g. ssh key) inline in the zuul conf (.d) so that the user can provide a single blob to describe a connection.\n\nBut since the operator is going to compose the configuration (at least to setup the zookeeper info), then it\u0027s not too much work to also append user provided sections.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"335909892e3e0bf255d56592903607c6b353d354","unresolved":false,"context_lines":[{"line_number":93,"context_line":"connections, the Operator needs to make decisions based on what\u0027s going to"},{"line_number":94,"context_line":"go there, or needs to add information about services it is also controlling"},{"line_number":95,"context_line":"on behalf of the deployer, like RDBMS and Zookeeper connection info, the"},{"line_number":96,"context_line":"information should exist in the CRD as parameters."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Concretely, completely external files like ``clouds.yaml`` and ``kube/config``"},{"line_number":99,"context_line":"should be in Secrets referenced in the config. Zuul files like "}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_266c7307","line":96,"in_reply_to":"bfb3d3c7_f25a3cf1","updated":"2019-06-01 15:52:01.000000000","message":"+1 for zuul.d zuul.conf, I personally don\u0027t want to get into templating zuul.conf, I much rather patch static files when possible.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"33a4a3ea28c6396bc51da5fa9428091c89e95502","unresolved":false,"context_lines":[{"line_number":101,"context_line":"needs should be in ConfigMaps and referenced. Zuul files like "},{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_d2b78cf4","line":104,"updated":"2019-05-16 00:27:01.000000000","message":"Deployment may not be able to detect config map change, thus we may need some extra CRD to manage the service lifecycle. For example, kind such as \"ZuulReload\" and \"ZuulBackup\" (to archive all the scheduler secrets, to be used by a companion \"ZuulRestore\")","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9ec8167c6f1ff808eb91fa8d96aa20aa5b128ecd","unresolved":false,"context_lines":[{"line_number":101,"context_line":"needs should be in ConfigMaps and referenced. Zuul files like "},{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_3bf9d87f","line":104,"updated":"2019-06-03 16:59:48.000000000","message":"Re graceful, yes, we should have that.  We did have it in v2.5, it just didn\u0027t make the initial v3 implementation: https://opendev.org/zuul/zuul/src/branch/master/zuul/executor/server.py#L2479","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"59bf85536b1afe99a49f585c5acc27c1496a5626","unresolved":false,"context_lines":[{"line_number":101,"context_line":"needs should be in ConfigMaps and referenced. Zuul files like "},{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_2a6abbb2","line":104,"updated":"2019-05-21 17:14:23.000000000","message":"Yes please. To me the ability to programattically encode operations in to the deployment is the main reason to do this as an operator and not just ansible/helm/etc.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"df32b172c962f5febff7496f30d4f950fd489ff7","unresolved":false,"context_lines":[{"line_number":101,"context_line":"needs should be in ConfigMaps and referenced. Zuul files like "},{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_738deb79","line":104,"in_reply_to":"bfb3d3c7_218720da","updated":"2019-05-23 05:22:49.000000000","message":"That process should be part of the regular deployment role, and we need to do that in many situations, e.g. if a connection is added or if the scheduler deployment changed. Here is how i prototyped this in: https://github.com/TristanCacqueray/zuul-operator/blob/master/ansible/roles/deploy/tasks/main.yaml#L8\n\nFor executor/merger, it would be nice to have a gracefull stop signal we could use as a preStop container hook (e.g. finish the current jobs and kill yourself when you are done).","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"57cbeab7835ed3c20a03a58f07a5b8563b57adbb","unresolved":false,"context_lines":[{"line_number":101,"context_line":"needs should be in ConfigMaps and referenced. Zuul files like "},{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_d2e29801","line":104,"in_reply_to":"bfb3d3c7_2a6abbb2","updated":"2019-05-22 20:40:02.000000000","message":"Do we also want to specify some lifecycles (like upgrades) already or will this just be an implementation detail?","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"356d2b452bb1eb85de656c69ed61513709f23715","unresolved":false,"context_lines":[{"line_number":101,"context_line":"needs should be in ConfigMaps and referenced. Zuul files like "},{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_e0aa66d0","line":104,"in_reply_to":"bfb3d3c7_d2e29801","updated":"2019-05-22 22:48:50.000000000","message":"IIUC, upgrades are managed by the OLM itself (through the release of subsequent operator version). Otherwise, we could have a version field in the Zuul or Nodepool CRD to force using a specific image, but that shouldn\u0027t require an Upgrade CRD per se.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"d48f52ca278d17ed43dac6afa6db8d16fc4672b8","unresolved":false,"context_lines":[{"line_number":101,"context_line":"needs should be in ConfigMaps and referenced. Zuul files like "},{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_218720da","line":104,"in_reply_to":"bfb3d3c7_e0aa66d0","updated":"2019-05-23 04:34:52.000000000","message":"I mean the process of updating zuul itself. Like pausing executors before updating them or take a queue dump and re-enqueue on scheduler upgrade. These are the things that make an operator superior to helm/templates/..","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"879a10b255912e86909fcfce1245f2bcd6283d08","unresolved":false,"context_lines":[{"line_number":102,"context_line":" ``/etc/nodepool/secure.conf`` and ``/etc/zuul/zuul.conf`` should be managed"},{"line_number":103,"context_line":"by the Operator and be represented in the CRD."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The Zuul Operator should manage logging config."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_62a2054e","line":105,"updated":"2019-05-22 15:31:15.000000000","message":"We\u0027re working on approaching a point where the default logging for Zuul is what we would expect people to use, so perhaps here we should support three things: 1) by default, perform no logging config and Zuul uses its default (info level).  2) have a Zuul crd option to set debug logging option in the app crd. 3) allow the user to specify the full logging config as a configmap.","commit_id":"61c6f406bfcc374d0f8a7fd926c90b05c7ccf4d7"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"08b609adc983cd4bd5035cd67acdb0918da64bd2","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"While Zuul can be happily deployed in a Kubernetes environment, it is"},{"line_number":9,"context_line":"a complex enough system that a Kubernetes Operator could provide value"},{"line_number":10,"context_line":"to deployers. A Zuul Operator would allow a deployer to create \"A Zuul\""},{"line_number":11,"context_line":"in their Kubernetes and leave the details of how that works to the"},{"line_number":12,"context_line":"Operator."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_255797cc","line":10,"range":{"start_line":10,"start_character":56,"end_line":10,"end_character":62},"updated":"2019-07-02 11:53:28.000000000","message":"The operator is more than create, what about saying \"create and update\" or \"manage\", \"operate\"?","commit_id":"0908590300256f6de2c38a30faac8600fc4d551f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a4ffcf6bf2c403df7189d40e6c39ab693096ce01","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"While Zuul can be happily deployed in a Kubernetes environment, it is"},{"line_number":9,"context_line":"a complex enough system that a Kubernetes Operator could provide value"},{"line_number":10,"context_line":"to deployers. A Zuul Operator would allow a deployer to create \"A Zuul\""},{"line_number":11,"context_line":"in their Kubernetes and leave the details of how that works to the"},{"line_number":12,"context_line":"Operator."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_a5d707ee","line":10,"range":{"start_line":10,"start_character":56,"end_line":10,"end_character":62},"in_reply_to":"9fb8cfa7_255797cc","updated":"2019-07-02 12:15:54.000000000","message":"Good point.","commit_id":"0908590300256f6de2c38a30faac8600fc4d551f"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"08b609adc983cd4bd5035cd67acdb0918da64bd2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    web:"},{"line_number":49,"context_line":"      count: 1"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    "},{"line_number":52,"context_line":"While Zuul requires Nodepool to operate, there are friendly people"},{"line_number":53,"context_line":"using Nodepool without Zuul. There should then also be a Nodepool CRD,"},{"line_number":54,"context_line":"something like:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_45416b09","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":4},"updated":"2019-07-02 11:53:28.000000000","message":"nit: Extra whitespace","commit_id":"0908590300256f6de2c38a30faac8600fc4d551f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a4ffcf6bf2c403df7189d40e6c39ab693096ce01","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    web:"},{"line_number":49,"context_line":"      count: 1"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    "},{"line_number":52,"context_line":"While Zuul requires Nodepool to operate, there are friendly people"},{"line_number":53,"context_line":"using Nodepool without Zuul. There should then also be a Nodepool CRD,"},{"line_number":54,"context_line":"something like:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fb8cfa7_c5d23bfd","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":4},"in_reply_to":"9fb8cfa7_45416b09","updated":"2019-07-02 12:15:54.000000000","message":"Done","commit_id":"0908590300256f6de2c38a30faac8600fc4d551f"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"b00a11688980bf7271addb4231e43c327072c67b","unresolved":false,"context_lines":[{"line_number":163,"context_line":"by the Operator and be represented in the CRD."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":".. warning:: Should we have a list of ZuulConnection resources in the Zuul"},{"line_number":166,"context_line":"   CRD? Or should we have each ZuulConnection specify the Zuul they are for?"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Logging"},{"line_number":169,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_4a92d3fe","line":166,"updated":"2019-07-02 15:13:07.000000000","message":"Or we could take a page from the Rook design, and only support one Zuul in a namespace, then every ZuulConnection is automatically for that Zuul.","commit_id":"5ed14da8f1799851d56f3289ffa88e79c3b1779f"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"4fc4fa98d495a248b82c12b44762bd40caf00a52","unresolved":false,"context_lines":[{"line_number":154,"context_line":"          driver: github"},{"line_number":155,"context_line":"          app_key: /etc/zuul/github.key"},{"line_number":156,"context_line":"          rate_limit_logging: false"},{"line_number":157,"context_line":"          app_id: 1234"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In addition to ``zuul.conf`` settings the Operator needs to create and manage,"},{"line_number":160,"context_line":"there may also be additional user-provided ``zuul.conf`` settings, such as"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_8318b1d3","line":157,"updated":"2019-07-04 06:34:14.000000000","message":"I like this better than the previous `ZuulConnection` proposal. \n\nThe fewer resources there are, the easier it\u0027ll be to manage and reason about a Zuul deployment. It\u0027s true that a downside of this is that then the Zuul resource is going to be more complex to read but this information is relevant enough to have it set explicitly in the resource.\n\nAlso, the isolation here makes scaling zuul easier in a shared environment.","commit_id":"a922981835218f9f7d352c268157be4904f18cf7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"b6a37ca8993439fb03ecc6f115c17be5fa2a509b","unresolved":false,"context_lines":[{"line_number":154,"context_line":"          driver: github"},{"line_number":155,"context_line":"          app_key: /etc/zuul/github.key"},{"line_number":156,"context_line":"          rate_limit_logging: false"},{"line_number":157,"context_line":"          app_id: 1234"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In addition to ``zuul.conf`` settings the Operator needs to create and manage,"},{"line_number":160,"context_line":"there may also be additional user-provided ``zuul.conf`` settings, such as"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7faddb67_8875259b","line":157,"in_reply_to":"7faddb67_8318b1d3","updated":"2019-07-09 11:31:07.000000000","message":"++","commit_id":"a922981835218f9f7d352c268157be4904f18cf7"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"6848fadd8f2a71d5fc6cf384179f2138fbf9a953","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    scheduler:"},{"line_number":77,"context_line":"      count: 1"},{"line_number":78,"context_line":"    launcher:"},{"line_number":79,"context_line":"      count: 2"},{"line_number":80,"context_line":"    builder:"},{"line_number":81,"context_line":"      count: 2"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_55c9e175","line":79,"updated":"2019-07-08 15:37:05.000000000","message":"You don\u0027t need a launcher count because of the automatic sharding.","commit_id":"c167a39313777f8a30617b916986d2dcfba764d6"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"b6a37ca8993439fb03ecc6f115c17be5fa2a509b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    scheduler:"},{"line_number":77,"context_line":"      count: 1"},{"line_number":78,"context_line":"    launcher:"},{"line_number":79,"context_line":"      count: 2"},{"line_number":80,"context_line":"    builder:"},{"line_number":81,"context_line":"      count: 2"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_cb31a2a4","line":79,"in_reply_to":"7faddb67_55c9e175","updated":"2019-07-09 11:31:07.000000000","message":"Oh - good point!","commit_id":"c167a39313777f8a30617b916986d2dcfba764d6"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"13d4949cc4e9a24d506820a1b686e4f33ea6570f","unresolved":false,"context_lines":[{"line_number":203,"context_line":"should be managed by the Operator and their options should be represented in"},{"line_number":204,"context_line":"the CRD."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"The Operator will shard the Nodepool config by provider-region using a utility"},{"line_number":207,"context_line":"pod and create a new ConfigMap for each provider-region with only the subset of"},{"line_number":208,"context_line":"config needed for that provider-region. It will then create a pod for each"},{"line_number":209,"context_line":"provider-region."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7faddb67_69e81a7b","line":206,"updated":"2019-07-18 21:33:49.000000000","message":"If we implement multi-node jobs across regions, we\u0027re really implementing them across pools, and right now we don\u0027t have a way for Nodepool to handle that, so it\u0027s hard to say whether this would prohibit that or not.  My guess is that this won\u0027t prevent that, since to handle that will almost certainly involve some kind of multi-process coordination.\n\nAs for sharding per-pool -- you\u0027re right, that\u0027s actually the smallest unit we can shard, so maybe we should do that.","commit_id":"243d92047a69fcc40b43da6248d34597ca965d9a"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"f20c06ec2d7879a0e63ada8e4957d862e0501bc6","unresolved":false,"context_lines":[{"line_number":203,"context_line":"should be managed by the Operator and their options should be represented in"},{"line_number":204,"context_line":"the CRD."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"The Operator will shard the Nodepool config by provider-region using a utility"},{"line_number":207,"context_line":"pod and create a new ConfigMap for each provider-region with only the subset of"},{"line_number":208,"context_line":"config needed for that provider-region. It will then create a pod for each"},{"line_number":209,"context_line":"provider-region."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7faddb67_b7de6e3b","line":206,"range":{"start_line":206,"start_character":44,"end_line":206,"end_character":62},"updated":"2019-07-18 20:14:11.000000000","message":"Wouldn\u0027t that prevent using multi-nodes job across multiple region (if/when that\u0027s implemented)? Why not sharding per pool?","commit_id":"243d92047a69fcc40b43da6248d34597ca965d9a"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"68140708123d8117e392113bde4f5aafd6e84060","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    certfile: M21hWF95eTRXCg\u003d\u003d"},{"line_number":275,"context_line":"    keyfile: JnhlMElpNFVsCg\u003d\u003d"},{"line_number":276,"context_line":"  ---"},{"line_number":277,"context_line":"  apiVersion: zuul-ci.org/v1alpha1"},{"line_number":278,"context_line":"  kind: Zuul"},{"line_number":279,"context_line":"  spec:"},{"line_number":280,"context_line":"    merger:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7faddb67_acbb030c","line":277,"updated":"2019-07-10 16:34:13.000000000","message":"My only real concern, is for each new setting we add into zuul.conf, we also need to update the spec, is that right?\n\nThis is something I didn\u0027t like how we handled puppet modules, as each time we added a new setting, we also needed to go through 4 levels to add it.\n\nWhere, with a static file, we can just make the change in one place and not remember how the template of the template works.\n\nIf not, my comment can be ignored :)","commit_id":"243d92047a69fcc40b43da6248d34597ca965d9a"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"eee2c8df4da478323b1851f2c8842c3ccb0d6605","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    certfile: M21hWF95eTRXCg\u003d\u003d"},{"line_number":275,"context_line":"    keyfile: JnhlMElpNFVsCg\u003d\u003d"},{"line_number":276,"context_line":"  ---"},{"line_number":277,"context_line":"  apiVersion: zuul-ci.org/v1alpha1"},{"line_number":278,"context_line":"  kind: Zuul"},{"line_number":279,"context_line":"  spec:"},{"line_number":280,"context_line":"    merger:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7faddb67_4cbdafd6","line":277,"in_reply_to":"7faddb67_acbb030c","updated":"2019-07-10 16:40:12.000000000","message":"No - I think we should be able to do direct passthrough. (let the operator yaml specify an arbitrary unspecified dict for each thing) ... then we only need to update the operator when we add new options that are secrets ... but we\u0027ll probably want to be making a patch to the operator in those cases to exercise such a new feature anyway.","commit_id":"243d92047a69fcc40b43da6248d34597ca965d9a"}]}
