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