func()

in teamcity/pool_resource.go [159:214]


func (r *poolResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
	// get current state
	var state models.PoolDataModel
	diags := req.State.Get(ctx, &state)
	resp.Diagnostics.Append(diags...)
	if resp.Diagnostics.HasError() {
		return
	}

	// get refreshed pool
	pool, err := r.client.GetPool(state.Name.ValueString())
	if err != nil && errors.Is(err, context.DeadlineExceeded) {
		resp.Diagnostics.AddError(
			"Agent Pool not found: Timeout",
			err.Error(),
		)
		return
	}

	if err != nil {
		resp.Diagnostics.AddAttributeError(
			path.Root("name"),
			"Agent Pool not found",
			"Cannot get an Agent Pool since there is no Agent Pool with the provided name.",
		)
		return
	}

	// refresh state to reflect resource not found
	if pool == nil {
		resp.State.RemoveResource(ctx)
		return
	}

	// overwrite with refreshed state
	state = models.PoolDataModel{
		Name:     types.StringValue(string(pool.Name)),
		Size:     pool.GetSize(),
		Id:       types.Int64Value(int64(*(pool.Id))),
		Projects: types.SetNull(types.StringType),
	}

	if pool.Projects != nil {
		state.Projects, diags = types.SetValue(types.StringType, getProjectsAttrValue(pool.Projects.Project))
		if diags.HasError() {
			return
		}
	}

	// set state
	diags = resp.State.Set(ctx, &state)
	resp.Diagnostics.Append(diags...)
	if resp.Diagnostics.HasError() {
		return
	}
}