pkg/imds/types.go (49 lines of code) (raw):
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package imds
type InstanceMetadata struct {
Compute *ComputeMetadata `json:"compute"`
Network *NetworkMetadata `json:"network"`
}
type ComputeMetadata struct {
AzEnvironment string `json:"azEnvironment"`
Location string `json:"location"`
Name string `json:"name"`
OSType string `json:"osType"`
OSProfile OSProfile `json:"osProfile"`
ResourceGroupName string `json:"resourceGroupName"`
ResourceID string `json:"resourceId"`
SubscriptionID string `json:"subscriptionId"`
Tags string `json:"tags"`
VMScaleSetName string `json:"vmScaleSetName"`
}
type NetworkMetadata struct {
Interface []NetworkInterface `json:"interface"`
}
type OSProfile struct {
ComputerName string `json:"computerName"`
}
type NetworkInterface struct {
IPv4 IPData `json:"ipv4"`
MacAddress string `json:"macAddress"`
}
type IPData struct {
IPAddress []IPAddress `json:"ipAddress"`
Subnet []Subnet `json:"subnet"`
}
type IPAddress struct {
PrivateIP string `json:"privateIpAddress"`
PublicIP string `json:"publicIpAddress"`
}
type Subnet struct {
Address string `json:"address"`
Prefix string `json:"prefix"`
}
type LoadBalancerMetadata struct {
LoadBalancer LBData `json:"loadbalancer"`
}
type LBData struct {
PublicIPAddresses []PublicIPMetadata `json:"publicIpAddresses"`
}
type PublicIPMetadata struct {
FrontendIPAddress string `json:"frontendIpAddress"`
PrivateIPAddress string `json:"privateIpAddress"`
}