)]}'
{"/PATCHSET_LEVEL":[{"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":"2dcbf7666fe7819b36467e35fec19e60ec58434c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b8729e8e_beb1e43d","updated":"2021-08-23 12:24:10.000000000","message":"LGTM","commit_id":"6f9b1c534c82211c4ef1d199fc50f7851fe33232"}],"metropolis/node/core/cluster/node.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":"d07dc68c313eb3a03523cec1f03d8c0c12d84a7d","unresolved":true,"context_lines":[{"line_number":147,"context_line":"// used by this node to run public gRPC services (ie. the AAA service and any"},{"line_number":148,"context_line":"// other management/user services)."},{"line_number":149,"context_line":"//"},{"line_number":150,"context_line":"// SECURITY: The returned TransportCredentials accept _any_ client certificate"},{"line_number":151,"context_line":"// served by the client and do not perform any verification. The gRPC service"},{"line_number":152,"context_line":"// instance (via per-method checks or middleware) should perform user"},{"line_number":153,"context_line":"// authentication/authorization."}],"source_content_type":"text/x-go","patch_set":5,"id":"1a517632_7c313e2e","line":150,"range":{"start_line":150,"start_character":47,"end_line":150,"end_character":53},"updated":"2021-08-23 10:34:27.000000000","message":"accepts","commit_id":"6c32aa9b4a0069d901601cd67c55c9f21f0764fe"},{"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":"25db338bc7dd71fdd87e583496dc72df1617a14f","unresolved":false,"context_lines":[{"line_number":147,"context_line":"// used by this node to run public gRPC services (ie. the AAA service and any"},{"line_number":148,"context_line":"// other management/user services)."},{"line_number":149,"context_line":"//"},{"line_number":150,"context_line":"// SECURITY: The returned TransportCredentials accept _any_ client certificate"},{"line_number":151,"context_line":"// served by the client and do not perform any verification. The gRPC service"},{"line_number":152,"context_line":"// instance (via per-method checks or middleware) should perform user"},{"line_number":153,"context_line":"// authentication/authorization."}],"source_content_type":"text/x-go","patch_set":5,"id":"8b5a55be_95257e89","line":150,"range":{"start_line":150,"start_character":47,"end_line":150,"end_character":53},"in_reply_to":"1a517632_7c313e2e","updated":"2021-08-23 11:23:01.000000000","message":"Done","commit_id":"6c32aa9b4a0069d901601cd67c55c9f21f0764fe"},{"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":"d07dc68c313eb3a03523cec1f03d8c0c12d84a7d","unresolved":true,"context_lines":[{"line_number":148,"context_line":"// other management/user services)."},{"line_number":149,"context_line":"//"},{"line_number":150,"context_line":"// SECURITY: The returned TransportCredentials accept _any_ client certificate"},{"line_number":151,"context_line":"// served by the client and do not perform any verification. The gRPC service"},{"line_number":152,"context_line":"// instance (via per-method checks or middleware) should perform user"},{"line_number":153,"context_line":"// authentication/authorization."},{"line_number":154,"context_line":"func (nc *NodeCredentials) PublicGRPCServerCredentials() (credentials.TransportCredentials, error) {"}],"source_content_type":"text/x-go","patch_set":5,"id":"1c8cab26_5a8adddc","line":151,"range":{"start_line":151,"start_character":28,"end_line":151,"end_character":34},"updated":"2021-08-23 10:34:27.000000000","message":"does not","commit_id":"6c32aa9b4a0069d901601cd67c55c9f21f0764fe"},{"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":"25db338bc7dd71fdd87e583496dc72df1617a14f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"// other management/user services)."},{"line_number":149,"context_line":"//"},{"line_number":150,"context_line":"// SECURITY: The returned TransportCredentials accept _any_ client certificate"},{"line_number":151,"context_line":"// served by the client and do not perform any verification. The gRPC service"},{"line_number":152,"context_line":"// instance (via per-method checks or middleware) should perform user"},{"line_number":153,"context_line":"// authentication/authorization."},{"line_number":154,"context_line":"func (nc *NodeCredentials) PublicGRPCServerCredentials() (credentials.TransportCredentials, error) {"}],"source_content_type":"text/x-go","patch_set":5,"id":"7b728d94_f445a15b","line":151,"range":{"start_line":151,"start_character":28,"end_line":151,"end_character":34},"in_reply_to":"1c8cab26_5a8adddc","updated":"2021-08-23 11:23:01.000000000","message":"Done","commit_id":"6c32aa9b4a0069d901601cd67c55c9f21f0764fe"},{"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":"d07dc68c313eb3a03523cec1f03d8c0c12d84a7d","unresolved":true,"context_lines":[{"line_number":159,"context_line":"\tcertificate :\u003d pem.EncodeToMemory(\u0026pem.Block{Type: \"CERTIFICATE\", Bytes: nc.node.Raw})"},{"line_number":160,"context_line":"\tkey :\u003d pem.EncodeToMemory(\u0026pem.Block{Type: \"PRIVATE KEY\", Bytes: keyBytes})"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"\ttlsCert, err :\u003d tls.X509KeyPair(certificate, key)"},{"line_number":163,"context_line":"\tif err !\u003d nil {"},{"line_number":164,"context_line":"\t\treturn nil, fmt.Errorf(\"when building TLS credentials: %w\", err)"},{"line_number":165,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":5,"id":"003fe174_737a0d1c","line":162,"updated":"2021-08-23 10:34:27.000000000","message":"How about `tlsCert :\u003d tls.Certificate{Certificate: []byte{nc.node.Raw}, PrivateKey: nc.private}`? We already have everything in the appropriate format.","commit_id":"6c32aa9b4a0069d901601cd67c55c9f21f0764fe"},{"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":"25db338bc7dd71fdd87e583496dc72df1617a14f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"\tcertificate :\u003d pem.EncodeToMemory(\u0026pem.Block{Type: \"CERTIFICATE\", Bytes: nc.node.Raw})"},{"line_number":160,"context_line":"\tkey :\u003d pem.EncodeToMemory(\u0026pem.Block{Type: \"PRIVATE KEY\", Bytes: keyBytes})"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"\ttlsCert, err :\u003d tls.X509KeyPair(certificate, key)"},{"line_number":163,"context_line":"\tif err !\u003d nil {"},{"line_number":164,"context_line":"\t\treturn nil, fmt.Errorf(\"when building TLS credentials: %w\", err)"},{"line_number":165,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":5,"id":"7bf5c6fd_80a7fe23","line":162,"in_reply_to":"003fe174_737a0d1c","updated":"2021-08-23 11:23:01.000000000","message":"Oh yeah, much better, I was looking for something like this.","commit_id":"6c32aa9b4a0069d901601cd67c55c9f21f0764fe"}]}
