)]}'
{"id":"monogon~1749","triplet_id":"monogon~main~Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba","project":"monogon","branch":"main","attention_set":{},"removed_from_attention_set":{"1000002":{"account":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"last_update":"2023-06-06 12:11:51.000000000","reason":"Change was submitted"},"1000001":{"account":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"last_update":"2023-06-01 21:07:26.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba","subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","status":"MERGED","created":"2023-05-30 18:56:04.000000000","updated":"2023-06-06 12:11:51.000000000","submitted":"2023-06-06 12:11:51.000000000","submitter":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"1749","meta_rev_id":"05ea43679a9f5b36f2edc55a7e0fbf59230a8964","_number":1749,"virtual_id_number":1749,"owner":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"actions":{},"labels":{"Code-Review":{"approved":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"all":[{"value":0,"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2023-06-06 12:11:51.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{" 0":"No score","+1":"LGTM"},"description":"","default_value":0,"optional":true},"Vouch-Run-CI":{"all":[{"value":0,"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{" 0":"If CI approval needed, vote +1 after reviewing for safety.","+1":"Okay to run CI"},"description":"","default_value":0,"optional":true},"Verified":{"approved":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:gerrit:merged","value":1,"date":"2023-06-06 12:11:51.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Fails"," 0":"No score","+1":"Great success"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2023-05-30 18:58:29.000000000","updated_by":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"},{"updated":"2023-05-30 18:58:56.000000000","updated_by":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"99ad838fbffa4dd6bcc8bc1293ee76dec199c4c8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-05-30 18:56:04.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"77179f7d935690962a1f5151c2624b980d356b07","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-05-30 18:56:56.000000000","message":"Uploaded patch set 2: New patch set was added with same tree, parent tree, and commit message as Patch Set 1.","accounts_in_message":[],"_revision_number":2},{"id":"4ca522e21da68742607b2acda6bc92be1bee4461","tag":"autogenerated:jenkins","author":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2023-05-30 18:58:56.000000000","message":"Patch Set 1: Verified-1","accounts_in_message":[],"_revision_number":1},{"id":"8ae3167978aef1223d2a771cae1c812d454a29df","tag":"autogenerated:jenkins","author":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2023-05-30 19:02:59.000000000","message":"Patch Set 2: Verified-1","accounts_in_message":[],"_revision_number":2},{"id":"71e7835706551bc9890fc1e943dd8325f8da2247","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-05-30 21:22:45.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":3},{"id":"b67f560fab078a1cf037167cf8d20fb342865bbe","tag":"autogenerated:jenkins","author":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2023-05-30 21:27:57.000000000","message":"Patch Set 3: Verified-1","accounts_in_message":[],"_revision_number":3},{"id":"9a021bc165d0a2c772239979feeac568b5d285d4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-05-30 21:32:56.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":4},{"id":"d0f5208213918fbf11019c1d4efc5046c05cda7a","tag":"autogenerated:jenkins","author":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2023-05-30 21:39:22.000000000","message":"Patch Set 4: Verified+1","accounts_in_message":[],"_revision_number":4},{"id":"d2b47b73d728006fab979cdf85c28ade93477c76","author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-06-01 21:07:26.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"a7e7edd3bcfb8bdc32c3bbf8c23252184f649050","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-06-05 16:20:30.000000000","message":"Uploaded patch set 5: Patch Set 4 was rebased.\n\nCopied Votes:\n* Code-Review+1 (copy condition: \"changekind:NO_CODE_CHANGE OR changekind:TRIVIAL_REBASE\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":5},{"id":"eb4c9c37e9ffc4cb01eefc4c96f11011f30c3f0a","tag":"autogenerated:jenkins","author":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2023-06-05 16:38:05.000000000","message":"Patch Set 5: Verified-1","accounts_in_message":[],"_revision_number":5},{"id":"0615d27795ba9d38f0048914df19e3e6a502b96d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-06-05 16:59:09.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.\n\nCopied Votes:\n* Code-Review+1 (copy condition: \"changekind:NO_CODE_CHANGE OR changekind:TRIVIAL_REBASE\")\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":6},{"id":"87326e28d55441eeeeddcab17be2db69500749d7","tag":"autogenerated:jenkins","author":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2023-06-05 17:13:17.000000000","message":"Patch Set 6: Verified+1","accounts_in_message":[],"_revision_number":6},{"id":"b1026c1a22141886a580c134c54de764e4cfa5ae","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-06-06 09:58:32.000000000","message":"Patch Set 7: Patch Set 6 was rebased\n\nCopied Votes:\n* Code-Review+1 (copy condition: \"changekind:NO_CODE_CHANGE OR changekind:TRIVIAL_REBASE\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":7},{"id":"e6a6d3d8da1e17deab1c4f84dc8d5549acf8d592","tag":"autogenerated:jenkins","author":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2023-06-06 10:09:33.000000000","message":"Patch Set 7: Verified+1","accounts_in_message":[],"_revision_number":7},{"id":"05ea43679a9f5b36f2edc55a7e0fbf59230a8964","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2023-06-06 12:11:51.000000000","message":"Change has been successfully rebased and submitted as fe3d8fd61a81c09a1544d8cf1e13326c179c5972\n\n4 is the latest approved patch-set.\nNo files were changed between the latest approved patch-set and the submitted one.\n","accounts_in_message":[],"_revision_number":8}],"current_revision_number":8,"current_revision":"fe3d8fd61a81c09a1544d8cf1e13326c179c5972","revisions":{"3f2341fd80ed803a2b2630a4185ea8a89d7e06f8":{"kind":"REWORK","_number":1,"created":"2023-05-30 18:56:04.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/1","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/1","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/1 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/1","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"849c8252cab50f618f64d6c87b1e1ae054bf7bbe","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/849c8252cab50f618f64d6c87b1e1ae054bf7bbe"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:14.000000000","tz":120},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/3f2341fd80ed803a2b2630a4185ea8a89d7e06f8"}]},"branch":"refs/heads/main"},"789aae2693a7204e8b36fdef6030bcd3e65f14c3":{"kind":"NO_CHANGE","_number":2,"created":"2023-05-30 18:56:56.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/2","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/2","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/2 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/2","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"87be5cec8959148a5adc96399baa136c7ecaa053","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/87be5cec8959148a5adc96399baa136c7ecaa053"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:56:54.000000000","tz":120},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/789aae2693a7204e8b36fdef6030bcd3e65f14c3"}]},"branch":"refs/heads/main"},"d3373969ff076fb2f8e2992200a1f3929d9fdbf2":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2023-05-30 21:22:45.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/3","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/3","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/3 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/3","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"575a9b8ec070f3562b33aa6c1fdfe32755956064","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/575a9b8ec070f3562b33aa6c1fdfe32755956064"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 21:22:38.000000000","tz":120},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/d3373969ff076fb2f8e2992200a1f3929d9fdbf2"}]},"branch":"refs/heads/main"},"528de07ba28da9eaaaefed463267244f86b50faa":{"kind":"REWORK","_number":4,"created":"2023-05-30 21:32:56.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/4","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/4","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/4 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/4","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"575a9b8ec070f3562b33aa6c1fdfe32755956064","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/575a9b8ec070f3562b33aa6c1fdfe32755956064"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 21:32:54.000000000","tz":120},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/528de07ba28da9eaaaefed463267244f86b50faa"}]},"branch":"refs/heads/main"},"3aadc37bb65ad65fa9de3952dd380bfc2e0d330f":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2023-06-05 16:20:30.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/5","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/5","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/5 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/5","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"0f7196003d5684ee9f14f21fb5cc2f3f89d3dbf9","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/0f7196003d5684ee9f14f21fb5cc2f3f89d3dbf9"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-06-05 16:20:24.000000000","tz":120},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/3aadc37bb65ad65fa9de3952dd380bfc2e0d330f"}]},"branch":"refs/heads/main"},"84d3b470b0c972cd80f056d05356769724c63bf0":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2023-06-05 16:59:09.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/6","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/6","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/6 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/6","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/6 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"e2070fcfc7451e6bb25053223f1885813a6e875b","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/e2070fcfc7451e6bb25053223f1885813a6e875b"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-06-05 16:59:02.000000000","tz":120},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/84d3b470b0c972cd80f056d05356769724c63bf0"}]},"branch":"refs/heads/main"},"2f49de64473f03170efd23126130104b24b0ab38":{"kind":"TRIVIAL_REBASE","_number":7,"created":"2023-06-06 09:58:32.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/7","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/7","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/7 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/7","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/7 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"dafd9a103189d8708b0b70dbd75dae13c52e74ac","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/dafd9a103189d8708b0b70dbd75dae13c52e74ac"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-06-06 09:58:32.000000000","tz":0},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/2f49de64473f03170efd23126130104b24b0ab38"}]},"branch":"refs/heads/main","description":"Rebase"},"fe3d8fd61a81c09a1544d8cf1e13326c179c5972":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":8,"created":"2023-06-06 12:11:51.000000000","uploader":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/49/1749/8","fetch":{"anonymous http":{"url":"https://review.monogon.dev/monogon","ref":"refs/changes/49/1749/8","commands":{"Branch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/8 \u0026\u0026 git checkout -b change-1749 FETCH_HEAD","Checkout":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.monogon.dev/monogon refs/changes/49/1749/8","Reset To":"git fetch https://review.monogon.dev/monogon refs/changes/49/1749/8 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"90a70a0e1cab83ba1601d355d07f285dff0d4d55","subject":"m/n/core/roleserve: do not store cluster directory, populate resolver earlier","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/90a70a0e1cab83ba1601d355d07f285dff0d4d55"}]}],"author":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-05-30 18:50:09.000000000","tz":120},"committer":{"name":"Serge Bazanski","email":"serge@monogon.tech","date":"2023-06-06 12:11:51.000000000","tz":0},"subject":"m/n/core/roleserve: rework cluster membership, reuse control plane connections","message":"m/n/core/roleserve: rework cluster membership, reuse control plane connections\n\nThis changes up roleserver internals to simplify the handling of cluster\nmembership state. The end goal is to allow reusing control plane gRPC\nconnections across different components in a node, but the refactor goes\na bit beyond that.\n\nEver since the introduction of the rpc resolver, we have effectively\nsimplifies the control plane startup problem. This is because the\nresolver allows the rest of the system to dynamically switch between\ndifferent gRPC endpoints for the control plane.\n\nWhat this means is that some of the existing complexity in the\nroleserver (which predates the resolver) can be thrown away. Notably, we\nremove the ClusterMembership structure, and replace it with two\nsignificantly simpler structures that represent two separate facts about\nhe local node:\n\n1. localControlPlane carries information about whether this node has a\n   locally running control plane. This is only used by the statuspusher\n   (to report whether the control plane is running) and by the\n   Kubernetes control plane.\n\n2. curatorConnection carries the credentials, resolver and an open gRPC\n   connection to the control plane, and is the only roleserver\n   EventValue now used by the vast majority of the roleserver runnables.\n\nThe resulting code, especially inside the control plane roleserver\nrunnable, is now less complex, at the cost of a bit of an ugly refactor.\n\nChange-Id: Idbe1ff2ac3bfb2d570bed040a2f78ccabb66caba\nReviewed-on: https://review.monogon.dev/c/monogon/+/1749\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n","web_links":[{"name":"browse","url":"/plugins/gitiles/monogon/+/fe3d8fd61a81c09a1544d8cf1e13326c179c5972"}]},"branch":"refs/heads/main","description":"Rebase"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Code-Review","status":"OK","applied_by":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}},{"label":"Vouch-Run-CI","status":"MAY"},{"label":"Verified","status":"MAY","applied_by":{"_account_id":1000003,"name":"Jenkins CI","username":"jenkins","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]}}]}],"submit_requirements":[{"name":"Code-Review","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Verified","description":"Code passes CI checks","status":"SATISFIED","is_legacy":false,"applicability_expression_result":{"fulfilled":true,"status":"PASS"},"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"No-Unresolved-Comments","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-has:unresolved","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["has:unresolved"],"atom_explanations":{}}},{"name":"Allow-Run-CI","description":"Change needs project owner approval for CI runs","status":"OVERRIDDEN","is_legacy":false,"applicability_expression_result":{"fulfilled":true,"status":"PASS"},"submittability_expression_result":{"expression":"label:Vouch-Run-CI\u003dMAX","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Vouch-Run-CI\u003dMAX"],"atom_explanations":{}},"override_expression_result":{"expression":"authoremail:\"^.*@(nexantic\\.com|monogon\\.tech)$\"","fulfilled":true,"status":"PASS","passing_atoms":["authoremail:\"^.*@(nexantic\\.com|monogon\\.tech)$\""],"failing_atoms":[],"atom_explanations":{}}}]}
