metalstack cloud

Go client for metalstack.cloud API communication

Find out the Project ID

For some methods you will need to add the project ID to the request. The project ID is encoded within the access token, and can be retrieved by decoding it with jwt.

For the sake of simplicity, in this example you can just copy the project ID from the UI. For that, go to the metalstack.cloud dashboard and select the project you created the token for. Next to the heading, click on the copy icon to copy the project’s ID to the clipboard.

copy project id

Write the Code

With the following go code you can list all the clusters in your project using our API.

First, initialize the go project and get the required packages.

go mod init your-example-project \
  go get connectrpc.com/connect \
  go get github.com/metal-stack-cloud/api/go/api/v1 \
  go get github.com/metal-stack-cloud/api/go/client

Create a file named main.go in the root of your project and paste the code below.

package main

import (
	"context"
	"fmt"
	"os"

	"connectrpc.com/connect"
	"github.com/metal-stack-cloud/api/go/api/v1"
	"github.com/metal-stack-cloud/api/go/client"
)

func main() {
	dialConfig := client.DialConfig{
		BaseURL:   "https://api.metalstack.cloud",
		Token:     "your-access-token", // add your personal access token here
		UserAgent: "metalstack-cloud-example",
	}

	mc := client.New(dialConfig)

	req := &apiv1.ClusterServiceListRequest{
		Project: "your-project-id", // add your project ID here
	}

	resp, err := mc.Apiv1().Cluster().List(context.Background(), connect.NewRequest(req))
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	for _, cluster := range resp.Msg.Clusters {
		fmt.Printf("cluster: %s | kubernetes version: %s
", cluster.Name, cluster.Kubernetes.Version)
	}
}

Add your token and project ID at the marked positions and save the file.

Now, run go run main.go and you will see your running clusters printed to the terminal.

Nice work!

You've completed this developer guide. We have many more, so feel free to explore our other guides! Should you have any questions about our products or need help with metalstack.cloud, please reach out to us anytime.