Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 6 additions & 15 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,31 +18,22 @@ builds:
- -X github.com/threefoldtech/tfgrid4-sdk-go/node-registrar/cmd.version={{.Tag}}
- -X github.com/threefoldtech/tfgrid-sdk-go/node-registrar/cmd.commit={{.Commit}}

- dir: ./node-registrar/tools/account
- dir: ./node-registrar/tools/registrar-cli
env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
binary: new-account
id: new-account
binary: reg-cli
id: reg-cli

ignore:
- goos: windows
ldflags:
- -X github.com/threefoldtech/tfgrid4-sdk-go/node-registrar/cmd.version={{.Tag}}
- -X github.com/threefoldtech/tfgrid-sdk-go/node-registrar/cmd.commit={{.Commit}}

- dir: ./node-registrar/tools/farm
env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
binary: new-farm
id: new-farm

ignore:
- goos: windows


archives:
Expand Down
6 changes: 4 additions & 2 deletions go.work
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
go 1.23.0

use ./node-registrar
use ./rmb-sdk-go
use (
./node-registrar
./registrar-cli
)
20 changes: 16 additions & 4 deletions go.work.sum
Original file line number Diff line number Diff line change
Expand Up @@ -106,35 +106,47 @@ golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZ
golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs=
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
Expand Down
19 changes: 15 additions & 4 deletions node-registrar/tools/farm/README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,49 @@
# New Farm Tool

## Overview

This tool allows users to create a farm account on a specified network.

## Installation

1. Clone the repository:

```sh
git clone https://github.com/threefoldtech/tfgrid4-sdk-go
```

2. Navigate to the project directory:

```sh
cd tfgrid4-sdk-go/node-registrar/tools/farm
```

3. Build the application:

```sh
go build -o new-farm main.go
```

## Usage

```sh
./new-farm -seed <seed> -network <network> -farm_name <farm_name>
./new-farm -seed <seed> -network <network> -farm-name <farm-name>
```

### Parameters

- `-seed` (required): A hexadecimal string used as a private key seed.
- `-network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `-farm_name` (required): The name of the farm to create.
- `-farm-name` (required): The name of the farm to create.

### Example Usage

```sh
./new-farm -seed aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899 -network dev -farm_name MyFarm
./new-farm -seed aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899 -network dev -farm-name MyFarm
```

The `FarmID` (e.g., `11`) is returned upon successful farm creation.

## Next Step

Once this is done, you can create a V4 bootstrap image using the V4 Zero-OS Boot Generator: https://v4.bootstrap.grid.tf/.
Once this is done, you can create a V4 bootstrap image using the V4 Zero-OS Boot Generator: <https://v4.bootstrap.grid.tf/>.
2 changes: 1 addition & 1 deletion node-registrar/tools/farm/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func main() {

flag.StringVar(&seed, "seed", "", "seed")
flag.StringVar(&network, "network", "", "network (dev, qa, test, main)")
flag.StringVar(&name, "farm_name", "", "farm name")
flag.StringVar(&name, "farm-name", "", "farm name")
flag.Parse()

u, ok := urls[network]
Expand Down
Empty file added registrar-cli/LICENSE
Empty file.
36 changes: 36 additions & 0 deletions registrar-cli/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
PWD := $(shell pwd)
GOPATH := $(shell go env GOPATH)

all: verifiers test

test:
@echo "Running Tests"
go test -v ./...

coverage: clean
@echo "Installing gopherbadger" && go get -u github.com/jpoles1/gopherbadger && go install github.com/jpoles1/gopherbadger
mkdir coverage
go test -v -vet=off ./... -coverprofile=coverage/coverage.out
go tool cover -html=coverage/coverage.out -o coverage/coverage.html
@${GOPATH}/bin/gopherbadger -png=false -md="README.md"
rm coverage.out
go mod tidy

clean:
rm ./coverage -rf
rm ./bin -rf

getverifiers:
@echo "Installing golangci-lint" && go install github.com/golangci/golangci-lint/cmd/golangci-lint
go mod tidy

lint:
@echo "Running $@"
golangci-lint run -c ../.golangci.yml

build:
@echo "Running $@"
@go build -ldflags=\
"-X 'github.com/threefoldtech/tfgrid4-sdk-go/node-registrar/tools/registrar-cli/cmd.commit=$(shell git rev-parse HEAD)'\
-X 'github.com/threefoldtech/tfgrid4-sdk-go/node-registrar/tools/registrar-cli/cmd.version=$(shell git tag --sort=-version:refname | head -n 1)'"\
-o bin/registrar-cli main.go
196 changes: 196 additions & 0 deletions registrar-cli/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# New Farm Tool

## Overview

This tool allows users to create/get/update farm/account/node on a specified network.

## Installation

1. Clone the repository:

```sh
git clone https://github.com/threefoldtech/tfgrid4-sdk-go
```

2. Navigate to the project directory:

```sh
cd tfgrid4-sdk-go/registrar-cli/
```

3. Build the application:

```sh
go build -o registrar-cli main.go
```

## Usage

## Account Command

Account command represents events on account on Threefold grid4

### Create New Account

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--mnemonic` (optional): create an account of a mnemonic.
- `--relays` (optional): relays urls.
- `--rmb-enc-key` (optional): rmb encryption key.

**Example Usage**:

```sh
➜ ./registrar-cli account create --network local
1:07PM INF new account is created with mnemonic mnemonic="pyramid cattle mutual brush green east slam lava source stereo rigid able"
1:07PM INF account is created successfully twinID=4
```

### Get Account

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--twin-id` (optional): twin id of the account needed to be loaded.
- `--public-key` (optional): public key of the account needed to be loaded.

**Example Usage**:

```sh
➜ ./registrar-cli account get --network dev --twin-id 33
5:00PM INF account={"public_key":"w5TYTeB/rCskd1iNrOKaFlpGn+Cp28gFZobTNABUv50=","relays":[],"rmb_enc_key":"","twin_id":33}
➜ ./registrar-cli account get --network dev --public-key <public-key>
5:01PM INF account={"public_key":"w5TYTeB/rCskd1iNrOKaFlpGn+Cp28gFZobTNABUv50=","relays":[],"rmb_enc_key":"","twin_id":33}
```

### Update Account

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--mnemonic` (required): Account mnemonic.
- `--relays` (optional): new relays urls.
- `--rmb-enc-key` (optional): new rmb encryption key.

**Example Usage**:

```sh
➜ ./registrar-cli account update --network dev --mnemonic <mnemonic> --relays wss://relay.dev.grid.tf
5:02PM INF account is updated successfully
➜ ./registrar-cli account get --network dev --twin-id 33
5:02PM INF account={"public_key":"w5TYTeB/rCskd1iNrOKaFlpGn+Cp28gFZobTNABUv50=","relays":["wss://relay.dev.grid.tf"],"rmb_enc_key":"","twin_id":33}
```

## Farm Command

Farm command represents events on farms on Threefold grid4

### Create New Farm

**Flags**:

- `--farm-name` (required): The name of the farm to create.
- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--mnemonic` (required): Account mnemonic.
- `--dedicated` (optional default: false): is the farm dedicated.

**Example Usage**:

```sh
➜ ./registrar-cli farm create --farm-name testFarm1 --mnemonic <mnemonic> --network dev
5:03PM INF farm is created successfully farmID=12
```

### Get Farm

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--farm-id` (optional): id of the farm needed to be loaded.

**Example Usage**:

```sh
➜ ./registrar-cli farm get --farm-id 12 --network dev
5:03PM INF farm={"dedicated":false,"farm_id":12,"farm_name":"testFarm1","twin_id":33}
```

### Update Farm

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--mnemonic` (required): Account mnemonic.
- `--farm-id` (optional): id of the farm needed to be loaded.
- `--farm-name` (optional): The new name of the farm.
- `--dedicated` (optional): update the farm to dedicated.

**Example Usage**:

```sh
➜ ./registrar-cli farm update --farm-name notTestFarm1 --mnemonic <mnemonic> --network dev --farm-id 12
5:04PM INF farm is updated successfully
➜ ./registrar-cli farm get --farm-id 12 --network dev
5:04PM INF farm={"dedicated":false,"farm_id":12,"farm_name":"notTestFarm1","twin_id":33}
```

## Node Command

Node command represents events on nodes on Threefold grid4

### Get Node

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--node-id` (optional): id of the node needed to be loaded.
- `--twin-id` (optional): twin id of the node needed to be loaded.

**Example Usage**:

```sh
➜ ./registrar-cli node get --network dev --node-id 1
12:36PM INF node={"Approved":false,"farm_id":4,"interfaces":[{"ips":"192.168.123.22","mac":"54:fe:9a:b0:73:61","name":"zos"}],"location":{"city":"Cairo","country":"Egypt","latitude":"30.0588","longitude":"31.2268"},"node_id":1,"resources":{"cru":4,"hru":1073741824000,"mru":6230032384,"sru":1610612736000},"secure_boot":false,"serial_number":"Not Specified","twin_id":5,"uptime":null,"virtualized":true}
➜ ./registrar-cli node get --network dev --twin-id 5
12:36PM INF node={"Approved":false,"farm_id":4,"interfaces":[{"ips":"192.168.123.22","mac":"54:fe:9a:b0:73:61","name":"zos"}],"location":{"city":"Cairo","country":"Egypt","latitude":"30.0588","longitude":"31.2268"},"node_id":1,"resources":{"cru":4,"hru":1073741824000,"mru":6230032384,"sru":1610612736000},"secure_boot":false,"serial_number":"Not Specified","twin_id":5,"uptime":null,"virtualized":true}
```

## Zos Version Command

Zos Version command represents events on zos version on Threefold grid4

### Get Zos Version

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).

**Example Usage**:

```sh
➜ ./registrar-cli zos-version get --network dev
12:40PM INF zosVersion={"safe_to_upgrade":true,"version":"v0.1.8"}
```

### Update Zos Version

**Flags**:

- `--network` (required): Specifies the network (`dev`, `qa`, `test`, `main`).
- `--version` (required): new zos version to be set on specific network (`v0.1.x`)
- `--safe-to-upgrade` (required): if this version is safe to upgrade

**Example Usage**:

```sh
➜ ./registrar-cli zos-version update --network dev --version v0.1.8 --safe-to-upgrade --mnemonic <mnemonic>
5:07PM INF zos version is updated successfully
➜ ./registrar-cli zos-version get --network dev
5:07PM INF zosVersion={"safe_to_upgrade":true,"version":"v0.1.8"}
```
Loading