func()

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
}