ovhcloud

package
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2025 License: MPL-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PublicIP

func PublicIP(instance *Instance) (string, error)

PublicIP returns provided instance v4 public IP.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is an OVHCloud API client.

func NewClient

func NewClient(auth *options.Authentication) (*Client, error)

NewClient creates a new Client.

func (*Client) CreateInstance

func (c *Client) CreateInstance(ctx context.Context, opts CreateInstanceOptions) error

CreateInstance creates the instance using provided options.

func (*Client) DeleteInstance

func (c *Client) DeleteInstance(ctx context.Context, name string) error

func (*Client) GetInstanceByName

func (c *Client) GetInstanceByName(ctx context.Context, name string) (*Instance, error)

GetInstanceByName retrieves an instance by name.

func (*Client) GetInstanceStatus

func (c *Client) GetInstanceStatus(ctx context.Context, name string) (InstanceStatus, error)

func (*Client) Init

func (c *Client) Init(ctx context.Context) error

Init ensures the client can connect to the OVHCloud API.

func (*Client) StartInstance

func (c *Client) StartInstance(ctx context.Context, name string) error

func (*Client) StopInstance

func (c *Client) StopInstance(ctx context.Context, name string) error

type CreateInstanceOptions

type CreateInstanceOptions struct {
	Name      string
	Flavor    string
	Image     string
	PublicKey []byte
}

CreateInstanceOptions holds all parameters to create an instance.

type CreateInstanceRequest

type CreateInstanceRequest struct {
	FlavorID       string `json:"flavorId"`
	ImageID        string `json:"imageId"`
	MonthlyBilling bool   `json:"monthlyBilling"`
	Name           string `json:"name"`
	Region         string `json:"region"`
	SSHKeyID       string `json:"sshKeyId"`
	UserData       string `json:"userData"`
}

CreateInstanceRequest is the payload to create an instance.

type CreateSSHKeyRequest

type CreateSSHKeyRequest struct {
	Name      string `json:"name"`
	PublicKey string `json:"publicKey"`
}

CreateSSHKeyRequest is the payload to create an ssh key.

type Flavor

type Flavor struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Region string `json:"region"`
	RAM    int    `json:"ram"`
	Disk   int    `json:"disk"`
	Vcpus  int    `json:"vcpus"`
	Type   string `json:"type"`
	OsType string `json:"osType"`
	// InboundBandwidth is the max capacity of inbound traffic in Mbit/s.
	InboundBandwidth int `json:"inboundBandwidth"`
	// OutboundBandwidth is the max capacity of outbound traffic in Mbit/s.
	OutboundBandwidth int                `json:"outboundBandwidth"`
	Available         bool               `json:"available"`
	Capabilities      []FlavorCapability `json:"capabilities"`
	// Quota is the number instance you can spawn with your actual quota.
	Quota int `json:"quota"`
}

Flavor holds compute flavor properties.

type FlavorCapability

type FlavorCapability struct {
	// Name of the capability
	// Allowed: failoverip, resize, snapshot, volume.
	Name    string `json:"name"`
	Enabled bool   `json:"enabled"`
}

FlavorCapability holds capability for a flavor.

type IP

type IP struct {
	IP        string `json:"ip"`
	Type      string `json:"type"`
	Version   int    `json:"version"`
	NetworkID string `json:"networkId"`
	GatewayIP string `json:"gatewayIp"`
}

IP holds ip address properties.

type Image

type Image struct {
	ID           string    `json:"id"`
	Name         string    `json:"name"`
	Region       string    `json:"region"`
	Visibility   string    `json:"visibility"`
	Type         string    `json:"type"`
	MinDisk      int       `json:"minDisk"`
	MinRAM       int       `json:"minRam"`
	Size         float64   `json:"size"`
	CreationDate time.Time `json:"creationDate"`
	Status       string    `json:"status"`
	// User is the user to connect with.
	User       string   `json:"user"`
	FlavorType string   `json:"flavorType"`
	Tags       []string `json:"tags"`
	PlanCode   string   `json:"planCode"`
}

Image holds compute image properties.

type Instance

type Instance struct {
	ID           string         `json:"id"`
	Name         string         `json:"name"`
	IPAddresses  []IP           `json:"ipAddresses"`
	FlavorID     string         `json:"flavorId"`
	ImageID      string         `json:"imageId"`
	SSHKeyID     string         `json:"sshKeyId"`
	Created      time.Time      `json:"created"`
	Region       string         `json:"region"`
	Status       InstanceStatus `json:"status"`
	OperationIds []string       `json:"operationIds"`
}

Instance holds compute instance properties.

type InstanceStatus

type InstanceStatus string

InstanceStatus defines all possibles instance status reported by API.

const (
	InstanceActive           InstanceStatus = "ACTIVE"
	InstanceBuild            InstanceStatus = "BUILD"
	InstanceBuilding         InstanceStatus = "BUILDING"
	InstanceDeleted          InstanceStatus = "DELETED"
	InstanceDeleting         InstanceStatus = "DELETING"
	InstanceError            InstanceStatus = "ERROR"
	InstanceHardReboot       InstanceStatus = "HARD_REBOOT"
	InstanceMigrating        InstanceStatus = "MIGRATING"
	InstancePassword         InstanceStatus = "PASSWORD"
	InstancePasued           InstanceStatus = "PAUSED"
	InstanceReboot           InstanceStatus = "REBOOT"
	InstanceRebuild          InstanceStatus = "REBUILD"
	InstanceRescue           InstanceStatus = "RESCUE"
	InstanceRescued          InstanceStatus = "RESCUED"
	InstanceRescuing         InstanceStatus = "RESCUING"
	InstanceResize           InstanceStatus = "RESIZE"
	InstanceResized          InstanceStatus = "RESIZED"
	InstanceResuming         InstanceStatus = "RESUMING"
	InstanceRevertResize     InstanceStatus = "REVERT_RESIZE"
	InstanceShelved          InstanceStatus = "SHELVED"
	InstanceShelvedOffLoaded InstanceStatus = "SHELVED_OFFLOADED"
	InstanceSelving          InstanceStatus = "SHELVING"
	InstanceShutOff          InstanceStatus = "SHUTOFF"
	InstanceSnapshotting     InstanceStatus = "SNAPSHOTTING"
	InstanceSoftDeleted      InstanceStatus = "SOFT_DELETED"
	InstanceStopped          InstanceStatus = "STOPPED"
	InstanceSuspended        InstanceStatus = "SUSPENDED"
	InstanceUnknown          InstanceStatus = "UNKNOWN"
	InstanceUnrescuing       InstanceStatus = "UNRESCUING"
	InstanceUnshelving       InstanceStatus = "UNSHELVING"
	InstanceVerifyResize     InstanceStatus = "VERIFY_RESIZE"
)

type SSHKey

type SSHKey struct {
	ID          string   `json:"id"`
	Name        string   `json:"name"`
	Regions     []string `json:"regions"`
	FingerPrint string   `json:"fingerPrint"`
	PublicKey   string   `json:"publicKey"`
}

SSHKey holds ssh key properties.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL