)]}'
{"metropolis/node/kubernetes/kubelet.go":[{"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}]},"change_message_id":"cd9e8ff1edd3628890b87fd26eaab3b03bcc5e98","unresolved":true,"context_lines":[{"line_number":46,"context_line":"func (s *kubeletService) getPubkey(ctx context.Context) (ed25519.PublicKey, error) {"},{"line_number":47,"context_line":"\t// First make sure we have a local ED25519 private key, and generate one if not."},{"line_number":48,"context_line":"\tvar priv ed25519.PrivateKey"},{"line_number":49,"context_line":"\tif exists, err :\u003d s.KubeletDirectory.PKI.Key.Exists(); !exists || err !\u003d nil {"},{"line_number":50,"context_line":"\t\tif err !\u003d nil {"},{"line_number":51,"context_line":"\t\t\treturn nil, fmt.Errorf(\"could not check if private key exists: %w\", err)"},{"line_number":52,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":15,"id":"f35df215_d6e30dd7","line":49,"range":{"start_line":49,"start_character":38,"end_line":49,"end_character":52},"updated":"2023-04-11 15:29:01.000000000","message":"Any reason you cannot use GeneratePrivateKey from above here?","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"92abfeec726dd823bd123fabc70ef2ac64aa9ae2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"func (s *kubeletService) getPubkey(ctx context.Context) (ed25519.PublicKey, error) {"},{"line_number":47,"context_line":"\t// First make sure we have a local ED25519 private key, and generate one if not."},{"line_number":48,"context_line":"\tvar priv ed25519.PrivateKey"},{"line_number":49,"context_line":"\tif exists, err :\u003d s.KubeletDirectory.PKI.Key.Exists(); !exists || err !\u003d nil {"},{"line_number":50,"context_line":"\t\tif err !\u003d nil {"},{"line_number":51,"context_line":"\t\t\treturn nil, fmt.Errorf(\"could not check if private key exists: %w\", err)"},{"line_number":52,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":15,"id":"c0642ff7_6d4ca665","line":49,"range":{"start_line":49,"start_character":38,"end_line":49,"end_character":52},"in_reply_to":"f35df215_d6e30dd7","updated":"2023-04-12 14:41:19.000000000","message":"Done","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"cd9e8ff1edd3628890b87fd26eaab3b03bcc5e98","unresolved":true,"context_lines":[{"line_number":82,"context_line":"\t\treturn fmt.Errorf(\"when generating kubeconfig: %w\", err)"},{"line_number":83,"context_line":"\t}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"\tif err :\u003d s.KubeletDirectory.Kubeconfig.Write(clientKubeconfig, 0400); err !\u003d nil {"},{"line_number":86,"context_line":"\t\treturn fmt.Errorf(\"could not write kubeconfig: %w\", err)"},{"line_number":87,"context_line":"\t}"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-go","patch_set":15,"id":"72019656_962b9efd","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":63},"updated":"2023-04-11 15:29:01.000000000","message":"I\u0027m not too happy persisting the kubeconfig as changing it is going to be very painful if we do this. Can\u0027t we keep on storing the credentials?","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"f6d9f1703d037ed782f5a6f97182a77a48792ad9","unresolved":false,"context_lines":[{"line_number":82,"context_line":"\t\treturn fmt.Errorf(\"when generating kubeconfig: %w\", err)"},{"line_number":83,"context_line":"\t}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"\tif err :\u003d s.KubeletDirectory.Kubeconfig.Write(clientKubeconfig, 0400); err !\u003d nil {"},{"line_number":86,"context_line":"\t\treturn fmt.Errorf(\"could not write kubeconfig: %w\", err)"},{"line_number":87,"context_line":"\t}"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-go","patch_set":15,"id":"788da080_a87befe9","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":63},"in_reply_to":"5ef362e0_f21298d6","updated":"2023-04-13 12:08:38.000000000","message":"Done","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"92abfeec726dd823bd123fabc70ef2ac64aa9ae2","unresolved":true,"context_lines":[{"line_number":82,"context_line":"\t\treturn fmt.Errorf(\"when generating kubeconfig: %w\", err)"},{"line_number":83,"context_line":"\t}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"\tif err :\u003d s.KubeletDirectory.Kubeconfig.Write(clientKubeconfig, 0400); err !\u003d nil {"},{"line_number":86,"context_line":"\t\treturn fmt.Errorf(\"could not write kubeconfig: %w\", err)"},{"line_number":87,"context_line":"\t}"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-go","patch_set":15,"id":"e154bc42_ba5efae3","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":63},"in_reply_to":"72019656_962b9efd","updated":"2023-04-12 14:41:19.000000000","message":"I don\u0027t understand what you mean by \u0027keep on storing\u0027.\n\nWould you like to keep using ArgPath here instead of actually persisting the kubeconfig on disk, even if we keep overwriting them on every startup like we do here (which is also what we\u0027re doing for the server cert/key)?","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"38ae5356d94a281a3c5cd29bb28b2ad5d8406e3a","unresolved":true,"context_lines":[{"line_number":82,"context_line":"\t\treturn fmt.Errorf(\"when generating kubeconfig: %w\", err)"},{"line_number":83,"context_line":"\t}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"\tif err :\u003d s.KubeletDirectory.Kubeconfig.Write(clientKubeconfig, 0400); err !\u003d nil {"},{"line_number":86,"context_line":"\t\treturn fmt.Errorf(\"could not write kubeconfig: %w\", err)"},{"line_number":87,"context_line":"\t}"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-go","patch_set":15,"id":"5ef362e0_f21298d6","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":63},"in_reply_to":"e154bc42_ba5efae3","updated":"2023-04-13 10:43:57.000000000","message":"Yeah, I\u0027d prefer not to store things on the data partition which aren\u0027t really persistent (i.e. get regenerated on each start). fileargs is probably the cleanest way of doing this.","commit_id":"523965e692532857005d1df252a6fca251d549fe"}],"metropolis/node/kubernetes/reconciler/resources_rbac.go":[{"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}]},"change_message_id":"cd9e8ff1edd3628890b87fd26eaab3b03bcc5e98","unresolved":true,"context_lines":[{"line_number":91,"context_line":"\t\t\t\t{"},{"line_number":92,"context_line":"\t\t\t\t\tAPIGroups: []string{\"\"},"},{"line_number":93,"context_line":"\t\t\t\t\tResources: []string{\"events\"},"},{"line_number":94,"context_line":"\t\t\t\t\tVerbs:     []string{\"get\", \"list\", \"watch\"},"},{"line_number":95,"context_line":"\t\t\t\t},"},{"line_number":96,"context_line":"\t\t\t\t{"},{"line_number":97,"context_line":"\t\t\t\t\tAPIGroups: []string{\"storage.k8s.io\"},"}],"source_content_type":"text/x-go","patch_set":15,"id":"aee642e4_34aec295","line":94,"range":{"start_line":94,"start_character":5,"end_line":94,"end_character":10},"updated":"2023-04-11 15:29:01.000000000","message":"The EventRecorder used by the CSI provisioner requires create/update/patch","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"92abfeec726dd823bd123fabc70ef2ac64aa9ae2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"\t\t\t\t{"},{"line_number":92,"context_line":"\t\t\t\t\tAPIGroups: []string{\"\"},"},{"line_number":93,"context_line":"\t\t\t\t\tResources: []string{\"events\"},"},{"line_number":94,"context_line":"\t\t\t\t\tVerbs:     []string{\"get\", \"list\", \"watch\"},"},{"line_number":95,"context_line":"\t\t\t\t},"},{"line_number":96,"context_line":"\t\t\t\t{"},{"line_number":97,"context_line":"\t\t\t\t\tAPIGroups: []string{\"storage.k8s.io\"},"}],"source_content_type":"text/x-go","patch_set":15,"id":"45ddd800_218b9fdc","line":94,"range":{"start_line":94,"start_character":5,"end_line":94,"end_character":10},"in_reply_to":"aee642e4_34aec295","updated":"2023-04-12 14:41:19.000000000","message":"Done","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"cd9e8ff1edd3628890b87fd26eaab3b03bcc5e98","unresolved":true,"context_lines":[{"line_number":96,"context_line":"\t\t\t\t{"},{"line_number":97,"context_line":"\t\t\t\t\tAPIGroups: []string{\"storage.k8s.io\"},"},{"line_number":98,"context_line":"\t\t\t\t\tResources: []string{\"storageclasses\"},"},{"line_number":99,"context_line":"\t\t\t\t\tVerbs:     []string{\"*\"},"},{"line_number":100,"context_line":"\t\t\t\t},"},{"line_number":101,"context_line":"\t\t\t\t{"},{"line_number":102,"context_line":"\t\t\t\t\tAPIGroups: []string{\"\"},"}],"source_content_type":"text/x-go","patch_set":15,"id":"f6d0ee59_46f95bb2","line":99,"range":{"start_line":99,"start_character":5,"end_line":99,"end_character":10},"updated":"2023-04-11 15:29:01.000000000","message":"Read-only access is sufficient","commit_id":"523965e692532857005d1df252a6fca251d549fe"},{"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}]},"change_message_id":"92abfeec726dd823bd123fabc70ef2ac64aa9ae2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"\t\t\t\t{"},{"line_number":97,"context_line":"\t\t\t\t\tAPIGroups: []string{\"storage.k8s.io\"},"},{"line_number":98,"context_line":"\t\t\t\t\tResources: []string{\"storageclasses\"},"},{"line_number":99,"context_line":"\t\t\t\t\tVerbs:     []string{\"*\"},"},{"line_number":100,"context_line":"\t\t\t\t},"},{"line_number":101,"context_line":"\t\t\t\t{"},{"line_number":102,"context_line":"\t\t\t\t\tAPIGroups: []string{\"\"},"}],"source_content_type":"text/x-go","patch_set":15,"id":"28fa71bc_c671b16f","line":99,"range":{"start_line":99,"start_character":5,"end_line":99,"end_character":10},"in_reply_to":"f6d0ee59_46f95bb2","updated":"2023-04-12 14:41:19.000000000","message":"Done","commit_id":"523965e692532857005d1df252a6fca251d549fe"}]}
