コード例 #1
0
func parseAttributes(metadata Metadata) map[string]string {
	attrs := map[string]string{
		"DIGITALOCEAN_HOSTNAME": metadata.Hostname,
	}

	for i, iface := range metadata.Interfaces.Public {
		if iface.IPv4 != nil {
			attrs[fmt.Sprintf("DIGITALOCEAN_IPV4_PUBLIC_%d", i)] =
				providers.String(net.ParseIP(iface.IPv4.IPAddress))
		}
		if iface.IPv6 != nil {
			attrs[fmt.Sprintf("DIGITALOCEAN_IPV6_PUBLIC_%d", i)] =
				providers.String(net.ParseIP(iface.IPv6.IPAddress))
		}
		if iface.AnchorIPv4 != nil {
			attrs[fmt.Sprintf("DIGITALOCEAN_IPV4_ANCHOR_%d", i)] =
				providers.String(net.ParseIP(iface.AnchorIPv4.IPAddress))
		}
	}

	for i, iface := range metadata.Interfaces.Private {
		if iface.IPv4 != nil {
			attrs[fmt.Sprintf("DIGITALOCEAN_IPV4_PRIVATE_%d", i)] =
				providers.String(net.ParseIP(iface.IPv4.IPAddress))
		}
		if iface.IPv6 != nil {
			attrs[fmt.Sprintf("DIGITALOCEAN_IPV6_PRIVATE_%d", i)] =
				providers.String(net.ParseIP(iface.IPv6.IPAddress))
		}
	}

	return attrs
}
コード例 #2
0
ファイル: ec2.go プロジェクト: coreos/coreos-metadata
func FetchMetadata() (providers.Metadata, error) {
	instanceId, _, err := fetchString("instance-id")
	if err != nil {
		return providers.Metadata{}, err
	}

	public, err := fetchIP("public-ipv4")
	if err != nil {
		return providers.Metadata{}, err
	}
	local, err := fetchIP("local-ipv4")
	if err != nil {
		return providers.Metadata{}, err
	}
	hostname, _, err := fetchString("hostname")
	if err != nil {
		return providers.Metadata{}, err
	}

	sshKeys, err := fetchSshKeys()
	if err != nil {
		return providers.Metadata{}, err
	}

	return providers.Metadata{
		Attributes: map[string]string{
			"EC2_INSTANCE_ID": instanceId,
			"EC2_IPV4_LOCAL":  providers.String(local),
			"EC2_IPV4_PUBLIC": providers.String(public),
			"EC2_HOSTNAME":    hostname,
		},
		Hostname: hostname,
		SshKeys:  sshKeys,
	}, nil
}
コード例 #3
0
ファイル: gce.go プロジェクト: coreos/coreos-metadata
func FetchMetadata() (providers.Metadata, error) {
	public, err := fetchIP("instance/network-interfaces/0/access-configs/0/external-ip")
	if err != nil {
		return providers.Metadata{}, err
	}
	local, err := fetchIP("instance/network-interfaces/0/ip")
	if err != nil {
		return providers.Metadata{}, err
	}
	hostname, _, err := fetchString("instance/hostname")
	if err != nil {
		return providers.Metadata{}, err
	}
	sshKeys, err := fetchAllSshKeys()
	if err != nil {
		return providers.Metadata{}, err
	}

	return providers.Metadata{
		Attributes: map[string]string{
			"GCE_IP_LOCAL_0":    providers.String(local),
			"GCE_IP_EXTERNAL_0": providers.String(public),
			"GCE_HOSTNAME":      hostname,
		},
		Hostname: hostname,
		SshKeys:  sshKeys,
	}, nil
}
コード例 #4
0
ファイル: packet.go プロジェクト: coreos/coreos-metadata
func ipAddresses(network metadata.NetworkInfo) map[string]string {
	var publicIPv4, privateIPv4, publicIPv6, privateIPv6 []net.IP

	for _, addr := range network.Addresses {
		switch {
		case addr.Family == 4 && addr.Public:
			publicIPv4 = append(publicIPv4, addr.Address)

		case addr.Family == 4 && !addr.Public:
			privateIPv4 = append(privateIPv4, addr.Address)

		case addr.Family == 6 && addr.Public:
			publicIPv6 = append(publicIPv6, addr.Address)

		case addr.Family == 6 && !addr.Public:
			privateIPv6 = append(privateIPv6, addr.Address)
		}
	}

	addresses := make(map[string]string)

	for i, ip := range publicIPv4 {
		addresses[fmt.Sprintf("PACKET_IPV4_PUBLIC_%d", i)] = providers.String(ip)
	}

	for i, ip := range privateIPv4 {
		addresses[fmt.Sprintf("PACKET_IPV4_PRIVATE_%d", i)] = providers.String(ip)
	}

	for i, ip := range publicIPv6 {
		addresses[fmt.Sprintf("PACKET_IPV6_PUBLIC_%d", i)] = providers.String(ip)
	}

	for i, ip := range privateIPv6 {
		addresses[fmt.Sprintf("PACKET_IPV6_PRIVATE_%d", i)] = providers.String(ip)
	}

	return addresses
}
コード例 #5
0
ファイル: azure.go プロジェクト: coreos/coreos-metadata
func FetchMetadata() (providers.Metadata, error) {
	addr, err := getFabricAddress()
	if err != nil {
		return providers.Metadata{}, err
	}

	if err := assertFabricCompatible(addr, FabricProtocolVersion); err != nil {
		return providers.Metadata{}, err
	}

	config, err := fetchSharedConfig(addr)
	if err != nil {
		return providers.Metadata{}, err
	}

	return providers.Metadata{
		Attributes: map[string]string{
			"AZURE_IPV4_DYNAMIC": providers.String(config.dynamicIPv4),
			"AZURE_IPV4_VIRTUAL": providers.String(config.virtualIPv4),
		},
	}, nil
}