in pkg/cloudprovider/cloudprovider.go [111:157]
func (c *CloudProvider) instanceToNodeClaim(ctx context.Context, instanceObj *instance.Instance) *karpenterv1.NodeClaim {
nodeClaim := &karpenterv1.NodeClaim{}
if instanceObj == nil {
return nodeClaim
}
labels := instanceObj.Labels
annotations := map[string]string{}
nodeClaim.Name = lo.FromPtr(instanceObj.Name)
if instanceObj.CapacityType != nil {
labels[karpenterv1.CapacityTypeLabelKey] = *instanceObj.CapacityType
}
if instanceObj.Type != nil {
labels[corev1.LabelInstanceTypeStable] = lo.FromPtr(instanceObj.Type)
}
if instanceObj.Tags[karpenterv1.NodePoolLabelKey] != nil {
labels[karpenterv1.NodePoolLabelKey] = *instanceObj.Tags[karpenterv1.NodePoolLabelKey]
}
nodeClaim.Labels = labels
nodeClaim.Annotations = annotations
if timestamp, ok := labels[instance.NodeClaimCreationLabel]; ok {
if creationTime, err := time.Parse(instance.CreationTimestampLayout, timestamp); err == nil {
nodeClaim.CreationTimestamp = metav1.Time{Time: creationTime}
}
}
if instanceObj.ID != nil {
nodeClaim.Status.ProviderID = lo.FromPtr(instanceObj.ID)
}
if instanceObj.ImageID != nil {
nodeClaim.Status.ImageID = *instanceObj.ImageID
}
if instanceObj.State != nil {
if strings.Contains(strings.ToLower(*instanceObj.State), "deleting") {
nodeClaim.DeletionTimestamp = &metav1.Time{Time: time.Now()}
}
}
return nodeClaim
}