Skip to content

Commit

Permalink
feat(cmd/network/show): Add cmd for fetching compute committees
Browse files Browse the repository at this point in the history
  • Loading branch information
amela committed May 10, 2024
1 parent 750f8d6 commit 9378185
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 1 deletion.
44 changes: 43 additions & 1 deletion cmd/network/show.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
consensusPretty "github.com/oasisprotocol/oasis-core/go/common/prettyprint"
"github.com/oasisprotocol/oasis-core/go/consensus/api/transaction"
registry "github.com/oasisprotocol/oasis-core/go/registry/api"
roothash "github.com/oasisprotocol/oasis-core/go/roothash/api"
staking "github.com/oasisprotocol/oasis-core/go/staking/api"
"github.com/oasisprotocol/oasis-core/go/staking/api/token"
"github.com/oasisprotocol/oasis-sdk/client-sdk/go/connection"
Expand All @@ -33,10 +34,11 @@ const (
selValidators
selNativeToken
selGasCosts
selCommittee
)

var showCmd = &cobra.Command{
Use: "show { <id> | entities | nodes | paratimes | validators | native-token | gas-costs }",
Use: "show { <id> | entities | nodes | paratimes | validators | native-token | gas-costs | committee }",
Short: "Show network properties",
Long: "Show network property stored in the registry, scheduler, genesis document or chain. Query by ID, hash or a specified kind.",
Args: cobra.ExactArgs(1),
Expand All @@ -56,6 +58,11 @@ var showCmd = &cobra.Command{
consensusConn := conn.Consensus()
registryConn := consensusConn.Registry()

ctrlConn := conn.Control()
nodeStatus, err := ctrlConn.GetStatus(ctx)
cobra.CheckErr(err)
roothashConn := consensusConn.RootHash()

// Figure out the height to use if "latest".
height, err := common.GetActualHeight(
ctx,
Expand Down Expand Up @@ -195,6 +202,39 @@ var showCmd = &cobra.Command{
fmt.Println()
}
return
case selCommittee:
for _, runtime := range nodeStatus.Runtimes {
descriptor := runtime.Descriptor
if descriptor != nil {
runtimeID := descriptor.ID
paratimeName := getParatimeName(cfg, runtimeID.String())

fmt.Println("=== COMMITTEE ===")
fmt.Printf("Paratime: %s(%s)\n", paratimeName, runtimeID)
fmt.Printf("Height: %d\n", height)
fmt.Println()
state, err := roothashConn.GetRuntimeState(ctx, &roothash.RuntimeRequest{
Height: height,
RuntimeID: runtimeID,
})
cobra.CheckErr(err)

for i, member := range state.Committee.Members {
nodeQuery := &registry.IDQuery{
Height: height,
ID: member.PublicKey,
}

node, err := consensusConn.Registry().GetNode(ctx, nodeQuery)
cobra.CheckErr(err)

fmt.Printf("%2d, entityID: %s, nodeID: %s, role: %s\n", i, node.EntityID, member.PublicKey.String(), member.Role.String())
}
}
fmt.Println()
}
return

default:
// Should never happen.
}
Expand Down Expand Up @@ -242,6 +282,8 @@ func selectorFromString(s string) propertySelector {
return selNativeToken
case "gas-costs":
return selGasCosts
case "committee":
return selCommittee
}
return selInvalid
}
Expand Down
8 changes: 8 additions & 0 deletions docs/network.md
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,14 @@ Above, we can see that the [maximum amount of gas](./account.md#gas-limit) our
transaction can spend must be set to at least 1000 **gas units**, otherwise it
will be rejected by the network.

#### `committee` {#committee}

Shows runtime committees.

![code shell](../examples/network-show/committee.in.static)

![code](../examples/network-show/committee.out.static)

#### `<id>` {#show-id}

The provided ID can be one of the following:
Expand Down
1 change: 1 addition & 0 deletions examples/network-show/committee.in.static
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
oasis network show committee
96 changes: 96 additions & 0 deletions examples/network-show/committee.out.static
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
=== COMMITTEE ===
Paratime: cipher(000000000000000000000000000000000000000000000000e199119c992377cb)
Height: 19183812

0, entityID: 6reBpCKHsqMX1Y26o3p5V+95in5ka16I969CWyiRudY=, nodeID: J4KhkfzhgQA+IibrTqq9Uh19COxoOy+5fWvtvOfIo9w=, role: worker
1, entityID: hNBVs2ay1IWvufQwX0TbYA6X4ocKaMpzpyaMTHggi6Q=, nodeID: bKvnByvx8qwF41EqOG6wdmatGzz/qT2nbHC8i8VM65k=, role: worker
2, entityID: p1VsfSsedbKn/5GzkPsr15XD+/AOIfbPda1/2yT84N4=, nodeID: a/BCcmjawMU5EHQk+mGSb1GMFpU4YCze3IyOziEWihY=, role: worker
3, entityID: AX8zJsi0DnrrdwCi/8JJptXSy62kZgQcAYKlCYD4oN8=, nodeID: BqCqG8wuMVdnONN5bysITf0mYQD5FD+TEF5wrJttsSQ=, role: worker
4, entityID: T5k7PtOR01oZrdnZveDpO9AFpMUhEREZk7WSSfm8Gtg=, nodeID: RT7JKF5T1hlKXTYZsp4SL07f4IHG6O0SQppf8wnfr+Y=, role: worker
5, entityID: g9UqzvW6JvfKrflRKbCPBpm41rH/O+4apCK+KkD2tG4=, nodeID: 4wqhqp5wDAfvQxNZUUSDmM2fVYrkxKq/tqjnnCe72Uw=, role: backup-worker
6, entityID: N+3/m12DoAqzFS0yF3R/kXSkSj7pZnWhq8nRCo/MKwk=, nodeID: 82isbQ3iZxvzgBGhk9kqOuyO87h6VXkXma8dDdBkHCM=, role: backup-worker
7, entityID: iGs5cCGos/I5KQv82MwgGMNENaxy3bhuWdFXtINcu0U=, nodeID: HH/jnBO0AqHocNg4aS7MiMjiKmta1VP0ceRc0iILMAw=, role: backup-worker
8, entityID: p1VsfSsedbKn/5GzkPsr15XD+/AOIfbPda1/2yT84N4=, nodeID: a/BCcmjawMU5EHQk+mGSb1GMFpU4YCze3IyOziEWihY=, role: backup-worker
9, entityID: 1YeMK0NAZtE1ZK8u6KWddkKGZoD5VLfG9EAZI3b8HzE=, nodeID: /dBEDGDBCu6TF5w9crktZ9aloTBpOGGSa6A8uVNunAo=, role: backup-worker
10, entityID: 4gbOOU09bcyvM53Up1lTnP+sLb0feniJu0OcUUPCBSs=, nodeID: +zVbgQqOdY90Z2NQKXFByNT0OwLxj/Ho4j4qT5u2yKM=, role: backup-worker
11, entityID: bTok0el8GbmUzTAAgcQ78uww/TsgeWwXpM3N2S49qBQ=, nodeID: LI48Ol5Is045ijOAjiCiKFHKOyzwuGL6mMTr3F5cMdM=, role: backup-worker
12, entityID: 7nCBfl1vRS4kn7G2yJZeZdwE8OFA4avUphWdCRrFhJM=, nodeID: 5KIv4/zhPGYQIY3YCmjQjGbZ6TVShxEgGzU++43P+t4=, role: backup-worker
13, entityID: WXs7ElBlm30la2fG4oZDpubeFu5sKkjDVeflWo+YuIA=, nodeID: ST2B7aeKSspiFNy325rIh8alQIRVCDyZ5t8f2NKN3PU=, role: backup-worker
14, entityID: RMa2ER0wvraR+4u5QOGOrRTwmMVOYNcOot7sFppPRP0=, nodeID: k0g6YN7CFSgjaPU1EjVWXhzPVmEset+3sQ3c3NJ8Ys4=, role: backup-worker
15, entityID: T5k7PtOR01oZrdnZveDpO9AFpMUhEREZk7WSSfm8Gtg=, nodeID: RT7JKF5T1hlKXTYZsp4SL07f4IHG6O0SQppf8wnfr+Y=, role: backup-worker

=== COMMITTEE ===
Paratime: emerald(000000000000000000000000000000000000000000000000e2eaa99fc008f87f)
Height: 19183812

0, entityID: 7nCBfl1vRS4kn7G2yJZeZdwE8OFA4avUphWdCRrFhJM=, nodeID: 3i26uutrxeIk3rK00gzlA+aHME/+k4t4PtOGwdrqPt8=, role: worker
1, entityID: PrCDIA3uyoLqNOZJ1PrRWdyviFn6K0PWFz91qQ9QyTw=, nodeID: o8p0FlVg1Wlv+ZLKojWS7c0P4xZHklFt9frLW4B4QlE=, role: worker
2, entityID: L4OY/0mNEduAS9z6jh2xLp72b8gZURgcrd76AOiRIXk=, nodeID: fGqOEIbBxaM2YmMcKq4PbpUOd9+s3TcS4AxaTChGuz0=, role: worker
3, entityID: 9+lM5vQ1g+cVzjaNM78gxw1yUegVj57tHDbpN7DKIvw=, nodeID: 6VWWzDQRONki6x2z5XAWH2+a5zZ04ljaw6aGLbnEAJ0=, role: worker
4, entityID: AX8zJsi0DnrrdwCi/8JJptXSy62kZgQcAYKlCYD4oN8=, nodeID: BqCqG8wuMVdnONN5bysITf0mYQD5FD+TEF5wrJttsSQ=, role: worker
5, entityID: tcon38rBr3dHmURuXOTUFpDPKwE4eOU82F121rX9esE=, nodeID: ZbybO0JMEkwg1+LdEUTh8Vmx0d9u7RUZHZnD73gWpIs=, role: worker
6, entityID: /Foi5kZdBc70HPmlguvY6AzBILNrNiPDgKQLOITuIEI=, nodeID: +KKK2dlxTHDcRpjdn6JJLk4gy+33Au0ihh8y2r5VA4Y=, role: worker
7, entityID: XSQLBoubhOq/X86vKIj4Xzouo1Fhe39+kLF/2PDgKpM=, nodeID: r5d6MxZK8vMb1P5y5NSzi4uiofaUk3rfAwvYw6sV3ms=, role: worker
8, entityID: FDqRmM1FyhaGas+lquWmGAKgMsU2rj7UESAlnOHtxco=, nodeID: qnRAoObwndP/P9otTzQ/9Z2+vmSQ1Pch7G4tGBSTxCo=, role: worker
9, entityID: iNKCs9v4NJCuApCLPD4bRBoqTs/5DBxS0hourBkhxQo=, nodeID: wUwFhNRaqtIxt+rilTsggYm4Thwk8e6lxAUmWtYAyvY=, role: worker
10, entityID: TWLcdgEfahwyFPTC7nN3rZacPO2aXlLfZIDt7uXbzEI=, nodeID: 5uD3zbTZGhivYt1ZQw/Yr/Bcg2t6zEdyR9Ogg5ipkho=, role: backup-worker
11, entityID: aiTgGyYB2l4uAMG93Ajq5S4EXPIRkYDg1ICLjWD45Ck=, nodeID: pGkBYly79y2gJUEOau8XN04ErcfwrObO+W5+CYXJW5k=, role: backup-worker
12, entityID: /AI8TCLc1a5U98yBoxOji5bheVT1pc75v+tGDdM6se4=, nodeID: wdxW8Bk1hZvQANQHRCO8MzbgRsdC5c7mpLjsNYLM82I=, role: backup-worker
13, entityID: ko5wr5SMqhKb+P1kimM1EF/T4SqvW/WjSOwPHigQl+k=, nodeID: aJFHeID4Q7qUfMa42dRwaa9PQrZ/cVDiE3WNt4bQjo0=, role: backup-worker
14, entityID: 7nCBfl1vRS4kn7G2yJZeZdwE8OFA4avUphWdCRrFhJM=, nodeID: 3i26uutrxeIk3rK00gzlA+aHME/+k4t4PtOGwdrqPt8=, role: backup-worker
15, entityID: RMa2ER0wvraR+4u5QOGOrRTwmMVOYNcOot7sFppPRP0=, nodeID: 4mcgJKfEa6RqWh9NqSJ+/yfs6X8dU0tG1dI1L0lFNzM=, role: backup-worker
16, entityID: wCGlLKUiTNr9Ba49YA6dDuqm9rdtPcKKsKzHqMBn+rc=, nodeID: vlG7mUtP7s2PsnARfyrI3mW/q4pcqRi3SHk2GxmQ2NM=, role: backup-worker
17, entityID: PrCDIA3uyoLqNOZJ1PrRWdyviFn6K0PWFz91qQ9QyTw=, nodeID: o8p0FlVg1Wlv+ZLKojWS7c0P4xZHklFt9frLW4B4QlE=, role: backup-worker
18, entityID: F5eduX4m4O/ot3UcFs3iQk1ZPUuG43kuxGI9sZz95uU=, nodeID: 626SgurEHc2EeeJ/nvxV/YNM1PrIkaCyeHB6DBsimXg=, role: backup-worker
19, entityID: 1JttHp0rBBBHDOpPl8fAiLTcN9tUzxJGjk7llFcvhZQ=, nodeID: dN/aIe69HWFUHtOy/oqWdp1jw4fzOIljXLbMI79ilTo=, role: backup-worker
20, entityID: p1VsfSsedbKn/5GzkPsr15XD+/AOIfbPda1/2yT84N4=, nodeID: S2eoEMq6Qzms5Yd/fIOhSEacHp7Pym0BfgBEmsijEDw=, role: backup-worker
21, entityID: XSQLBoubhOq/X86vKIj4Xzouo1Fhe39+kLF/2PDgKpM=, nodeID: r5d6MxZK8vMb1P5y5NSzi4uiofaUk3rfAwvYw6sV3ms=, role: backup-worker
22, entityID: LaKJUKndAqH57DVExspTjdRTRNGJOSqArzM0pm8REZw=, nodeID: MDRdg2CAm8zmal3EJgzZJAJcj5ouKiSxu17o2pUuog0=, role: backup-worker
23, entityID: UkwjS1YvEfHx9b6MMT5Q1WvCY3aWn2lxRDsB/Pw+zGk=, nodeID: CdkWAAnsdYg0g6yl90Eiqdwqer6NK9yIxWWvPR3fwD8=, role: backup-worker
24, entityID: oOVxTw2hEYgYvSrTjjKODCt/Soy3OLcQV9YBy/PF/xY=, nodeID: jVPUq8aUDKe9jawIs7wPB4NBml27ft5kICIY7SBh/yQ=, role: backup-worker
25, entityID: 9+lM5vQ1g+cVzjaNM78gxw1yUegVj57tHDbpN7DKIvw=, nodeID: 6VWWzDQRONki6x2z5XAWH2+a5zZ04ljaw6aGLbnEAJ0=, role: backup-worker
26, entityID: RZowTXmfT+b6H6Vuz97VECIy2cq8tytTilv8AxbtvO8=, nodeID: QZIlX6n68y2iGuLleKPd+9bXxOs0LUhfcRDJqiJiw7s=, role: backup-worker
27, entityID: hNBVs2ay1IWvufQwX0TbYA6X4ocKaMpzpyaMTHggi6Q=, nodeID: bKvnByvx8qwF41EqOG6wdmatGzz/qT2nbHC8i8VM65k=, role: backup-worker
28, entityID: L4OY/0mNEduAS9z6jh2xLp72b8gZURgcrd76AOiRIXk=, nodeID: fGqOEIbBxaM2YmMcKq4PbpUOd9+s3TcS4AxaTChGuz0=, role: backup-worker
29, entityID: 21+iPu/omYBN7X5cUY4QnD4b9VVuAiW/u8uABqt2VjM=, nodeID: x8DFPc8E9BZxLJKbh51xj41es3R53AkJERfMEyRCrbk=, role: backup-worker
30, entityID: iGs5cCGos/I5KQv82MwgGMNENaxy3bhuWdFXtINcu0U=, nodeID: B6dFsY7qeLAL9PaWPqsMUrZGA9cxH/Tpy9BqXfyGSII=, role: backup-worker
31, entityID: uxSkvFu6x4MIYV+M1VrDu3m/qbADs/1Ae3mWAcEmnaQ=, nodeID: 0qOmNfZvPDnjyzPU/97x1FWsl0d3UsImNiSNXd7lE/0=, role: backup-worker
32, entityID: a4OjOCh3W8gDV15t2a1VQ2Nz7PABO262435/89jo8pE=, nodeID: MOf3jVciWclSp+gzqMcHa8cnKyodVZVMS6puYQNnfS4=, role: backup-worker
33, entityID: kupW3Pt0XMeERSkdDWyZMU4oZrk0wGysVXVyqX3rylc=, nodeID: BZvhmvc1YZpXteI2nPhBDyC2jxi04MHEbKXB1DpTM1w=, role: backup-worker
34, entityID: WazI78lMcmjyCH5+5RKkkfOTUR+XheHIohlqMu+a9As=, nodeID: LuIdtuiEPLBJefXVieVruy4kf04jjp5CBJFWVes0ZuE=, role: backup-worker
35, entityID: 1aTTEfSIcVxsPS86uIA7rSD2Jmb+aIVj1grCEjyzlzQ=, nodeID: UkkubHbsH4ptdieTlL2qbki94Ff6xp5RNz08hIGx4ow=, role: backup-worker
36, entityID: BdSzNycR8Y3MdHooxU0vtOEPr3ZG9KD5p8wxHtvueUU=, nodeID: CZgE+WU9T8YpTnPRosJYFqos9S8W53jGQKeRrRxMeQc=, role: backup-worker
37, entityID: cgXH87+sYoe2mXsdDKWCyRvWZ8JqnVnxJkCq09LlBoI=, nodeID: 6ioksdd5uKtlNnPmCpu1NYohfamlb/QHiD8EhMuTbfw=, role: backup-worker
38, entityID: UDV5FoaIkssdSFWC4asZtxvsyagoyrIS5rPX8p/np2U=, nodeID: AQwpL6BZwWxh7A2xciTayuT4NjEG1DnGUpmVTR3eP7M=, role: backup-worker
39, entityID: T5k7PtOR01oZrdnZveDpO9AFpMUhEREZk7WSSfm8Gtg=, nodeID: 9IS980R5iPJ7J/YYqnNH+O7x80bggQFqBpPg4QQOUHE=, role: backup-worker

=== COMMITTEE ===
Paratime: sapphire(000000000000000000000000000000000000000000000000f80306c9858e7279)
Height: 19183812

0, entityID: J2nwlXuYEPNZ0mMH2Phg5RofbZzj65xDvQMNdy9Ji0E=, nodeID: ITrwEekdZNqXrEzvw3GT6Q3AtHDd51f19nD2nVU/f0c=, role: worker
1, entityID: kupW3Pt0XMeERSkdDWyZMU4oZrk0wGysVXVyqX3rylc=, nodeID: jLOqojA6c57BmepLlYN91hiYYRUZ2JjdwhF0xeb1asI=, role: worker
2, entityID: PrCDIA3uyoLqNOZJ1PrRWdyviFn6K0PWFz91qQ9QyTw=, nodeID: aUWd3B3JH+ixfplKiKKPhU+MQ866u246PT2LZd8MADI=, role: worker
3, entityID: hNBVs2ay1IWvufQwX0TbYA6X4ocKaMpzpyaMTHggi6Q=, nodeID: bKvnByvx8qwF41EqOG6wdmatGzz/qT2nbHC8i8VM65k=, role: worker
4, entityID: bTok0el8GbmUzTAAgcQ78uww/TsgeWwXpM3N2S49qBQ=, nodeID: LI48Ol5Is045ijOAjiCiKFHKOyzwuGL6mMTr3F5cMdM=, role: worker
5, entityID: aiTgGyYB2l4uAMG93Ajq5S4EXPIRkYDg1ICLjWD45Ck=, nodeID: V1e0MLFxqQo79+Y9HL8EBao8oPsifyyTHlOlhVh6XaY=, role: worker
6, entityID: zAhtGrpk1L3bBLaP5enm3natUTCoj7MEFryq9+MG4tE=, nodeID: PsfFUQrXqGoFtowWZcoc8ilh8xHP94LvNYHvqQHpw1E=, role: worker
7, entityID: cgXH87+sYoe2mXsdDKWCyRvWZ8JqnVnxJkCq09LlBoI=, nodeID: 6ioksdd5uKtlNnPmCpu1NYohfamlb/QHiD8EhMuTbfw=, role: worker
8, entityID: iGs5cCGos/I5KQv82MwgGMNENaxy3bhuWdFXtINcu0U=, nodeID: HH/jnBO0AqHocNg4aS7MiMjiKmta1VP0ceRc0iILMAw=, role: worker
9, entityID: ko5wr5SMqhKb+P1kimM1EF/T4SqvW/WjSOwPHigQl+k=, nodeID: aJFHeID4Q7qUfMa42dRwaa9PQrZ/cVDiE3WNt4bQjo0=, role: worker
10, entityID: 1YeMK0NAZtE1ZK8u6KWddkKGZoD5VLfG9EAZI3b8HzE=, nodeID: AySowGLXBs4izUmpeGHnYydnp4UMWH3x7Do0bX0bjqE=, role: backup-worker
11, entityID: 6reBpCKHsqMX1Y26o3p5V+95in5ka16I969CWyiRudY=, nodeID: oRD03RHqa9X1jAT9msAQJBSrC0B5bYaBJmxsTqLPos4=, role: backup-worker
12, entityID: WazI78lMcmjyCH5+5RKkkfOTUR+XheHIohlqMu+a9As=, nodeID: BNrjfCT5j7203ozOIsx0G6ORHptO/I4iR26g+eArw4g=, role: backup-worker
13, entityID: 6XvrCu3wqMKYc5a0d5UZzG7ZGeb3j//MzcqUMUHkMCk=, nodeID: C+AWG4iXz590kCdbO/DAb4sBZr+umjyp683ucmawdM4=, role: backup-worker
14, entityID: cgXH87+sYoe2mXsdDKWCyRvWZ8JqnVnxJkCq09LlBoI=, nodeID: 6ioksdd5uKtlNnPmCpu1NYohfamlb/QHiD8EhMuTbfw=, role: backup-worker
15, entityID: UDV5FoaIkssdSFWC4asZtxvsyagoyrIS5rPX8p/np2U=, nodeID: 86y1tHzH9GlxvS0Bneh5l2AUDXYO6VMrzx75JvJViNE=, role: backup-worker
16, entityID: a4OjOCh3W8gDV15t2a1VQ2Nz7PABO262435/89jo8pE=, nodeID: uA35AfxxCsr1HEJiQVj65V+uT5636CUxJua+0y5QcQw=, role: backup-worker
17, entityID: RMa2ER0wvraR+4u5QOGOrRTwmMVOYNcOot7sFppPRP0=, nodeID: DW4/7kVEumpZV1CmntaQBncSV36t6QoE0QwQd5pLIZU=, role: backup-worker
18, entityID: WXs7ElBlm30la2fG4oZDpubeFu5sKkjDVeflWo+YuIA=, nodeID: ST2B7aeKSspiFNy325rIh8alQIRVCDyZ5t8f2NKN3PU=, role: backup-worker
19, entityID: N+3/m12DoAqzFS0yF3R/kXSkSj7pZnWhq8nRCo/MKwk=, nodeID: 82isbQ3iZxvzgBGhk9kqOuyO87h6VXkXma8dDdBkHCM=, role: backup-worker
20, entityID: PrCDIA3uyoLqNOZJ1PrRWdyviFn6K0PWFz91qQ9QyTw=, nodeID: aUWd3B3JH+ixfplKiKKPhU+MQ866u246PT2LZd8MADI=, role: backup-worker
21, entityID: 7nCBfl1vRS4kn7G2yJZeZdwE8OFA4avUphWdCRrFhJM=, nodeID: drsZxbpqG5h+4tq/JKWqmoVGXmQUirVCjD8GLBuNj9M=, role: backup-worker
22, entityID: kupW3Pt0XMeERSkdDWyZMU4oZrk0wGysVXVyqX3rylc=, nodeID: jLOqojA6c57BmepLlYN91hiYYRUZ2JjdwhF0xeb1asI=, role: backup-worker
23, entityID: 9yOiPY3NnNMpEzB+6XS/OqahzFwwX8mFhmT2fvbxlVI=, nodeID: mIKW8IEDWZZxCRtDTvWQLpslvfUBwWxVAxLakwq25C8=, role: backup-worker
24, entityID: BdSzNycR8Y3MdHooxU0vtOEPr3ZG9KD5p8wxHtvueUU=, nodeID: +JOOp6OMmzldm9Dy7Cnbl/FE66bNkU0TJquOYnQIv7s=, role: backup-worker

0 comments on commit 9378185

Please sign in to comment.