func()

in pkg/providers/v1/aws.go [1509:1555]


func (c *Cloud) NodeAddresses(ctx context.Context, name types.NodeName) ([]v1.NodeAddress, error) {
	addresses := []v1.NodeAddress{}

	for _, family := range c.cfg.Global.NodeIPFamilies {
		switch family {
		case "ipv4":
			if c.selfAWSInstance.nodeName == name || len(name) == 0 {
				addrs, err := c.ipv4AddressesFromMetadata()
				if err != nil {
					return nil, err
				}
				addresses = append(addresses, addrs...)
			} else {
				instance, err := c.getInstanceByNodeName(name)
				if err != nil {
					return nil, fmt.Errorf("getInstanceByNodeName failed for %q with %q", name, err)
				}

				addrs, err := extractIPv4NodeAddresses(instance)
				if err != nil {
					return nil, fmt.Errorf("getInstanceByNodeName failed for %q with %q", name, err)
				}
				addresses = append(addresses, addrs...)
			}
		case "ipv6":
			if c.selfAWSInstance.nodeName == name || len(name) == 0 {
				addrs, err := c.ipv6AddressesFromMetadata()
				if err != nil {
					return nil, err
				}
				addresses = append(addresses, addrs...)
			} else {
				instance, err := c.getInstanceByNodeName(name)
				if err != nil {
					return nil, fmt.Errorf("getInstanceByNodeName failed for %q with %q", name, err)
				}

				addrs, err := extractIPv6NodeAddresses(instance)
				if err != nil {
					return nil, fmt.Errorf("getInstanceByNodeName failed for %q with %q", name, err)
				}
				addresses = append(addresses, addrs...)
			}
		}
	}
	return addresses, nil
}