mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Switch to official Vultr API library (#529)
* vultr: Switched to official API library (closes #528) * vultr: Renamed vultr.VultrApi to vultr.Provider * vendor: Updated govultr
This commit is contained in:
committed by
Craig Peterson
parent
a138b12ec2
commit
44a7ba5711
142
vendor/github.com/vultr/govultr/iso.go
generated
vendored
Normal file
142
vendor/github.com/vultr/govultr/iso.go
generated
vendored
Normal file
@@ -0,0 +1,142 @@
|
||||
package govultr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// ISOService is the interface to interact with the ISO endpoints on the Vultr API
|
||||
// Link: https://www.vultr.com/api/#ISO
|
||||
type ISOService interface {
|
||||
CreateFromURL(ctx context.Context, ISOURL string) (*ISO, error)
|
||||
Delete(ctx context.Context, ISOID int) error
|
||||
List(ctx context.Context) ([]ISO, error)
|
||||
GetPublicList(ctx context.Context) ([]PublicISO, error)
|
||||
}
|
||||
|
||||
// ISOServiceHandler handles interaction with the ISO methods for the Vultr API
|
||||
type ISOServiceHandler struct {
|
||||
Client *Client
|
||||
}
|
||||
|
||||
// ISO represents ISOs currently available on this account.
|
||||
type ISO struct {
|
||||
ISOID int `json:"ISOID"`
|
||||
DateCreated string `json:"date_created"`
|
||||
FileName string `json:"filename"`
|
||||
Size int `json:"size"`
|
||||
MD5Sum string `json:"md5sum"`
|
||||
SHA512Sum string `json:"sha512sum"`
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
// PublicISO represents public ISOs offered in the Vultr ISO library.
|
||||
type PublicISO struct {
|
||||
ISOID int `json:"ISOID"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
// CreateFromURL will create a new ISO image on your account
|
||||
func (i *ISOServiceHandler) CreateFromURL(ctx context.Context, ISOURL string) (*ISO, error) {
|
||||
|
||||
uri := "/v1/iso/create_from_url"
|
||||
|
||||
values := url.Values{
|
||||
"url": {ISOURL},
|
||||
}
|
||||
|
||||
req, err := i.Client.NewRequest(ctx, http.MethodPost, uri, values)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
iso := new(ISO)
|
||||
err = i.Client.DoWithContext(ctx, req, iso)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return iso, nil
|
||||
}
|
||||
|
||||
// Delete will delete an ISO image from your account
|
||||
func (i *ISOServiceHandler) Delete(ctx context.Context, isoID int) error {
|
||||
|
||||
uri := "/v1/iso/destroy"
|
||||
|
||||
values := url.Values{
|
||||
"ISOID": {strconv.Itoa(isoID)},
|
||||
}
|
||||
|
||||
req, err := i.Client.NewRequest(ctx, http.MethodPost, uri, values)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = i.Client.DoWithContext(ctx, req, nil)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// List will list all ISOs currently available on your account
|
||||
func (i *ISOServiceHandler) List(ctx context.Context) ([]ISO, error) {
|
||||
|
||||
uri := "/v1/iso/list"
|
||||
|
||||
req, err := i.Client.NewRequest(ctx, http.MethodGet, uri, nil)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var ISOMap map[string]ISO
|
||||
err = i.Client.DoWithContext(ctx, req, &ISOMap)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var iso []ISO
|
||||
for _, i := range ISOMap {
|
||||
iso = append(iso, i)
|
||||
}
|
||||
|
||||
return iso, nil
|
||||
}
|
||||
|
||||
// GetPublicList will list public ISOs offered in the Vultr ISO library.
|
||||
func (i *ISOServiceHandler) GetPublicList(ctx context.Context) ([]PublicISO, error) {
|
||||
|
||||
uri := "/v1/iso/list_public"
|
||||
|
||||
req, err := i.Client.NewRequest(ctx, http.MethodGet, uri, nil)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var ISOMap map[string]PublicISO
|
||||
err = i.Client.DoWithContext(ctx, req, &ISOMap)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var publicISO []PublicISO
|
||||
|
||||
for _, p := range ISOMap {
|
||||
publicISO = append(publicISO, p)
|
||||
}
|
||||
|
||||
return publicISO, nil
|
||||
}
|
Reference in New Issue
Block a user