)]}'
{"metropolis/cli/metroctl/context.go":[{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":true,"context_lines":[{"line_number":6,"context_line":"\t\"os/signal\""},{"line_number":7,"context_line":")"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"// cliContext returns a context usable in a command line utility. It inherits"},{"line_number":10,"context_line":"// from a background context and is cancelled when it receives a SIGINT."},{"line_number":11,"context_line":"func cliContext() context.Context {"},{"line_number":12,"context_line":"\tctx :\u003d context.Background()"}],"source_content_type":"text/x-go","patch_set":2,"id":"4c9c2420_24512f96","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":77},"updated":"2021-12-14 11:06:04.000000000","message":"This is so useful that I\u0027d actually put it somewhere in metropolis/cli/pkg or even metropolis/pkg.","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"f5b72c18198ba0c1cf1de3901ae6021f55bff651","unresolved":false,"context_lines":[{"line_number":6,"context_line":"\t\"os/signal\""},{"line_number":7,"context_line":")"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"// cliContext returns a context usable in a command line utility. It inherits"},{"line_number":10,"context_line":"// from a background context and is cancelled when it receives a SIGINT."},{"line_number":11,"context_line":"func cliContext() context.Context {"},{"line_number":12,"context_line":"\tctx :\u003d context.Background()"}],"source_content_type":"text/x-go","patch_set":2,"id":"469bf848_d0d8ad77","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":77},"in_reply_to":"4c9c2420_24512f96","updated":"2021-12-15 17:48:12.000000000","message":"Done","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"// cliContext returns a context usable in a command line utility. It inherits"},{"line_number":10,"context_line":"// from a background context and is cancelled when it receives a SIGINT."},{"line_number":11,"context_line":"func cliContext() context.Context {"},{"line_number":12,"context_line":"\tctx :\u003d context.Background()"},{"line_number":13,"context_line":"\tctx, cancel :\u003d context.WithCancel(ctx)"},{"line_number":14,"context_line":"\tc :\u003d make(chan os.Signal, 1)"}],"source_content_type":"text/x-go","patch_set":2,"id":"51f50068_c7cd8f2c","line":11,"range":{"start_line":11,"start_character":15,"end_line":11,"end_character":17},"updated":"2021-12-14 11:06:04.000000000","message":"If you\u0027re going to export this as a library as above, make this take a parent context instead of conjuring up a new one.","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"f5b72c18198ba0c1cf1de3901ae6021f55bff651","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"// cliContext returns a context usable in a command line utility. It inherits"},{"line_number":10,"context_line":"// from a background context and is cancelled when it receives a SIGINT."},{"line_number":11,"context_line":"func cliContext() context.Context {"},{"line_number":12,"context_line":"\tctx :\u003d context.Background()"},{"line_number":13,"context_line":"\tctx, cancel :\u003d context.WithCancel(ctx)"},{"line_number":14,"context_line":"\tc :\u003d make(chan os.Signal, 1)"}],"source_content_type":"text/x-go","patch_set":2,"id":"3ac8ebb8_75592485","line":11,"range":{"start_line":11,"start_character":15,"end_line":11,"end_character":17},"in_reply_to":"51f50068_c7cd8f2c","updated":"2021-12-15 17:48:12.000000000","message":"Done","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":true,"context_lines":[{"line_number":11,"context_line":"func cliContext() context.Context {"},{"line_number":12,"context_line":"\tctx :\u003d context.Background()"},{"line_number":13,"context_line":"\tctx, cancel :\u003d context.WithCancel(ctx)"},{"line_number":14,"context_line":"\tc :\u003d make(chan os.Signal, 1)"},{"line_number":15,"context_line":"\tsignal.Notify(c, os.Interrupt)"},{"line_number":16,"context_line":"\tgo func() {"},{"line_number":17,"context_line":"\t\t\u003c-c"}],"source_content_type":"text/x-go","patch_set":2,"id":"e296f5cc_09493953","line":14,"range":{"start_line":14,"start_character":25,"end_line":14,"end_character":28},"updated":"2021-12-14 11:06:04.000000000","message":"Does this need to be buffered?","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"f5b72c18198ba0c1cf1de3901ae6021f55bff651","unresolved":false,"context_lines":[{"line_number":11,"context_line":"func cliContext() context.Context {"},{"line_number":12,"context_line":"\tctx :\u003d context.Background()"},{"line_number":13,"context_line":"\tctx, cancel :\u003d context.WithCancel(ctx)"},{"line_number":14,"context_line":"\tc :\u003d make(chan os.Signal, 1)"},{"line_number":15,"context_line":"\tsignal.Notify(c, os.Interrupt)"},{"line_number":16,"context_line":"\tgo func() {"},{"line_number":17,"context_line":"\t\t\u003c-c"}],"source_content_type":"text/x-go","patch_set":2,"id":"f0b43474_a7b9146f","line":14,"range":{"start_line":14,"start_character":25,"end_line":14,"end_character":28},"in_reply_to":"e296f5cc_09493953","updated":"2021-12-15 17:48:12.000000000","message":"Yes. From the signal.Notify documentation:\n\u003e Package signal will not block sending to c: the caller must ensure that c has sufficient buffer space to keep up with the expected signal rate. For a channel used for notification of just one signal value, a buffer of size 1 is sufficient.","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"}],"metropolis/cli/metroctl/takeownership.go":[{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"\t\"github.com/adrg/xdg\""},{"line_number":13,"context_line":"\t\"github.com/spf13/cobra\""},{"line_number":14,"context_line":"\tapb \"source.monogon.dev/metropolis/proto/api\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\t\"source.monogon.dev/metropolis/node\""},{"line_number":17,"context_line":"\t\"source.monogon.dev/metropolis/node/core/rpc\""}],"source_content_type":"text/x-go","patch_set":2,"id":"98104e3e_c384d120","line":14,"updated":"2021-12-14 11:06:04.000000000","message":"nit: group source.monogon.dev imports together.","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"f5b72c18198ba0c1cf1de3901ae6021f55bff651","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"\t\"github.com/adrg/xdg\""},{"line_number":13,"context_line":"\t\"github.com/spf13/cobra\""},{"line_number":14,"context_line":"\tapb \"source.monogon.dev/metropolis/proto/api\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\t\"source.monogon.dev/metropolis/node\""},{"line_number":17,"context_line":"\t\"source.monogon.dev/metropolis/node/core/rpc\""}],"source_content_type":"text/x-go","patch_set":2,"id":"8e92bb06_c512715c","line":14,"in_reply_to":"98104e3e_c384d120","updated":"2021-12-15 17:48:12.000000000","message":"Done","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":false,"context_lines":[{"line_number":18,"context_line":")"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"var takeownershipCommand \u003d \u0026cobra.Command{"},{"line_number":21,"context_line":"\tUse:   \"takeownership \u003cnode-addr\u003e\","},{"line_number":22,"context_line":"\tShort: \"Takes ownership of a new Metropolis cluster\","},{"line_number":23,"context_line":"\tLong: `This takes ownership of a new Metropolis cluster by asking the new"},{"line_number":24,"context_line":"cluster to issue an owner certificate to for the owner key generated by a"}],"source_content_type":"text/x-go","patch_set":2,"id":"00ee80d1_847db125","line":21,"range":{"start_line":21,"start_character":9,"end_line":21,"end_character":22},"updated":"2021-12-14 11:06:04.000000000","message":"Hmm.\n\n    Use: \"seize \u003cnode-addr\u003e\",\n    Short: \"Seizes the means of production\",\n\nJust kidding... unless? 👉👈","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":true,"context_lines":[{"line_number":48,"context_line":"\t}"},{"line_number":49,"context_line":"\townerPrivateKey :\u003d ed25519.PrivateKey(block.Bytes)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"\tclient, err :\u003d rpc.NewEphemeralClient(net.JoinHostPort(args[0], strconv.Itoa(int(node.CuratorServicePort))), ownerPrivateKey, nil)"},{"line_number":52,"context_line":"\tif err !\u003d nil {"},{"line_number":53,"context_line":"\t\tlog.Fatalf(\"Failed to create client to given node address: %v\", err)"},{"line_number":54,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"accf074d_ea6a3c21","line":51,"range":{"start_line":51,"start_character":78,"end_line":51,"end_character":106},"updated":"2021-12-14 11:06:04.000000000","message":"I hate that I also have to keep doing this. If you feel like it, maybe add a .Port() method to the type that returns an int, and .PortString() that returns a string :). Otherwise I\u0027ll get to it, as it\u0027s been bugging me so much.","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":true,"context_lines":[{"line_number":48,"context_line":"\t}"},{"line_number":49,"context_line":"\townerPrivateKey :\u003d ed25519.PrivateKey(block.Bytes)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"\tclient, err :\u003d rpc.NewEphemeralClient(net.JoinHostPort(args[0], strconv.Itoa(int(node.CuratorServicePort))), ownerPrivateKey, nil)"},{"line_number":52,"context_line":"\tif err !\u003d nil {"},{"line_number":53,"context_line":"\t\tlog.Fatalf(\"Failed to create client to given node address: %v\", err)"},{"line_number":54,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"6bccf974_06b56293","line":51,"range":{"start_line":51,"start_character":1,"end_line":51,"end_character":7},"updated":"2021-12-14 11:06:04.000000000","message":"defer client.Close()","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"f5b72c18198ba0c1cf1de3901ae6021f55bff651","unresolved":false,"context_lines":[{"line_number":48,"context_line":"\t}"},{"line_number":49,"context_line":"\townerPrivateKey :\u003d ed25519.PrivateKey(block.Bytes)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"\tclient, err :\u003d rpc.NewEphemeralClient(net.JoinHostPort(args[0], strconv.Itoa(int(node.CuratorServicePort))), ownerPrivateKey, nil)"},{"line_number":52,"context_line":"\tif err !\u003d nil {"},{"line_number":53,"context_line":"\t\tlog.Fatalf(\"Failed to create client to given node address: %v\", err)"},{"line_number":54,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"cf9261a7_de0915de","line":51,"range":{"start_line":51,"start_character":1,"end_line":51,"end_character":7},"in_reply_to":"6bccf974_06b56293","updated":"2021-12-15 17:48:12.000000000","message":"Done","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"f5b72c18198ba0c1cf1de3901ae6021f55bff651","unresolved":false,"context_lines":[{"line_number":48,"context_line":"\t}"},{"line_number":49,"context_line":"\townerPrivateKey :\u003d ed25519.PrivateKey(block.Bytes)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"\tclient, err :\u003d rpc.NewEphemeralClient(net.JoinHostPort(args[0], strconv.Itoa(int(node.CuratorServicePort))), ownerPrivateKey, nil)"},{"line_number":52,"context_line":"\tif err !\u003d nil {"},{"line_number":53,"context_line":"\t\tlog.Fatalf(\"Failed to create client to given node address: %v\", err)"},{"line_number":54,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"dbed8b0b_f2da1340","line":51,"range":{"start_line":51,"start_character":78,"end_line":51,"end_character":106},"in_reply_to":"accf074d_ea6a3c21","updated":"2021-12-15 17:48:12.000000000","message":"Done","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"63869e5c1499377553cbe3f2d95901f637c6cf22","unresolved":true,"context_lines":[{"line_number":62,"context_line":"\t\tBytes: ownerCert.Certificate[0],"},{"line_number":63,"context_line":"\t}"},{"line_number":64,"context_line":"\tif err :\u003d os.WriteFile(filepath.Join(xdg.ConfigHome, \"metroctl/owner.pem\"), pem.EncodeToMemory(\u0026ownerCertPEM), 0644); err !\u003d nil {"},{"line_number":65,"context_line":"\t\tlog.Fatalf(\"Failed to store retrieved owner certificate: %v\", err)"},{"line_number":66,"context_line":"\t}"},{"line_number":67,"context_line":"\tlog.Print(\"Successfully retrieved owner credentials! You now own this cluster.\")"},{"line_number":68,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":2,"id":"7898cb8b_820b4f25","line":65,"range":{"start_line":65,"start_character":2,"end_line":65,"end_character":68},"updated":"2021-12-14 11:06:04.000000000","message":"Aaaand this is where we lose control of the cluster forever when that happens.\n\nI should probably slightly change the design of the ownership logic so that you also have to then perform a call using the newly emitted key to finish the process. For now, maybe at least warn the use that they\u0027re screwed :/.","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"},{"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":"f5b72c18198ba0c1cf1de3901ae6021f55bff651","unresolved":false,"context_lines":[{"line_number":62,"context_line":"\t\tBytes: ownerCert.Certificate[0],"},{"line_number":63,"context_line":"\t}"},{"line_number":64,"context_line":"\tif err :\u003d os.WriteFile(filepath.Join(xdg.ConfigHome, \"metroctl/owner.pem\"), pem.EncodeToMemory(\u0026ownerCertPEM), 0644); err !\u003d nil {"},{"line_number":65,"context_line":"\t\tlog.Fatalf(\"Failed to store retrieved owner certificate: %v\", err)"},{"line_number":66,"context_line":"\t}"},{"line_number":67,"context_line":"\tlog.Print(\"Successfully retrieved owner credentials! You now own this cluster.\")"},{"line_number":68,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":2,"id":"385ba384_cde2e9cf","line":65,"range":{"start_line":65,"start_character":2,"end_line":65,"end_character":68},"in_reply_to":"7898cb8b_820b4f25","updated":"2021-12-15 17:48:12.000000000","message":"Done","commit_id":"1321b132678df443da2d2e7fb7ecd711855e3091"}]}
