1
0
mirror of https://github.com/rancher/os.git synced 2025-09-06 17:22:34 +00:00

vendor packngo

This commit is contained in:
Darren Shepherd
2015-12-22 22:34:19 -07:00
parent 9187ed724d
commit 946d353e0c
36 changed files with 12357 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
package metadata
import (
"net/http"
"net/url"
"github.com/packethost/packngo"
)
const (
baseUrl = "https://metadata.packet.net"
)
type Client struct {
client *packngo.Client
Metadata MetadataService
Userdata UserdataService
}
type MetadataService interface {
Get() (Metadata, error)
}
type UserdataService interface {
Get() (string, error)
}
func NewClient(httpClient *http.Client) *Client {
c := packngo.NewClient("", "", httpClient)
c.BaseURL, _ = url.Parse(baseUrl)
return &Client{
client: c,
Metadata: &MetadataServiceOp{client: c},
Userdata: &UserdataServiceOp{client: c},
}
}

View File

@@ -0,0 +1,72 @@
package metadata
import (
"github.com/packethost/packngo"
)
const (
metadataBasePath = "/metadata"
)
type Metadata struct {
ApiUrl string `json:"api_url"`
Id string `json:"id"`
Hostname string `json:"hostname"`
Iqn string `json:"iqn"`
OperatingSystem OperatingSystem `json:"operating_system"`
Plan string `json:"plan"`
Facility string `json:"facility"`
SshKeys []string `json:"ssh_keys"`
Network Network `json:"network"`
}
type Network struct {
Addresses []Address `json:"addresses"`
Interfaces []Interface `json:"interfaces"`
}
type Address struct {
Href string `json:"href"`
Gateway string `json:"gateway"`
Address string `json:"address"`
Network string `json:"network"`
Id string `json:"id"`
AddressFamily int `json:"address_family"`
Netmask string `json:"netmask"`
Public bool `json:"public"`
Cidr int `json:"cidr"`
Management bool `json:"management"`
Manageable bool `json:"manageable"`
AssignedTo Reference `json:"assigned_to"`
}
type Reference struct {
Href string `json:"href"`
}
type OperatingSystem struct {
Version string `json:"version"`
Distro string `json:"distro"`
Slug string `json:"slug"`
}
type Interface struct {
Mac string `json:"mac"`
Name string `json:"name"`
}
type MetadataServiceOp struct {
client *packngo.Client
}
func (s *MetadataServiceOp) Get() (Metadata, error) {
metadata := Metadata{}
req, err := s.client.NewRequest("GET", metadataBasePath, nil)
if err != nil {
return metadata, err
}
_, err = s.client.Do(req, &metadata)
return metadata, err
}

View File

@@ -0,0 +1,26 @@
package metadata
import (
"bytes"
"github.com/packethost/packngo"
)
const (
userdataBasePath = "/userdata"
)
type UserdataServiceOp struct {
client *packngo.Client
}
func (s *UserdataServiceOp) Get() (string, error) {
req, err := s.client.NewRequest("GET", userdataBasePath, nil)
if err != nil {
return "", err
}
buffer := &bytes.Buffer{}
_, err = s.client.Do(req, buffer)
return buffer.String(), err
}