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,
}
}