func()

in operator/pkg/awsprovider/iam/reconciler.go [51:78]


func (c *Controller) Reconcile(ctx context.Context, controlPlane *apis.ControlPlane) error {
	role, err := c.getRole(ctx, KitNodeRoleNameFor(controlPlane.ClusterName()))
	if err != nil && !errors.IsIAMObjectDoNotExist(err) {
		return fmt.Errorf("getting IAM role for %v, %w", controlPlane.ClusterName(), err)
	}
	if role == nil {
		role, err = c.createRole(ctx, &iam.CreateRoleInput{
			AssumeRolePolicyDocument: aws.String(assumeRolePolicyDocument),
			Description:              aws.String("Role assumed by dataplane nodes created by KIT operated"),
			RoleName:                 aws.String(KitNodeRoleNameFor(controlPlane.ClusterName())),
			Tags:                     generateRoleTags(controlPlane.ClusterName()),
		})
		if err != nil {
			return fmt.Errorf("creating IAM role for %v, %w", controlPlane.ClusterName(), err)
		}
		zap.S().Infof("[%s] Created IAM Role %v", controlPlane.ClusterName(), aws.StringValue(role.RoleName))
	}
	if err := role.addRoleToInstanceProfile(ctx, KitNodeRoleNameFor(controlPlane.ClusterName()),
		KitNodeInstanceProfileNameFor(controlPlane.ClusterName())); err != nil {
		return fmt.Errorf("adding instance profile to role, %w", err)
	}
	for _, policy := range kitNodeRolePolicies {
		if err := role.attachPolicy(ctx, policy, KitNodeRoleNameFor(controlPlane.ClusterName())); err != nil {
			return fmt.Errorf("attaching policies to role, %w", err)
		}
	}
	return nil
}