Documentation ¶
Index ¶
- Constants
- func AcquireCloudMetadata(m *Environment) error
- func ConfigureNetworkMetadata(m *Environment) error
- func RegisterRouterAzure(r *mux.Router, m *Environment)
- func RegisterRouterCloud(r *mux.Router, e *Environment)
- func RegisterRouterEC2(r *mux.Router, m *Environment)
- func RegisterRouterGCP(r *mux.Router, m *Environment)
- func SaveMetaData(m *Environment) error
- func WatchAddresses(m *Environment)
- func WatchLinks(m *Environment)
- func WatchNetwork(m *Environment)
- type Azure
- type AzureMetaData
- type EC2
- type EC2Credentials
- type EC2Document
- type EC2MAC
- type EC2System
- type Environment
- type GCP
- func (g *GCP) ConfigureNetworkFromCloudMeta(m *Environment) error
- func (g *GCP) FetchCloudMetadata() error
- func (g *GCP) LinkSaveCloudMetadata(m *Environment) error
- func (g *GCP) ParseIpv4GatewayFromMetadataByMac(mac string) (string, error)
- func (g *GCP) ParseLinkMTUFromMetadataByMac(mac string) (int, error)
- func (g *GCP) SaveCloudMetadata() error
- type GCPMetaData
Constants ¶
View Source
const ( // Azure IMDS REST Endpoint. AzureIMDSRESTEndpoint string = "169.254.169.254" // Azure API Version API version AzureAPIVersion string = "?api-version=2020-09-01" // Azure Metadata URL base AzureMetadataURLBase string = "/metadata/instance" )
View Source
const ( // EC2 Metadata endpoint. EC2Endpoint string = "169.254.169.254" // EC2 Metadata URL Base EC2MetaDataURLBase string = "/latest/meta-data/" // EC2 Metadata mac URL Base EC2MetaDataNetwork string = "network/interfaces/macs/" EC2MetaDataIdentityCredentials string = "identity-credentials/ec2/security-credentials/ec2-instance/" EC2MetaDataDynamicIdentityDocument string = "/latest/dynamic/instance-identity/" )
View Source
const ( // GCP REST Endpoint Metadata endpoint. GCPIMDSRESTEndpoint string = "metadata.google.internal" // GCP Metadata URLBase GCPMetadataURLBase string = "/computeMetadata/v1/?recursive=true" )
View Source
const (
MaxChannelSize = 1024
)
Variables ¶
This section is empty.
Functions ¶
func AcquireCloudMetadata ¶
func AcquireCloudMetadata(m *Environment) error
func ConfigureNetworkMetadata ¶
func ConfigureNetworkMetadata(m *Environment) error
func RegisterRouterAzure ¶
func RegisterRouterAzure(r *mux.Router, m *Environment)
func RegisterRouterCloud ¶
func RegisterRouterCloud(r *mux.Router, e *Environment)
func RegisterRouterEC2 ¶
func RegisterRouterEC2(r *mux.Router, m *Environment)
func RegisterRouterGCP ¶
func RegisterRouterGCP(r *mux.Router, m *Environment)
func SaveMetaData ¶
func SaveMetaData(m *Environment) error
func WatchAddresses ¶
func WatchAddresses(m *Environment)
func WatchLinks ¶
func WatchLinks(m *Environment)
func WatchNetwork ¶
func WatchNetwork(m *Environment)
Types ¶
type Azure ¶
type Azure struct {
// contains filtered or unexported fields
}
func (*Azure) ConfigureNetworkFromCloudMeta ¶
func (az *Azure) ConfigureNetworkFromCloudMeta(m *Environment) error
func (*Azure) FetchCloudMetadata ¶
func (*Azure) LinkSaveCloudMetadata ¶
func (az *Azure) LinkSaveCloudMetadata(m *Environment) error
func (*Azure) SaveCloudMetadata ¶
type AzureMetaData ¶
type AzureMetaData struct { Compute struct { AzEnvironment string `json:"azEnvironment,omitempty"` CustomData string `json:"customData,omitempty"` IsHostCompatibilityLayerVM string `json:"isHostCompatibilityLayerVm,omitempty"` LicenseType string `json:"licenseType,omitempty"` Location string `json:"location,omitempty"` Name string `json:"name,omitempty"` Offer string `json:"offer,omitempty"` OsProfile struct { AdminUsername string `json:"adminUsername,omitempty"` ComputerName string `json:"computerName,omitempty"` } `json:"osProfile"` OsType string `json:"osType,omitempty"` PlacementGroupID string `json:"placementGroupId,omitempty"` Plan struct { Name string `json:"name,omitempty"` Product string `json:"product,omitempty"` Publisher string `json:"publisher,omitempty"` } `json:"plan"` PlatformFaultDomain string `json:"platformFaultDomain,omitempty"` PlatformUpdateDomain string `json:"platformUpdateDomain,omitempty"` Provider string `json:"provider,omitempty"` PublicKeys []struct { KeyData string `json:"keyData,omitempty"` Path string `json:"path,omitempty"` } `json:"publicKeys"` Publisher string `json:"publisher,omitempty"` ResourceGroupName string `json:"resourceGroupName,omitempty"` ResourceID string `json:"resourceId,omitempty"` SecurityProfile struct { SecureBootEnabled string `json:"secureBootEnabled,omitempty"` VirtualTpmEnabled string `json:"virtualTpmEnabled,omitempty"` } `json:"securityProfile"` StorageProfile struct { DataDisks []interface{} `json:"dataDisks,omitempty"` ImageReference struct { ID string `json:"id,omitempty"` Offer string `json:"offer,omitempty"` Publisher string `json:"publisher,omitempty"` Sku string `json:"sku,omitempty"` Version string `json:"version,omitempty"` } `json:"imageReference"` OsDisk struct { Caching string `json:"caching,omitempty,omitempty"` CreateOption string `json:"createOption,omitempty,omitempty"` DiffDiskSettings struct { Option string `json:"option"` } `json:"diffDiskSettings"` DiskSizeGB string `json:"diskSizeGB,omitempty"` EncryptionSettings struct { Enabled string `json:"enabled"` } `json:"encryptionSettings"` Image struct { URI string `json:"uri"` } `json:"image"` ManagedDisk struct { ID string `json:"id,omitempty"` StorageAccountType string `json:"storageAccountType,omitempty"` } `json:"managedDisk"` Name string `json:"name,omitempty"` OsType string `json:"osType,omitempty"` Vhd struct { URI string `json:"uri"` } `json:"vhd"` WriteAcceleratorEnabled string `json:"writeAcceleratorEnabled"` } `json:"osDisk"` } `json:"storageProfile"` SubscriptionID string `json:"subscriptionId,omitempty"` Tags string `json:"tags,omitempty"` TagsList []interface{} `json:"tagsList,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"` } `json:"compute"` Network struct { Interface []struct { Ipv4 struct { IPAddress []struct { PrivateIpAddress string `json:"privateIpAddress,omitempty"` PublicIpAddress string `json:"publicIpAddress,omitempty"` } `json:"ipAddress"` Subnet []struct { Address string `json:"address,omitempty"` Prefix string `json:"prefix,omitempty"` } `json:"subnet"` } `json:"ipv4"` Ipv6 struct { IPAddress []struct { PrivateIpAddress string `json:"privateIpAddress,omitempty"` PublicIpAddress string `json:"publicIpAddress,omitempty"` } `json:"ipAddress"` } `json:"ipv6"` MacAddress string `json:"macAddress,omitempty"` } `json:"interface"` } `json:"network"` }
Azure compute metadata
type EC2 ¶
type EC2 struct {
// contains filtered or unexported fields
}
func (*EC2) ConfigureNetworkFromCloudMeta ¶
func (ec2 *EC2) ConfigureNetworkFromCloudMeta(m *Environment) error
func (*EC2) FetchCloudMetadata ¶
func (*EC2) LinkSaveCloudMetadata ¶
func (ec2 *EC2) LinkSaveCloudMetadata(m *Environment) error
func (*EC2) SaveCloudMetadata ¶
func (*EC2) SaveCloudMetadataIdentityCredentials ¶
type EC2Credentials ¶
type EC2Document ¶
type EC2Document struct { Accountid string `json:"accountId"` Architecture string `json:"architecture"` Availabilityzone string `json:"availabilityZone"` Billingproducts []string `json:"billingProducts"` Devpayproductcodes []string `json:"devpayProductCodes"` Marketplaceproductcodes []string `json:"marketplaceProductCodes"` Imageid string `json:"imageId"` Instanceid string `json:"instanceId"` Instancetype string `json:"instanceType"` Kernelid string `json:"kernelId"` Pendingtime string `json:"pendingTime"` Privateip string `json:"privateIp"` Ramdiskid string `json:"ramdiskId"` Region string `json:"region"` Version string `json:"version"` }
type EC2MAC ¶
type EC2MAC struct { DeviceNumber string `json:"device-number"` InterfaceID string `json:"interface-id"` Ipv4Associations struct { Ipv4Association []string } `json:"ipv4-associations"` LocalHostname string `json:"local-hostname"` LocalIpv4S string `json:"local-ipv4s"` Mac string `json:"mac"` OwnerID string `json:"owner-id"` PublicHostname string `json:"public-hostname"` PublicIpv4S string `json:"public-ipv4s"` SecurityGroupIds string `json:"security-group-ids"` SecurityGroups string `json:"security-groups"` SubnetID string `json:"subnet-id"` SubnetIpv4CidrBlock string `json:"subnet-ipv4-cidr-block"` VpcID string `json:"vpc-id"` VpcIpv4CidrBlock string `json:"vpc-ipv4-cidr-block"` VpcIpv4CidrBlocks string `json:"vpc-ipv4-cidr-blocks"` }
type EC2System ¶
type EC2System struct { AmiID string `json:"ami-id"` AmiLaunchIndex string `json:"ami-launch-index"` AmiManifestPath string `json:"ami-manifest-path"` BlockDeviceMapping struct { Ami string `json:"ami"` Root string `json:"root"` } `json:"block-device-mapping"` Events struct { Maintenance struct { History string `json:"history"` Scheduled string `json:"scheduled"` } `json:"maintenance"` } `json:"events"` Hostname string `json:"hostname"` InstanceAction string `json:"instance-action"` InstanceID string `json:"instance-id"` InstanceLifeCycle string `json:"instance-life-cycle"` InstanceType string `json:"instance-type"` LocalHostname string `json:"local-hostname"` LocalIpv4 string `json:"local-ipv4"` Mac string `json:"mac"` Network struct { Interfaces struct { Macs struct { } `json:"macs"` } `json:"interfaces"` } `json:"network"` Placement struct { AvailabilityZone string `json:"availability-zone"` AvailabilityZoneID string `json:"availability-zone-id"` Region string `json:"region"` } `json:"placement"` Profile string `json:"profile"` PublicHostname string `json:"public-hostname"` PublicIpv4 string `json:"public-ipv4"` PublicKeys struct { } `json:"public-keys"` ReservationID string `json:"reservation-id"` SecurityGroups string `json:"security-groups"` Services struct { Domain string `json:"domain"` Partition string `json:"partition"` } `json:"services"` }
type Environment ¶
type Environment struct { Kind string Links network.Links RouteTable int AddressesByMAC map[string]map[string]bool RoutesByIndex map[int]*network.Route RoutingRulesByAddressFrom map[string]*network.RoutingPolicyRule RoutingRulesByAddressTo map[string]*network.RoutingPolicyRule Mutex *sync.Mutex // contains filtered or unexported fields }
func New ¶
func New(provider string) *Environment
type GCP ¶
type GCP struct {
// contains filtered or unexported fields
}
func (*GCP) ConfigureNetworkFromCloudMeta ¶
func (g *GCP) ConfigureNetworkFromCloudMeta(m *Environment) error
func (*GCP) FetchCloudMetadata ¶
func (*GCP) LinkSaveCloudMetadata ¶
func (g *GCP) LinkSaveCloudMetadata(m *Environment) error
func (*GCP) ParseIpv4GatewayFromMetadataByMac ¶
func (*GCP) ParseLinkMTUFromMetadataByMac ¶
func (*GCP) SaveCloudMetadata ¶
type GCPMetaData ¶
type GCPMetaData struct { Instance struct { Attributes struct { } `json:"attributes"` Cpuplatform string `json:"cpuPlatform"` Description string `json:"description"` Disks []struct { Devicename string `json:"deviceName"` Index int `json:"index"` Interface string `json:"interface"` Mode string `json:"mode"` Type string `json:"type"` } `json:"disks"` Guestattributes struct { } `json:"guestAttributes"` Hostname string `json:"hostname"` ID int64 `json:"id"` Image string `json:"image"` Legacyendpointaccess struct { Zero1 int `json:"0.1"` V1Beta1 int `json:"v1beta1"` } `json:"legacyEndpointAccess"` Machinetype string `json:"machineType"` Maintenanceevent string `json:"maintenanceEvent"` Name string `json:"name"` Networkinterfaces []struct { Accessconfigs []struct { Externalip string `json:"externalIp"` Type string `json:"type"` } `json:"accessConfigs"` Dnsservers []string `json:"dnsServers"` Forwardedips []string `json:"forwardedIps"` Gateway string `json:"gateway"` IP string `json:"ip"` Ipaliases []string `json:"ipAliases"` Mac string `json:"mac"` Mtu int `json:"mtu"` Network string `json:"network"` Subnetmask string `json:"subnetmask"` Targetinstanceips []string `json:"targetInstanceIps"` } `json:"networkInterfaces"` Preempted string `json:"preempted"` Remainingcputime int `json:"remainingCpuTime"` Scheduling struct { Automaticrestart string `json:"automaticRestart"` Onhostmaintenance string `json:"onHostMaintenance"` Preemptible string `json:"preemptible"` } `json:"scheduling"` Serviceaccounts struct { Three8191186391ComputeDeveloperGserviceaccountCom struct { Aliases []string `json:"aliases"` Email string `json:"email"` Scopes []string `json:"scopes"` } `json:"38191186391-compute@developer.gserviceaccount.com"` Default struct { Aliases []string `json:"aliases"` Email string `json:"email"` Scopes []string `json:"scopes"` } `json:"default"` } `json:"serviceAccounts"` Tags []interface{} `json:"tags"` Virtualclock struct { Drifttoken string `json:"driftToken"` } `json:"virtualClock"` Zone string `json:"zone"` } `json:"instance"` Oslogin struct { Authenticate struct { Sessions struct { } `json:"sessions"` } `json:"authenticate"` } `json:"oslogin"` Project struct { Attributes struct { GkeWfu123F8B0D4Cidr string `json:"gke-wfu1-23f8b0d4-cidr"` GkeWfu186B63F6DCidr string `json:"gke-wfu1-86b63f6d-cidr"` SSHKeys string `json:"ssh-keys"` Sshkeys string `json:"sshKeys"` } `json:"attributes"` Numericprojectid int64 `json:"numericProjectId"` Projectid string `json:"projectId"` } `json:"project"` }
Click to show internal directories.
Click to hide internal directories.