I am trying to understand how to use keepers with ...
# general
m
I am trying to understand how to use keepers with pulumi's random provider. I want to generate a new name. Imagine i have this:
Copy code
nodeClass, err := karpenterv1beta1.NewEC2NodeClass(ctx, names.Child(k, "default"), &karpenterv1beta1.EC2NodeClassArgs{
		Metadata: metav1.ObjectMetaArgs{
			Name:      pulumi.String("default"),
			Namespace: k.karpenterNamespace.Metadata.Name(),
		},
		Spec: karpenterv1beta1.EC2NodeClassSpecArgs{
			AmiFamily:                  pulumi.String("AL2"),
			Role:                       karpenterNodeRole.Name,
			SubnetSelectorTerms:        subnetSelectorTerms,
			SecurityGroupSelectorTerms: sgSelectorTerms,
			BlockDeviceMappings: karpenterv1beta1.EC2NodeClassSpecBlockDeviceMappingsArray{
				karpenterv1beta1.EC2NodeClassSpecBlockDeviceMappingsArgs{
					DeviceName: pulumi.String("/dev/xvda"),
					Ebs: karpenterv1beta1.EC2NodeClassSpecBlockDeviceMappingsEbsArgs{
						VolumeSize: pulumi.String("100Gi"),
						VolumeType: pulumi.String("gp3"),
						Encrypted:  pulumi.Bool(true),
					},
				},
			},
		},
	}, opts...)
	if err != nil {
		return nil, err
	}
I want the metadata.name of this to have a randomly generated suffix. Say I use
Copy code
random.NewRandomPet(ctx, names.Child(k, "nodeclass-name"), &random.RandomPetArgs{
		Prefix: pulumi.String("default-"),
	})
How would I define the keepers here? The thing is, there may be some
_internal
level changes in the nodeclass too. How would I make sure those are also monitored? TL;DR i feel like I almost want the inverse relationship. E.g. if anything changes request a new name
d
Usually, if you don't specify the name in metadata, pulumi will use the resource name as a prefix for you
So whatever the output of
names.Child(k, "default")
is will be the name prefix
m
Yep that makes sense and is what I ended up doing