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