Skip to content

Commit a7ff39a

Browse files
author
tok-kkk
committed
list command will show the version of darknode
1 parent 7055faa commit a7ff39a

6 files changed

Lines changed: 39 additions & 22 deletions

File tree

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.0.9
1+
3.0.10

cmd/flag.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ var (
4040
Name: "version",
4141
Usage: "Version of darknode you want to upgrade to",
4242
}
43+
DowngradeFlag = cli.BoolFlag{
44+
Name: "downgrade",
45+
Usage: "Force downgrading to an older version without interactive prompts",
46+
}
4347
)
4448

4549
// AWS flags

cmd/list.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ func listAllNodes(ctx *cli.Context) error {
4848
if err != nil {
4949
return nil, err
5050
}
51-
return []string{name, id.String(), ip, provider, string(tags), ethAddr.Hex()}, nil
51+
version := util.Version(name)
52+
return []string{name, id.String(), ip, provider, string(tags), ethAddr.Hex(), version}, nil
5253
}()
5354
if err != nil {
5455
color.Red("[%v] cannot get detail of the darknode, err = %v", name, err)
@@ -61,10 +62,10 @@ func listAllNodes(ctx *cli.Context) error {
6162
return fmt.Errorf("cannot find any node")
6263
}
6364

64-
fmt.Printf("%-20s | %-30s | %-15s | %-8s | %-15s | %-45s \n", "name", "id", "ip", "provider", "tags", "ethereum address")
65+
fmt.Printf("%-20s | %-30s | %-15s | %-8s | %-15s | %-45s | %-15s\n", "name", "id", "ip", "provider", "tags", "ethereum address", "version")
6566
for _, node := range nodes {
6667
if node != nil {
67-
fmt.Printf("%-20s | %-30s | %-15s | %-8s | %-15s | %-45s\n", node[0], node[1], node[2], node[3], node[4], node[5])
68+
fmt.Printf("%-20s | %-30s | %-15s | %-8s | %-15s | %-45s | %-15s\n", node[0], node[1], node[2], node[3], node[4], node[5], node[6])
6869
}
6970
}
7071
return nil

cmd/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func main() {
6868
{
6969
Name: "update",
7070
Usage: "Update your Darknodes to the latest software and configuration",
71-
Flags: []cli.Flag{TagsFlag, VersionFlag},
71+
Flags: []cli.Flag{TagsFlag, VersionFlag, DowngradeFlag},
7272
Action: func(c *cli.Context) error {
7373
return updateNode(c)
7474
},

cmd/update.go

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
func updateNode(ctx *cli.Context) error {
2121
name := ctx.Args().First()
2222
tags := ctx.String("tags")
23+
force := ctx.Bool("downgrade")
2324
version := strings.TrimSpace(ctx.String("version"))
2425
nodes, err := util.ParseNodesFromNameAndTags(name, tags)
2526
if err != nil {
@@ -43,13 +44,13 @@ func updateNode(ctx *cli.Context) error {
4344
color.Green("Updating darknodes...")
4445
errs := make([]error, len(nodes))
4546
phi.ParForAll(nodes, func(i int) {
46-
errs[i] = updateSingleNode(nodes[i], version)
47+
errs[i] = updateSingleNode(nodes[i], version, force)
4748
})
4849
return util.HandleErrs(errs)
4950
}
5051

51-
func updateSingleNode(name, ver string) error {
52-
v, _ := util.Version(name)
52+
func updateSingleNode(name, ver string, force bool) error {
53+
v := util.Version(name)
5354
curVersion, err := version.NewVersion(strings.TrimSpace(v))
5455
if err != nil {
5556
return err
@@ -60,10 +61,28 @@ func updateSingleNode(name, ver string) error {
6061
case 0:
6162
color.Green("darknode [%v] is running version [%v] already.", name, ver)
6263
case 1:
63-
color.Red("darknode [%v] is running with version %v, you cannot downgrade to a lower version %v", name, curVersion.String(), newVersion.String())
64+
if !force {
65+
color.Red("darknode [%v] is running with version %v, you cannot downgrade to a lower version %v", name, curVersion.String(), newVersion.String())
66+
return nil
67+
}
68+
if err := update(name, ver); err != nil {
69+
color.Red("cannot downgrade darknode %v, error = %v", name, err)
70+
} else {
71+
color.Green("[%s] has been downgraded to version %v", name, ver)
72+
}
6473
default:
65-
url := fmt.Sprintf("https://github.com/renproject/darknode-release/releases/download/%v", ver)
66-
script := fmt.Sprintf(`mv ~/.darknode/bin/darknode ~/.darknode/bin/darknode-backup &&
74+
if err := update(name, ver); err != nil {
75+
color.Red("cannot update darknode %v, error = %v", name, err)
76+
} else {
77+
color.Green("[%s] has been updated to version %v", name, ver)
78+
}
79+
}
80+
return nil
81+
}
82+
83+
func update(name, ver string) error {
84+
url := fmt.Sprintf("https://github.com/renproject/darknode-release/releases/download/%v", ver)
85+
script := fmt.Sprintf(`mv ~/.darknode/bin/darknode ~/.darknode/bin/darknode-backup &&
6786
curl -sL %v/darknode > ~/.darknode/bin/darknode &&
6887
chmod +x ~/.darknode/bin/darknode &&
6988
systemctl --user stop darknode &&
@@ -72,14 +91,7 @@ rm -rf ~/.darknode/db &&
7291
mv ~/.darknode/db_bak ~/.darknode/db &&
7392
echo %v > ~/.darknode/version &&
7493
systemctl --user restart darknode`, url, ver)
75-
err = util.RemoteRun(name, script)
76-
if err != nil {
77-
color.Red("cannot update darknode %v, error = %v", name, err)
78-
} else {
79-
color.Green("[%s] has been updated to version %v", name, ver)
80-
}
81-
}
82-
return nil
94+
return util.RemoteRun(name, script)
8395
}
8496

8597
func validateVersion(version string) error {

util/node.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,13 @@ func IP(name string) (string, error) {
8585
}
8686

8787
// Version gets the version of the software the darknode currently is running.
88-
func Version(name string) (string, error) {
88+
func Version(name string) string {
8989
script := "cat ~/.darknode/version"
9090
version, err := RemoteOutput(name, script)
9191
if err != nil {
92-
return "0.0.0", err
92+
return "unknown"
9393
}
94-
return string(version), nil
94+
return strings.TrimSpace(string(version))
9595
}
9696

9797
// Network gets the network of the darknode.

0 commit comments

Comments
 (0)