exoscale / egoscale

exoscale golang bindings
https://pkg.go.dev/github.com/exoscale/egoscale/v3
Apache License 2.0
31 stars 15 forks source link

v3: Add a metadata package to interact with #632

Closed pierre-emmanuelJ closed 2 months ago

pierre-emmanuelJ commented 2 months ago

Description

Metadata package to interact with exoscale metadata server from an exoscale Instance

Checklist

(For exoscale contributors)

test from Instance

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/exoscale/egoscale/v3/metadata"
)

func main() {
    endpoints := []metadata.Endpoint{
        metadata.AvailabilityZone,
        metadata.CloudIdentifier,
        metadata.InstanceID,
        metadata.LocalHostname,
        metadata.LocalIpv4,
        metadata.PublicHostname,
        metadata.PublicIpv4,
        metadata.ServiceOffering,
        metadata.VMID,
    }

    for _, endpoint := range endpoints {
        resp, err := metadata.Get(context.Background(), endpoint)
        if err != nil {
            log.Fatal(err)
        }

        fmt.Printf("Response for %s: %s\n", endpoint, resp)
    }

    resp, err := metadata.UserData(context.Background())
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Response for user-data: %s\n", resp)
}

Output

Response for availability-zone: ch-gva-2
Response for cloud-identifier: Exoscale Compute Platform
Response for instance-id: 905xxxxxx8efd0
Response for local-hostname: test
Response for local-ipv4: 85.x.x.x
Response for public-hostname: test
Response for public-ipv4: 85.x.x.x
Response for service-offering: Cpu-huge 32gb 16cpu
Response for vm-id: 905xxxxxxx8efd0
Response for user-data: #cloud-init....