func()

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