provider

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2023 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

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(m *Environment)

func WatchNetwork

func WatchNetwork(m *Environment)

Types

type Azure

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

func NewAzure

func NewAzure() *Azure

func (*Azure) ConfigureNetworkFromCloudMeta

func (az *Azure) ConfigureNetworkFromCloudMeta(m *Environment) error

func (*Azure) FetchCloudMetadata

func (az *Azure) FetchCloudMetadata() error

func (*Azure) LinkSaveCloudMetadata

func (az *Azure) LinkSaveCloudMetadata(m *Environment) error

func (*Azure) SaveCloudMetadata

func (az *Azure) SaveCloudMetadata() error

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 NewEC2

func NewEC2() *EC2

func (*EC2) ConfigureNetworkFromCloudMeta

func (ec2 *EC2) ConfigureNetworkFromCloudMeta(m *Environment) error

func (*EC2) FetchCloudMetadata

func (ec2 *EC2) FetchCloudMetadata() error

func (*EC2) LinkSaveCloudMetadata

func (ec2 *EC2) LinkSaveCloudMetadata(m *Environment) error

func (*EC2) SaveCloudMetadata

func (ec2 *EC2) SaveCloudMetadata() error

func (*EC2) SaveCloudMetadataIdentityCredentials

func (ec2 *EC2) SaveCloudMetadataIdentityCredentials() error

type EC2Credentials

type EC2Credentials struct {
	Code            string `json:"Code"`
	Lastupdated     string `json:"LastUpdated"`
	Type            string `json:"Type"`
	Accesskeyid     string `json:"AccessKeyId"`
	Secretaccesskey string `json:"SecretAccessKey"`
	Token           string `json:"Token"`
	Expiration      string `json:"Expiration"`
}

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 NewGCP

func NewGCP() *GCP

func (*GCP) ConfigureNetworkFromCloudMeta

func (g *GCP) ConfigureNetworkFromCloudMeta(m *Environment) error

func (*GCP) FetchCloudMetadata

func (g *GCP) FetchCloudMetadata() error

func (*GCP) LinkSaveCloudMetadata

func (g *GCP) LinkSaveCloudMetadata(m *Environment) error

func (*GCP) ParseIpv4GatewayFromMetadataByMac

func (g *GCP) ParseIpv4GatewayFromMetadataByMac(mac string) (string, error)

func (*GCP) ParseLinkMTUFromMetadataByMac

func (g *GCP) ParseLinkMTUFromMetadataByMac(mac string) (int, error)

func (*GCP) SaveCloudMetadata

func (g *GCP) SaveCloudMetadata() error

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"`
}

Jump to

Keyboard shortcuts

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