Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tools/generator-terraform - The generated KubernetesFleetUpdateStrategyResource codes have compilation errors #3513

Open
ms-henglu opened this issue Dec 18, 2023 · 0 comments

Comments

@ms-henglu
Copy link
Collaborator

Here's the content of /Users/luheng/go/src/github.com/hashicorp/pandora/config/resources/containerservice.hcl:

  api "2023-10-15" {
    package "FleetUpdateStrategies" {
      definition "kubernetes_fleet_update_strategy" {
        id = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/fleets/{fleetName}/updateStrategies/{updateStrategyName}"
        display_name = "Kubernetes Fleet Update Strategy"
        website_subcategory = "Container"
        description = <<HERE
Manages a Kubernetes Fleet Member
HERE
      }
    }
  }

And generated codes: https://github.com/ms-henglu/terraform-provider-azurerm/blob/branch-231218-aks-fleet-update-strategry/internal/services/containers/kubernetes_fleet_update_strategy_resource_gen.go

The problem is commented in the following generated code snippets:

func (r KubernetesFleetUpdateStrategyResource) mapKubernetesFleetUpdateStrategyResourceUpdateStageSchemaToUpdateStage(input KubernetesFleetUpdateStrategyResourceUpdateStageSchema, output *fleetupdatestrategies.UpdateStage) error {
	output.AfterStageWaitInSeconds = &input.AfterStageWaitInSeconds

	groups := make([]fleetupdatestrategies.UpdateGroup, 0)
	for i, v := range input.Group {
		item := fleetupdatestrategies.UpdateGroup{}
		if err := r.mapKubernetesFleetUpdateStrategyResourceUpdateGroupSchemaToUpdateGroup(v, &item); err != nil {
			return fmt.Errorf("mapping KubernetesFleetUpdateStrategyResourceUpdateGroupSchema item %d to UpdateGroup: %+v", i, err)
		}
		groups = append(groups, item)
	}
	output.Groups = groups // The `Groups` type is "*[]UpdateGroup", so here it should be "output.Groups = &groups"

	output.Name = input.Name
	return nil
}

func (r KubernetesFleetUpdateStrategyResource) mapUpdateStageToKubernetesFleetUpdateStrategyResourceUpdateStageSchema(input fleetupdatestrategies.UpdateStage, output *KubernetesFleetUpdateStrategyResourceUpdateStageSchema) error {
	output.AfterStageWaitInSeconds = pointer.From(input.AfterStageWaitInSeconds)

	groups := make([]KubernetesFleetUpdateStrategyResourceUpdateGroupSchema, 0)

        // the following "input.Groups" type is "*[]UpdateGroup", so it should be "for i, v := range *input.Groups"
	for i, v := range input.Groups {
		item := KubernetesFleetUpdateStrategyResourceUpdateGroupSchema{}
		if err := r.mapUpdateGroupToKubernetesFleetUpdateStrategyResourceUpdateGroupSchema(v, &item); err != nil {
			return fmt.Errorf("mapping KubernetesFleetUpdateStrategyResourceUpdateGroupSchema item %d to UpdateGroup: %+v", i, err)
		}
		groups = append(groups, item)
	}
	output.Group = groups

	output.Name = input.Name
	return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant