Documentation ¶
Index ¶
- Constants
- type AckEvent
- type AckEvents
- type Address
- type Attestation
- type Client
- func (c *Client) AckScheduledEvents(ctx context.Context, acks AckEvents, middleware ...MiddlewareFunc) error
- func (c *Client) GetAttestation(ctx context.Context, nonce string, middleware ...MiddlewareFunc) (*Attestation, error)
- func (c *Client) GetIdentityToken(ctx context.Context, tokenReq ResourceAndIdentity, ...) (*IdentityToken, error)
- func (c *Client) GetInstance(ctx context.Context, middleware ...MiddlewareFunc) (*Instance, error)
- func (c *Client) GetScheduledEvents(ctx context.Context, middleware ...MiddlewareFunc) (*ScheduledEvents, error)
- type ClientOption
- type Compute
- type EventStatus
- type EventType
- type IdentityToken
- type Instance
- type MiddlewareFunc
- type Network
- type NetworkInterface
- type Plan
- type Protocol
- type PublicKey
- type ResourceAndIdentity
- type RestHandler
- type ScheduledEvent
- type ScheduledEvents
- type Subnet
Constants ¶
const ( // MetadataBaseURI is the local Azure metadata endpoint MetadataBaseURI = "http://169.254.169.254/metadata/" // InstanceAPIVersion is the highest common API version supported across clouds: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service#service-availability InstanceAPIVersion = "2019-04-30" // ScheduledEventsAPIVersion is the highest version of the API at the time ScheduledEventsAPIVersion = "2017-11-01" // IdentityAPIVersion is the highest version of the Identity API at the time IdentityAPIVersion = "2018-02-01" // Freeze the Virtual Machine is scheduled to pause for a few seconds. CPU and network connectivity may be // suspended, but there is no impact on memory or open files. Freeze EventType = "Freeze" // Reboot the Virtual Machine is scheduled for reboot (non-persistent memory is lost). Reboot EventType = "Reboot" // Redeploy the Virtual Machine is scheduled to move to another node (ephemeral disks are lost). Redeploy EventType = "Redeploy" // Preempt the Spot Virtual Machine is being deleted (ephemeral disks are lost). Preempt EventType = "Preempt" // Scheduled signifies this event is scheduled to start after the time specified in the NotBefore property. Scheduled EventStatus = "Scheduled" // Started signifies this event has started. Started EventStatus = "Started" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AckEvent ¶
type AckEvent struct {
EventID string `json:"EventId"`
}
AckEvent is the event identified for acknowledgement
type AckEvents ¶
type AckEvents struct {
StartRequests []AckEvent `json:"StartRequests"`
}
AckEvents is a set of event ids to be acknowledged so that Azure can complete the event
type Address ¶
type Address struct { PrivateIPAddress string `json:"privateIpAddress,omitempty"` PublicIPAddress string `json:"publicIpAddress,omitempty"` }
Address describes the public and private IP addresses
type Attestation ¶
type Attestation struct { Encoding string `json:"encoding,omitempty"` Signature string `json:"signatrue,omitempty"` }
Attestation provides a signature and encoding to ensure data is coming from Azure
type Client ¶
type Client struct { HTTPClient *http.Client InstanceAPIVersion string IdentityAPIVersion string ScheduledEventsAPIVersion string BaseURI string // contains filtered or unexported fields }
Client is the HTTP client for the Cloud Partner Portal
func (*Client) AckScheduledEvents ¶
func (c *Client) AckScheduledEvents(ctx context.Context, acks AckEvents, middleware ...MiddlewareFunc) error
AckScheduledEvents will acknowledge a set of scheduled events
func (*Client) GetAttestation ¶
func (c *Client) GetAttestation(ctx context.Context, nonce string, middleware ...MiddlewareFunc) (*Attestation, error)
GetAttestation will generate a signed document to verify the data is coming from Azure
nonce is optional and must be digits with a max len of 10; "1234567890" https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service#attested-data
func (*Client) GetIdentityToken ¶
func (c *Client) GetIdentityToken(ctx context.Context, tokenReq ResourceAndIdentity, middleware ...MiddlewareFunc) (*IdentityToken, error)
GetIdentityToken will fetch an authentication token from the instance identity service
func (*Client) GetInstance ¶
GetInstance will fetch the instance metadata from the local machine
func (*Client) GetScheduledEvents ¶
func (c *Client) GetScheduledEvents(ctx context.Context, middleware ...MiddlewareFunc) (*ScheduledEvents, error)
GetScheduledEvents will fetch the scheduled events for the local machine
type ClientOption ¶
ClientOption is a variadic optional configuration func
type Compute ¶
type Compute struct { AzureEnvironment string `json:"azEnvironment,omitempty"` CustomData string `json:"customData,omitempty"` Location string `json:"location,omitempty"` Name string `json:"name,omitempty"` Offer string `json:"offer,omitempty"` OSType string `json:"osType,omitempty"` PlacementGroupID string `json:"placementGroupId,omitempty"` Plan *Plan `json:"plan,omitempty"` PlatformFaultDomain string `json:"platformFaultDomain,omitempty"` PlatformUpdateDomain string `json:"platformUpdateDomain,omitempty"` Provider string `json:"provider,omitempty"` PublicKeys []PublicKey `json:"publicKeys,omitempty"` Publisher string `json:"publisher,omitempty"` ResourceGroupName string `json:"resourceGroupName,omitempty"` ResourceID string `json:"resourceId,omitempty"` SKU string `json:"sku,omitempty"` SubscriptionID string `json:"subscriptionId,omitempty"` Tags string `json:"tags,omitempty"` Version string `json:"version,omitempty"` VMID string `json:"vmId,omitempty"` VMScaleSetName string `json:"vmScaleSetName,omitempty"` VMSize string `json:"vmSize,omitempty"` Zone string `json:"zone,omitempty"` }
Compute describes the virtual machine details for the instance
type EventStatus ¶
type EventStatus string
EventStatus is the status of the event
Values:
Scheduled: This event is scheduled to start after the time specified in the NotBefore property. Started: This event has started.
No Completed or similar status is ever provided; the event will no longer be returned when the event is completed.
type EventType ¶
type EventType string
EventType is the impact this event causes
Values:
Freeze: The Virtual Machine is scheduled to pause for a few seconds. CPU and network connectivity may be suspended, but there is no impact on memory or open files. Reboot: The Virtual Machine is scheduled for reboot (non-persistent memory is lost). Redeploy: The Virtual Machine is scheduled to move to another node (ephemeral disks are lost). Preempt: The Spot Virtual Machine is being deleted (ephemeral disks are lost).
type IdentityToken ¶
type IdentityToken struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` ExpiresIn string `json:"expires_in"` ExpiresOn string `json:"expires_on"` NotBefore string `json:"not_before"` Resource string `json:"resource"` TokenType string `json:"token_type"` }
IdentityToken is returned by the identity metadata service (basically an AAD JWT)
use the access token to auth against Azure services
type Instance ¶
type Instance struct { Compute *Compute `json:"compute,omitempty"` Network *Network `json:"network,omitempty"` }
Instance is the data structure returned by http://169.254.169.254/metadata/instance
type MiddlewareFunc ¶
type MiddlewareFunc func(next RestHandler) RestHandler
MiddlewareFunc allows a consumer of the Client to inject handlers within the request / response pipeline
The example below adds the atom xml content type to the request, calls the next middleware and returns the result.
addAtomXMLContentType MiddlewareFunc = func(next RestHandler) RestHandler { return func(ctx context.Context, req *http.Request) (res *http.Response, e error) { if req.Method != http.MethodGet && req.Method != http.MethodHead { req.Header.Add("content-Type", "application/atom+xml;type=entry;charset=utf-8") } return next(ctx, req) } }
type Network ¶
type Network struct {
Interfaces []NetworkInterface `json:"interface,omitempty"`
}
Network describes the networking details for the instance
type NetworkInterface ¶
type NetworkInterface struct { IPV4 *Protocol `json:"ipv4,omitempty"` IPV6 *Protocol `json:"ipv6,omitempty"` MacAddress string `json:"macAddress,omitemtpy"` }
NetworkInterface describes the protocols and addresses for the nic
type Plan ¶
type Plan struct { Name string `json:"name,omitempty"` Product string `json:"product,omitempty"` Publisher string `json:"publisher,omitempty"` }
Plan describes the VM Plan
type Protocol ¶
type Protocol struct { IPAddresses []Address `json:"ipAddress,omitempty"` Subnets []Subnet `json:"subnet,omitempty"` }
Protocol describes the IP Addresses and Subnets
type PublicKey ¶
type PublicKey struct { KeyData string `json:"keyData,omitempty"` Path string `json:"path,omitempty"` }
PublicKey describes an ssh public key and the path it should be at on the machine
type ResourceAndIdentity ¶
type ResourceAndIdentity struct { Resource string `json:"resource,omitempty"` ObjectID *uuid.UUID `json:"object_id,omitempty"` ClientID *uuid.UUID `json:"client_id,omitempty"` ManagedIdentityID *string `json:"mi_res_id,omitempty"` // Azure resource id }
ResourceAndIdentity is the Azure resource ID and the identity to access that resource
For more info about Azure resource ids: https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/services-support-managed-identities
type RestHandler ¶
RestHandler is used to transform a request and response within the http pipeline
type ScheduledEvent ¶
type ScheduledEvent struct { ID string `json:"EventID,omitempty"` Type EventType `json:"EventType,omitempty"` ResourceType string `json:"ResourceType,omitempty"` Resources []string `json:"Resources,omitempty"` Status EventStatus `json:"EventStatus,omitempty"` NotBefore date.TimeRFC1123 `json:"NotBefore,omitempty"` }
ScheduledEvent describes an event which will happen in the future
type ScheduledEvents ¶
type ScheduledEvents struct { DocumentIncarnation int `json:"DocumentIncarnation"` Events []ScheduledEvent `json:"Events"` }
ScheduledEvents describes a set of events which Azure will execute