)]}'
{"metropolis/node/core/rpc/client.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":"9f772074190e099d48ae4e766ee0b0ee769d6c6a","unresolved":true,"context_lines":[{"line_number":17,"context_line":"\tapb \"source.monogon.dev/metropolis/proto/api\""},{"line_number":18,"context_line":")"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"// NewEphemeralClient dials a cluster\u0027s curator service using just a"},{"line_number":21,"context_line":"// self-signed certificate and can be used to then escrow real cluster"},{"line_number":22,"context_line":"// credentials for the owner."},{"line_number":23,"context_line":"//"}],"source_content_type":"text/x-go","patch_set":5,"id":"c134bc0c_99833167","line":20,"range":{"start_line":20,"start_character":30,"end_line":20,"end_character":55},"updated":"2021-09-01 16:00:06.000000000","message":"\u0027cluster services\u0027 looks more consistent to me?","commit_id":"8b529b678964af68164d1d838567dd56d8f27ef8"},{"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":"afbb56355ddf054a0bd77653301cd957650b5483","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\tapb \"source.monogon.dev/metropolis/proto/api\""},{"line_number":18,"context_line":")"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"// NewEphemeralClient dials a cluster\u0027s curator service using just a"},{"line_number":21,"context_line":"// self-signed certificate and can be used to then escrow real cluster"},{"line_number":22,"context_line":"// credentials for the owner."},{"line_number":23,"context_line":"//"}],"source_content_type":"text/x-go","patch_set":5,"id":"9fd36dcc_832754b3","line":20,"range":{"start_line":20,"start_character":30,"end_line":20,"end_character":55},"in_reply_to":"c134bc0c_99833167","updated":"2021-09-02 16:45:12.000000000","message":"Done","commit_id":"8b529b678964af68164d1d838567dd56d8f27ef8"},{"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":"9f772074190e099d48ae4e766ee0b0ee769d6c6a","unresolved":true,"context_lines":[{"line_number":103,"context_line":"// public/private key set in the clusters NodeParameters.ClusterBoostrap."},{"line_number":104,"context_line":"//"},{"line_number":105,"context_line":"// The retrieved certificate can be used to dial further cluster RPCs."},{"line_number":106,"context_line":"func RetrieveOwnerCertificate(ctx context.Context, conn *grpc.ClientConn, private ed25519.PrivateKey) (*tls.Certificate, error) {"},{"line_number":107,"context_line":"\taaa :\u003d apb.NewAAAClient(conn)"},{"line_number":108,"context_line":"\tsrv, err :\u003d aaa.Escrow(ctx)"},{"line_number":109,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":5,"id":"30244e61_7ceb4ffe","line":106,"range":{"start_line":106,"start_character":57,"end_line":106,"end_character":72},"updated":"2021-09-01 16:00:06.000000000","message":"I\u0027m a bit weary of this being essentially untyped. Passing in an AAAClient explicitly would make this better-typed and more explicit (even though it is already documented). It technically shifts a bit more code to the call site, but considering NewAAAClient doesn\u0027t even return an error it could be inlined.","commit_id":"8b529b678964af68164d1d838567dd56d8f27ef8"},{"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":"afbb56355ddf054a0bd77653301cd957650b5483","unresolved":false,"context_lines":[{"line_number":103,"context_line":"// public/private key set in the clusters NodeParameters.ClusterBoostrap."},{"line_number":104,"context_line":"//"},{"line_number":105,"context_line":"// The retrieved certificate can be used to dial further cluster RPCs."},{"line_number":106,"context_line":"func RetrieveOwnerCertificate(ctx context.Context, conn *grpc.ClientConn, private ed25519.PrivateKey) (*tls.Certificate, error) {"},{"line_number":107,"context_line":"\taaa :\u003d apb.NewAAAClient(conn)"},{"line_number":108,"context_line":"\tsrv, err :\u003d aaa.Escrow(ctx)"},{"line_number":109,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":5,"id":"5233afa1_a7856dd1","line":106,"range":{"start_line":106,"start_character":57,"end_line":106,"end_character":72},"in_reply_to":"30244e61_7ceb4ffe","updated":"2021-09-02 16:45:12.000000000","message":"Fair enough.","commit_id":"8b529b678964af68164d1d838567dd56d8f27ef8"}]}
