func()

in pkg/cloudprovider/aws/instance.go [245:285]


func (p *InstanceProvider) instanceToNode(ctx context.Context, instance *ec2.Instance, instanceTypes []cloudprovider.InstanceType) (*v1.Node, error) {
	for _, instanceType := range instanceTypes {
		if instanceType.Name() == aws.StringValue(instance.InstanceType) {
			nodeName := strings.ToLower(aws.StringValue(instance.PrivateDnsName))
			if injection.GetOptions(ctx).GetAWSNodeNameConvention() == options.ResourceName {
				nodeName = aws.StringValue(instance.InstanceId)
			}
			return &v1.Node{
				ObjectMeta: metav1.ObjectMeta{
					Name: nodeName,
					Labels: map[string]string{
						v1.LabelTopologyZone:       aws.StringValue(instance.Placement.AvailabilityZone),
						v1.LabelInstanceTypeStable: aws.StringValue(instance.InstanceType),
						v1alpha5.LabelCapacityType: getCapacityType(instance),
					},
				},
				Spec: v1.NodeSpec{
					ProviderID: fmt.Sprintf("aws:///%s/%s", aws.StringValue(instance.Placement.AvailabilityZone), aws.StringValue(instance.InstanceId)),
				},
				Status: v1.NodeStatus{
					Allocatable: v1.ResourceList{
						v1.ResourcePods:   *instanceType.Pods(),
						v1.ResourceCPU:    *instanceType.CPU(),
						v1.ResourceMemory: *instanceType.Memory(),
					},
					Capacity: v1.ResourceList{
						v1.ResourcePods:   *instanceType.Pods(),
						v1.ResourceCPU:    *instanceType.CPU(),
						v1.ResourceMemory: *instanceType.Memory(),
					},
					NodeInfo: v1.NodeSystemInfo{
						Architecture:    v1alpha1.AWSToKubeArchitectures[aws.StringValue(instance.Architecture)],
						OSImage:         aws.StringValue(instance.ImageId),
						OperatingSystem: v1alpha5.OperatingSystemLinux,
					},
				},
			}, nil
		}
	}
	return nil, fmt.Errorf("unrecognized instance type %s", aws.StringValue(instance.InstanceType))
}