control-panel-dns/digitalocean/listDroplets.go

50 lines
1.1 KiB
Go

package digitalocean
import (
"context"
"fmt"
"golang.org/x/oauth2"
"github.com/digitalocean/godo"
)
// ListDroplets fetches and prints out the droplets along with their IPv4 and IPv6 addresses.
func ListDroplets(token string) error {
// OAuth token for authentication.
tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})
// OAuth2 client.
oauthClient := oauth2.NewClient(context.Background(), tokenSource)
// DigitalOcean client.
client := godo.NewClient(oauthClient)
// Context.
ctx := context.TODO()
// List all droplets.
droplets, _, err := client.Droplets.List(ctx, &godo.ListOptions{})
if err != nil {
return err
}
// Iterate over droplets and print their details.
for _, droplet := range droplets {
fmt.Printf("Droplet: %s\n", droplet.Name)
for _, network := range droplet.Networks.V4 {
if network.Type == "public" {
fmt.Printf("IPv4: %s\n", network.IPAddress)
}
}
for _, network := range droplet.Networks.V6 {
if network.Type == "public" {
fmt.Printf("IPv6: %s\n", network.IPAddress)
}
}
fmt.Println("-------------------------")
}
return nil
}