func()

in ec/ecresource/extensionresource/create.go [29:82]


func (r *Resource) Create(ctx context.Context, request resource.CreateRequest, response *resource.CreateResponse) {
	if !resourceReady(r, &response.Diagnostics) {
		return
	}

	var newState modelV0

	diags := request.Plan.Get(ctx, &newState)
	response.Diagnostics.Append(diags...)
	if response.Diagnostics.HasError() {
		return
	}

	model, err := extensionapi.Create(
		extensionapi.CreateParams{
			API:         r.client,
			Name:        newState.Name.ValueString(),
			Version:     newState.Version.ValueString(),
			Type:        newState.ExtensionType.ValueString(),
			Description: newState.Description.ValueString(),
			DownloadURL: newState.DownloadURL.ValueString(),
		},
	)
	if err != nil {
		response.Diagnostics.AddError(err.Error(), err.Error())
		return
	}

	newState.ID = types.StringValue(*model.ID)

	if !newState.FilePath.IsNull() && newState.FilePath.ValueString() != "" {
		response.Diagnostics.Append(r.uploadExtension(newState)...)
		if response.Diagnostics.HasError() {
			return
		}
	}

	found, diags := r.read(newState.ID.ValueString(), &newState)
	response.Diagnostics.Append(diags...)
	if !found {
		response.Diagnostics.AddError(
			"Failed to read deployment extension after create.",
			"Failed to read deployment extension after create.",
		)
		response.State.RemoveResource(ctx)
		return
	}
	if response.Diagnostics.HasError() {
		return
	}

	// Finally, set the state
	response.Diagnostics.Append(response.State.Set(ctx, newState)...)
}