)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"109bb1706d3d7ce171f4e4e5fbc5789550b5de90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7fd5cdcf_8e36935d","updated":"2021-11-12 15:11:36.000000000","message":"\u003eThis is a management call that provides detailed per-node details.\n\nJust \"per-node details\"?","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"}],"metropolis/node/core/curator/impl_leader_management.go":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ea5fa0273c9bd5f56036b49e987f32d4d1532eba","unresolved":true,"context_lines":[{"line_number":125,"context_line":"\tfor _, kv :\u003d range kvs {"},{"line_number":126,"context_line":"\t\tnode, err :\u003d nodeUnmarshal(kv.Value)"},{"line_number":127,"context_line":"\t\tif err !\u003d nil {"},{"line_number":128,"context_line":"\t\t\t// TODO(q3k): log this"},{"line_number":129,"context_line":"\t\t\tcontinue"},{"line_number":130,"context_line":"\t\t}"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-go","patch_set":1,"id":"35a58a6e_b15ce55e","line":128,"updated":"2021-11-12 14:37:42.000000000","message":"Please try describing why it can\u0027t be solved in this commit.","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"},{"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":"029a8be7763a5cb3f041e39f8d9757849187fa8d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"\tfor _, kv :\u003d range kvs {"},{"line_number":126,"context_line":"\t\tnode, err :\u003d nodeUnmarshal(kv.Value)"},{"line_number":127,"context_line":"\t\tif err !\u003d nil {"},{"line_number":128,"context_line":"\t\t\t// TODO(q3k): log this"},{"line_number":129,"context_line":"\t\t\tcontinue"},{"line_number":130,"context_line":"\t\t}"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-go","patch_set":1,"id":"991ffd5c_b90b1004","line":128,"in_reply_to":"35a58a6e_b15ce55e","updated":"2021-11-15 21:16:00.000000000","message":"It\u0027s the same as for other code within the curator - we don\u0027t have logging/tracing middleware for gRPC requests. Ie., there\u0027s nowhere to log into from this spot, as the context doesn\u0027t carry any logger instance.\n\nFiled an issue for this and fixed up relevant TODOs.","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ea5fa0273c9bd5f56036b49e987f32d4d1532eba","unresolved":true,"context_lines":[{"line_number":129,"context_line":"\t\t\tcontinue"},{"line_number":130,"context_line":"\t\t}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"\t\troles :\u003d \u0026cpb.NodeRoles{}"},{"line_number":133,"context_line":"\t\tif node.kubernetesWorker !\u003d nil {"},{"line_number":134,"context_line":"\t\t\troles.KubernetesWorker \u003d \u0026cpb.NodeRoles_KubernetesWorker{}"},{"line_number":135,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"08ce5e7b_91955c2d","line":132,"updated":"2021-11-12 14:37:42.000000000","message":"What do these blocks do? Consider adding a comment for each.","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"},{"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":"029a8be7763a5cb3f041e39f8d9757849187fa8d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"\t\t\tcontinue"},{"line_number":130,"context_line":"\t\t}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"\t\troles :\u003d \u0026cpb.NodeRoles{}"},{"line_number":133,"context_line":"\t\tif node.kubernetesWorker !\u003d nil {"},{"line_number":134,"context_line":"\t\t\troles.KubernetesWorker \u003d \u0026cpb.NodeRoles_KubernetesWorker{}"},{"line_number":135,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"835f47f4_247040fa","line":132,"in_reply_to":"08ce5e7b_91955c2d","updated":"2021-11-15 21:16:00.000000000","message":"Done","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"}],"metropolis/node/core/curator/impl_leader_test.go":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ea5fa0273c9bd5f56036b49e987f32d4d1532eba","unresolved":true,"context_lines":[{"line_number":623,"context_line":"\t}"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"\t// Ensure that the cluster sees the node as NEW."},{"line_number":626,"context_line":"\tresN, err :\u003d mgmt.GetNodes(ctx, \u0026apb.GetNodesRequest{})"},{"line_number":627,"context_line":"\tif err !\u003d nil {"},{"line_number":628,"context_line":"\t\tt.Fatalf(\"GetNodes: %v\", err)"},{"line_number":629,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"ce7f7d1c_bc830306","line":626,"updated":"2021-11-12 14:37:42.000000000","message":"How does this block work, step by step? Please add comments.","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"973fe0d15509450a60f39715352cfbcf939aba68","unresolved":false,"context_lines":[{"line_number":623,"context_line":"\t}"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"\t// Ensure that the cluster sees the node as NEW."},{"line_number":626,"context_line":"\tresN, err :\u003d mgmt.GetNodes(ctx, \u0026apb.GetNodesRequest{})"},{"line_number":627,"context_line":"\tif err !\u003d nil {"},{"line_number":628,"context_line":"\t\tt.Fatalf(\"GetNodes: %v\", err)"},{"line_number":629,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"ae18d5ec_640c36bf","line":626,"in_reply_to":"5b2c111f_3a215f4d","updated":"2021-11-18 13:48:05.000000000","message":"Done","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"},{"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":"029a8be7763a5cb3f041e39f8d9757849187fa8d","unresolved":true,"context_lines":[{"line_number":623,"context_line":"\t}"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"\t// Ensure that the cluster sees the node as NEW."},{"line_number":626,"context_line":"\tresN, err :\u003d mgmt.GetNodes(ctx, \u0026apb.GetNodesRequest{})"},{"line_number":627,"context_line":"\tif err !\u003d nil {"},{"line_number":628,"context_line":"\t\tt.Fatalf(\"GetNodes: %v\", err)"},{"line_number":629,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"5b2c111f_3a215f4d","line":626,"in_reply_to":"ce7f7d1c_bc830306","updated":"2021-11-15 21:16:00.000000000","message":"Most of this is gRPC server-side streaming boilerplate. Added some comments, but there\u0027s only so much I can do without verbosely explaining how gRPC works.\n\nI also slightly simplified the receive for the sake of the test, removing an explicit EOF check for sake of the GetNodes.Recv test fatal error being raised.","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"}],"metropolis/proto/api/management.proto":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ea5fa0273c9bd5f56036b49e987f32d4d1532eba","unresolved":true,"context_lines":[{"line_number":61,"context_line":"message GetNodesRequest {"},{"line_number":62,"context_line":"}"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"// Node in a Metropolis cluster, streamed by GetNodes."},{"line_number":65,"context_line":"message Node {"},{"line_number":66,"context_line":"    // Raw Ed25519 public key of this node, which can be used to generate"},{"line_number":67,"context_line":"    // the node\u0027s ID. This is always set."}],"source_content_type":"text/x-protobuf","patch_set":1,"id":"4d7e75d8_aaefec38","line":64,"updated":"2021-11-12 14:37:42.000000000","message":"Please hint at the context this message is used in and explain why it holds these fields.","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"},{"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":"029a8be7763a5cb3f041e39f8d9757849187fa8d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"message GetNodesRequest {"},{"line_number":62,"context_line":"}"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"// Node in a Metropolis cluster, streamed by GetNodes."},{"line_number":65,"context_line":"message Node {"},{"line_number":66,"context_line":"    // Raw Ed25519 public key of this node, which can be used to generate"},{"line_number":67,"context_line":"    // the node\u0027s ID. This is always set."}],"source_content_type":"text/x-protobuf","patch_set":1,"id":"77c59f20_068cced5","line":64,"in_reply_to":"4d7e75d8_aaefec38","updated":"2021-11-15 21:16:00.000000000","message":"Done","commit_id":"0b571686e60c93db3f50ce6222bd321902fe5cf2"}]}
