in teamcity/role.go [160:220]
func (r *roleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
var plan roleResourceModel
diags := req.Plan.Get(ctx, &plan)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
val := plan.Name.ValueString()
role := client.Role{
Name: &val,
}
if !plan.Included.IsNull() {
var roles []types.String
diags = plan.Included.ElementsAs(ctx, &roles, false)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
role.Included = &client.Included{}
for _, i := range roles {
val := i.ValueString()
role.Included.Role = append(
role.Included.Role,
client.Role{Id: &val},
)
}
}
if !plan.Permissions.IsNull() {
var perms []types.String
diags = plan.Permissions.ElementsAs(ctx, &perms, false)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
role.Permissions = &client.Permissions{}
for _, i := range perms {
role.Permissions.Permission = append(
role.Permissions.Permission,
client.Permission{Id: i.ValueString()},
)
}
}
actual, err := r.client.NewRole(role)
if err != nil {
resp.Diagnostics.AddError(
"Error setting role",
"Cannot set role, unexpected error: "+err.Error(),
)
return
}
newState := r.readState(actual)
diags = resp.State.Set(ctx, newState)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
}