Skip to content

kaleido-io/kaleido-sdk-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Command Line tool for managing Kaleido resources

This tool allows Kaleido users to provision and manager the resources such as consortiums, memberships, environments and Quorum/Geth nodes.

Dependencies

Install Go: https://golang.org/doc/install

Dev Environment Setup

The follow are regular steps to set up a typical golang dev environment. If you are already familiar with this language you can skip to the next section.

  1. Decide a folder as your container for all golang projects, and set GOPATH environment variable to point to it more information in SettingGOPATH
  2. Because We are using Go Modules you must work outside GOPATH
  3. If working with Go 1.11 and 1.12 make sure to enable Go modules with export GO111MODULE=on

Install Dependencies

go mod download

Tests

go test ./...

Build and Run

go build -o kld

The kld command works similarly to the popular CLI tools like kubectl which multiple levels of commands with help. Try these commands:

./kld
./kld -h
./kld create -h
./kld create consortium -h

To use the CLI to do something, such as create a consortium, you first need to provide the two pieces of required information, API URL and API Key. The tool supports configurations through files (yaml, json, toml formats are all supported), or environment variables.

Configuration in files and environment variables

Create a .kld.yaml (or .kld.json or .kld.toml based on your preferences) file in the home directory and give these values:

api:
  url: https://console.kaleido.io/api/v1
  key: <your API Key>

The configuration file can be at any location and called by any name, you can tell the command where it is:

./kld --config /path/to/your/config.toml create consortium ...

You can also use environment variables. Use all capital letters with KLD_ as the prefix, for instance:

KLD_API_URL=http://console.kaleido.io/api/v1
KLD_API_KEY=blahblah

If the same configurations are specified in multiple places, this is the precedence order:

environment variables overrides config files specified in --config overrides .kld.<yaml/json/toml> in home directory

Create a consortium

jimzhang$ ./kld create consortium -m single-org -n testConsortium234 -d "this is a test consortium" | jq
{
  "name": "testConsortium234",
  "description": "this is a test consortium",
  "mode": "single-org",
  "owner": "z4a5lhio",
  "_id": "xmvsgnlg",
  "state": "setup",
  "_revision": "0",
  "created_at": "2018-04-13T15:14:20.930Z",
  "environment": {
    "name": "Auto-generated Environment",
    "description": "Initial Environment for testConsortium234",
    "state": "live",
    "region": "us-east",
    "provider": "quorum",
    "consensus_type": "raft",
    "mode": "single-org",
    "_id": "wgv4mdl4",
    "node_list": [],
    "release_id": "i05cs743",
    "_revision": "0",
    "created_at": "2018-04-13T15:14:20.956Z"
  }
}

Running Tests

export KALEIDO_API=https://xxxx
export KALEIDO_API_KEY=xxxxx
go test ./kaleido

Optionally use go test -v ./kaleido to view all test logs.

Updating On-chain Registry smart contracts (for Kaleido admin)

First, create the .abi and .bin files for each contract from the .sol source code.

solc —abi <contract_name>.sol -o .`
solc —bin <contract_name>.sol -o .`

Then, run these commands to automatically create the .go contract binding methods using go-ethereum's template.go.

contracts/directory/abigen --abi Directory.abi --bin Directory.bin --pkg directory --out Directory.go
contracts/properties/abigen --abi Properties.abi --bin Properties.bin --pkg properties --out Properties.go