in teamcity/group.go [95:158]
func (r *groupResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
var plan groupResourceModel
diags := req.Plan.Get(ctx, &plan)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
group := client.Group{
Name: plan.Name.ValueString(),
}
if !plan.Key.IsNull() {
group.Key = plan.Key.ValueString()
}
group.Roles = &client.RoleAssignments{
RoleAssignment: []client.RoleAssignment{},
}
if plan.Roles != nil {
for _, role := range plan.Roles {
assignment := client.RoleAssignment{
Id: role.Id.ValueString(),
}
assignment.Scope = scope(role)
group.Roles.RoleAssignment = append(group.Roles.RoleAssignment, assignment)
}
}
if !plan.ParentGroups.IsNull() {
var parents []types.String
diags = plan.ParentGroups.ElementsAs(ctx, &parents, false)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
group.Parents = &client.ParentGroups{}
for _, i := range parents {
val := i.ValueString()
group.Parents.Group = append(
group.Parents.Group,
client.Group{Key: val},
)
}
}
actual, err := r.client.NewGroup(group)
if err != nil {
resp.Diagnostics.AddError(
"Error adding group",
err.Error(),
)
return
}
newState := r.readState(actual)
diags = resp.State.Set(ctx, newState)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
}