cloud_metadata

package
v0.0.0-...-85f05cb Latest Latest
Warning

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

Go to latest
Published: May 21, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CloudProviderAWS   = "aws"
	CloudProviderGCP   = "gcp"
	CloudProviderAzure = "azure"
)

Variables

This section is empty.

Functions

func DetectCloudServiceProvider

func DetectCloudServiceProvider() string

func GetDefaultRouteIPAddress

func GetDefaultRouteIPAddress() (ipaddr string, interfaceName string, err error)

func GetHTTPResponse

func GetHTTPResponse(client *http.Client, method string, url string, body io.Reader, headers map[string]string) (string, error)

func RemoveLastCharacter

func RemoveLastCharacter(s string) string

func RoutedInterface

func RoutedInterface(network string, flags net.Flags) *net.Interface

Types

type AWSFargateMetadata

type AWSFargateMetadata struct {
	Cluster       string `json:"Cluster"`
	TaskARN       string `json:"TaskARN"`
	Family        string `json:"Family"`
	Revision      string `json:"Revision"`
	DesiredStatus string `json:"DesiredStatus"`
	KnownStatus   string `json:"KnownStatus"`
	Limits        struct {
		CPU    int `json:"CPU"`
		Memory int `json:"Memory"`
	} `json:"Limits"`
	PullStartedAt    time.Time `json:"PullStartedAt"`
	PullStoppedAt    time.Time `json:"PullStoppedAt"`
	AvailabilityZone string    `json:"AvailabilityZone"`
	Containers       []struct {
		DockerID   string `json:"DockerId"`
		Name       string `json:"Name"`
		DockerName string `json:"DockerName"`
		Image      string `json:"Image"`
		ImageID    string `json:"ImageID"`
		Labels     struct {
			ComAmazonawsEcsCluster               string `json:"com.amazonaws.ecs.cluster"`
			ComAmazonawsEcsContainerName         string `json:"com.amazonaws.ecs.container-name"`
			ComAmazonawsEcsTaskArn               string `json:"com.amazonaws.ecs.task-arn"`
			ComAmazonawsEcsTaskDefinitionFamily  string `json:"com.amazonaws.ecs.task-definition-family"`
			ComAmazonawsEcsTaskDefinitionVersion string `json:"com.amazonaws.ecs.task-definition-version"`
		} `json:"Labels"`
		DesiredStatus string `json:"DesiredStatus"`
		KnownStatus   string `json:"KnownStatus"`
		Limits        struct {
			CPU int `json:"CPU"`
		} `json:"Limits"`
		CreatedAt time.Time `json:"CreatedAt"`
		StartedAt time.Time `json:"StartedAt"`
		Type      string    `json:"Type"`
		Networks  []struct {
			NetworkMode              string   `json:"NetworkMode"`
			IPv4Addresses            []string `json:"IPv4Addresses"`
			AttachmentIndex          int      `json:"AttachmentIndex"`
			MACAddress               string   `json:"MACAddress"`
			IPv4SubnetCIDRBlock      string   `json:"IPv4SubnetCIDRBlock"`
			DomainNameServers        []string `json:"DomainNameServers"`
			DomainNameSearchList     []string `json:"DomainNameSearchList"`
			PrivateDNSName           string   `json:"PrivateDNSName"`
			SubnetGatewayIpv4Address string   `json:"SubnetGatewayIpv4Address"`
		} `json:"Networks"`
		ContainerARN string `json:"ContainerARN"`
		LogOptions   struct {
			AwslogsGroup  string `json:"awslogs-group"`
			AwslogsRegion string `json:"awslogs-region"`
			AwslogsStream string `json:"awslogs-stream"`
		} `json:"LogOptions"`
		LogDriver string `json:"LogDriver"`
	} `json:"Containers"`
	LaunchType string `json:"LaunchType"`
	ClockDrift struct {
		ClockErrorBound            float64   `json:"ClockErrorBound"`
		ReferenceTimestamp         time.Time `json:"ReferenceTimestamp"`
		ClockSynchronizationStatus string    `json:"ClockSynchronizationStatus"`
	} `json:"ClockDrift"`
}

type AWSInstanceIdentity

type AWSInstanceIdentity struct {
	AccountID               string      `json:"accountId"`
	Architecture            string      `json:"architecture"`
	AvailabilityZone        string      `json:"availabilityZone"`
	BillingProducts         interface{} `json:"billingProducts"`
	DevpayProductCodes      interface{} `json:"devpayProductCodes"`
	MarketplaceProductCodes interface{} `json:"marketplaceProductCodes"`
	ImageID                 string      `json:"imageId"`
	InstanceID              string      `json:"instanceId"`
	InstanceType            string      `json:"instanceType"`
	KernelID                interface{} `json:"kernelId"`
	PendingTime             time.Time   `json:"pendingTime"`
	PrivateIP               string      `json:"privateIp"`
	RamdiskID               interface{} `json:"ramdiskId"`
	Region                  string      `json:"region"`
	Version                 string      `json:"version"`
}

type AzureMetadataAll

type AzureMetadataAll struct {
	Compute struct {
		AzEnvironment              string `json:"azEnvironment"`
		CustomData                 string `json:"customData"`
		IsHostCompatibilityLayerVM string `json:"isHostCompatibilityLayerVm"`
		Location                   string `json:"location"`
		Name                       string `json:"name"`
		Offer                      string `json:"offer"`
		OsType                     string `json:"osType"`
		PlacementGroupID           string `json:"placementGroupId"`
		Plan                       struct {
			Name      string `json:"name"`
			Product   string `json:"product"`
			Publisher string `json:"publisher"`
		} `json:"plan"`
		PlatformFaultDomain  string `json:"platformFaultDomain"`
		PlatformUpdateDomain string `json:"platformUpdateDomain"`
		Provider             string `json:"provider"`
		PublicKeys           []struct {
			KeyData string `json:"keyData"`
			Path    string `json:"path"`
		} `json:"publicKeys"`
		Publisher         string `json:"publisher"`
		ResourceGroupName string `json:"resourceGroupName"`
		ResourceID        string `json:"resourceId"`
		SecurityProfile   struct {
			SecureBootEnabled string `json:"secureBootEnabled"`
			VirtualTpmEnabled string `json:"virtualTpmEnabled"`
		} `json:"securityProfile"`
		Sku            string `json:"sku"`
		StorageProfile struct {
			DataDisks      []interface{} `json:"dataDisks"`
			ImageReference struct {
				ID        string `json:"id"`
				Offer     string `json:"offer"`
				Publisher string `json:"publisher"`
				Sku       string `json:"sku"`
				Version   string `json:"version"`
			} `json:"imageReference"`
			OsDisk struct {
				Caching          string `json:"caching"`
				CreateOption     string `json:"createOption"`
				DiffDiskSettings struct {
					Option string `json:"option"`
				} `json:"diffDiskSettings"`
				DiskSizeGB         string `json:"diskSizeGB"`
				EncryptionSettings struct {
					Enabled string `json:"enabled"`
				} `json:"encryptionSettings"`
				Image struct {
					URI string `json:"uri"`
				} `json:"image"`
				ManagedDisk struct {
					ID                 string `json:"id"`
					StorageAccountType string `json:"storageAccountType"`
				} `json:"managedDisk"`
				Name   string `json:"name"`
				OsType string `json:"osType"`
				Vhd    struct {
					URI string `json:"uri"`
				} `json:"vhd"`
				WriteAcceleratorEnabled string `json:"writeAcceleratorEnabled"`
			} `json:"osDisk"`
		} `json:"storageProfile"`
		SubscriptionID string        `json:"subscriptionId"`
		Tags           string        `json:"tags"`
		TagsList       []interface{} `json:"tagsList"`
		Version        string        `json:"version"`
		VMID           string        `json:"vmId"`
		VMScaleSetName string        `json:"vmScaleSetName"`
		VMSize         string        `json:"vmSize"`
		Zone           string        `json:"zone"`
	} `json:"compute"`
	Network struct {
		Interface []struct {
			Ipv4 struct {
				IPAddress []struct {
					PrivateIPAddress string `json:"privateIpAddress"`
					PublicIPAddress  string `json:"publicIpAddress"`
				} `json:"ipAddress"`
				Subnet []struct {
					Address string `json:"address"`
					Prefix  string `json:"prefix"`
				} `json:"subnet"`
			} `json:"ipv4"`
			Ipv6 struct {
				IPAddress []interface{} `json:"ipAddress"`
			} `json:"ipv6"`
			MacAddress string `json:"macAddress"`
		} `json:"interface"`
	} `json:"network"`
}

type CloudMetadata

type CloudMetadata struct {
	CloudProvider     string   `json:"cloud_provider"`
	TaskARN           string   `json:"task_arn,omitempty"`
	Family            string   `json:"family,omitempty"`
	InstanceID        string   `json:"instance_id,omitempty"`
	PublicIP          []string `json:"public_ip"`
	PrivateIP         []string `json:"private_ip"`
	NetworkMode       string   `json:"network_mode,omitempty"`
	InstanceType      string   `json:"instance_type,omitempty"`
	Hostname          string   `json:"hostname,omitempty"`
	KernelId          string   `json:"kernel_id,omitempty"`
	ID                string   `json:"id,omitempty"`
	Label             string   `json:"label,omitempty"`
	DataCenter        string   `json:"data_center,omitempty"`
	Domain            string   `json:"domain,omitempty"`
	Region            string   `json:"region,omitempty"`
	Zone              string   `json:"zone,omitempty"`
	Name              string   `json:"name,omitempty"`
	MachineType       string   `json:"machine_type,omitempty"`
	VmID              string   `json:"vm_id,omitempty"`
	VMSize            string   `json:"vm_size,omitempty"`
	OsType            string   `json:"os_type,omitempty"`
	SKU               string   `json:"sku,omitempty"`
	ResourceGroupName string   `json:"resource_group_name,omitempty"`
}

func GetAWSFargateMetadata

func GetAWSFargateMetadata(onlyValidate bool) (CloudMetadata, error)

GetAWSFargateMetadata returns fargate meta data from the ecs instances

func GetAWSMetadata

func GetAWSMetadata(onlyValidate bool) (CloudMetadata, error)

func GetAzureMetadata

func GetAzureMetadata(onlyValidate bool) (CloudMetadata, error)

func GetDigitalOceanMetadata

func GetDigitalOceanMetadata(onlyValidate bool) (CloudMetadata, error)

func GetGenericMetadata

func GetGenericMetadata(onlyValidate bool) (CloudMetadata, error)

func GetGoogleCloudMetadata

func GetGoogleCloudMetadata(onlyValidate bool) (CloudMetadata, error)

func GetSoftlayerMetadata

func GetSoftlayerMetadata(onlyValidate bool) (CloudMetadata, error)

type DigitalOceanMetadataAll

type DigitalOceanMetadataAll struct {
	DropletID  int      `json:"droplet_id"`
	Hostname   string   `json:"hostname"`
	VendorData string   `json:"vendor_data"`
	PublicKeys []string `json:"public_keys"`
	AuthKey    string   `json:"auth_key"`
	Region     string   `json:"region"`
	Interfaces struct {
		Private []struct {
			Ipv4 struct {
				IPAddress string `json:"ip_address"`
				Netmask   string `json:"netmask"`
				Gateway   string `json:"gateway"`
			} `json:"ipv4"`
			Mac  string `json:"mac"`
			Type string `json:"type"`
		} `json:"private"`
		Public []struct {
			Ipv4 struct {
				IPAddress string `json:"ip_address"`
				Netmask   string `json:"netmask"`
				Gateway   string `json:"gateway"`
			} `json:"ipv4"`
			AnchorIpv4 struct {
				IPAddress string `json:"ip_address"`
				Netmask   string `json:"netmask"`
				Gateway   string `json:"gateway"`
			} `json:"anchor_ipv4"`
			Mac  string `json:"mac"`
			Type string `json:"type"`
		} `json:"public"`
	} `json:"interfaces"`
	FloatingIP struct {
		Ipv4 struct {
			Active bool `json:"active"`
		} `json:"ipv4"`
	} `json:"floating_ip"`
	DNS struct {
		Nameservers []string `json:"nameservers"`
	} `json:"dns"`
	Tags     []string `json:"tags"`
	Features struct {
		DhcpEnabled bool `json:"dhcp_enabled"`
	} `json:"features"`
	ModifyIndex int `json:"modify_index"`
}

type GoogleCloudMetadataAll

type GoogleCloudMetadataAll 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"`
	Licenses []struct {
		ID string `json:"id"`
	} `json:"licenses"`
	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      []interface{} `json:"forwardedIps"`
		Gateway           string        `json:"gateway"`
		IP                string        `json:"ip"`
		IPAliases         []interface{} `json:"ipAliases"`
		Mac               string        `json:"mac"`
		Mtu               int           `json:"mtu"`
		Network           string        `json:"network"`
		Subnetmask        string        `json:"subnetmask"`
		TargetInstanceIps []interface{} `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 {
		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"`
}

Jump to

Keyboard shortcuts

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