func modelToApi()

in ec/ecresource/organizationresource/mapper_to_api.go [29:106]


func modelToApi(ctx context.Context, m OrganizationMember, organizationID string, diagnostics *diag.Diagnostics) *models.OrganizationMembership {
	// org
	var apiOrgRoleAssignments []*models.OrganizationRoleAssignment
	if !m.OrganizationRole.IsNull() && !m.OrganizationRole.IsUnknown() {
		apiOrgRoleAssignments = append(apiOrgRoleAssignments, &models.OrganizationRoleAssignment{
			OrganizationID: ec.String(organizationID),
			RoleID:         m.OrganizationRole.ValueStringPointer(),
		})
	}

	// deployment
	var modelDeploymentRoles []DeploymentRoleAssignment
	diags := m.DeploymentRoles.ElementsAs(ctx, &modelDeploymentRoles, false)
	if diags.HasError() {
		diagnostics.Append(diags...)
		return nil
	}
	var apiDeploymentRoleAssignments []*models.DeploymentRoleAssignment
	for _, roleAssignment := range modelDeploymentRoles {

		var deploymentIds []string
		diags = roleAssignment.DeploymentIDs.ElementsAs(ctx, &deploymentIds, false)
		if diags.HasError() {
			diagnostics.Append(diags...)
			return nil
		}
		sort.Strings(deploymentIds)

		var applicationRoles []string
		diags = roleAssignment.ApplicationRoles.ElementsAs(ctx, &applicationRoles, false)
		if diags.HasError() {
			diagnostics.Append(diags...)
			return nil
		}
		sort.Strings(applicationRoles)

		apiDeploymentRoleAssignments = append(apiDeploymentRoleAssignments, &models.DeploymentRoleAssignment{
			OrganizationID:   ec.String(organizationID),
			RoleID:           roleModelToApi(roleAssignment.Role.ValueString(), deployment),
			All:              roleAssignment.ForAllDeployments.ValueBoolPointer(),
			DeploymentIds:    deploymentIds,
			ApplicationRoles: applicationRoles,
		})
	}

	// elasticsearch
	apiElasticsearchRoles := projectRolesModelToApi(ctx, m.ProjectElasticsearchRoles, projectElasticsearch, organizationID, diagnostics)
	if diagnostics.HasError() {
		return nil
	}

	// observability
	apiObservabilityRoles := projectRolesModelToApi(ctx, m.ProjectObservabilityRoles, projectObservability, organizationID, diagnostics)
	if diagnostics.HasError() {
		return nil
	}

	// security
	apiSecurityRoles := projectRolesModelToApi(ctx, m.ProjectSecurityRoles, projectSecurity, organizationID, diagnostics)
	if diagnostics.HasError() {
		return nil
	}

	apiRoleAssignments := models.RoleAssignments{
		Organization: apiOrgRoleAssignments,
		Deployment:   apiDeploymentRoleAssignments,
		Project: &models.ProjectRoleAssignments{
			Elasticsearch: apiElasticsearchRoles,
			Observability: apiObservabilityRoles,
			Security:      apiSecurityRoles,
		},
	}
	return &models.OrganizationMembership{
		Email:           m.Email.ValueString(),
		UserID:          m.UserID.ValueStringPointer(),
		RoleAssignments: &apiRoleAssignments,
	}
}