new-resource
Create a new Terraform resource for the DataRobot provider
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Create New Terraform Resource
This skill helps you create a new Terraform resource for the DataRobot provider following established patterns.
Steps
-
Create the resource file at
pkg/provider/{resource_name}_resource.go:- Define the resource struct with
provider *Provider - Implement
resource.Resourceinterface (Metadata, Schema, Configure, Create, Read, Update, Delete) - Implement
resource.ResourceWithImportStatefor import support - Add proper MarkdownDescription for all schema attributes
- Define the resource struct with
-
Create the model file at
pkg/provider/{resource_name}_model.go:- Define the ResourceModel struct with
types.*fields - Match field names to API response/request structures
- Define the ResourceModel struct with
-
Add client service methods in
internal/client/:- Add interface methods to
service.go - Implement methods in appropriate
*_service.gofile
- Add interface methods to
-
Create tests at
pkg/provider/{resource_name}_resource_test.go:- Add TestAcc{ResourceName}Resource for acceptance tests
- Add Test{ResourceName}ResourceSchema for schema validation
-
Add example in
examples/resources/{resource_name}/:- Create
resource.tfwith usage example
- Create
-
Update documentation:
- Run
make generateto create docs - Update CHANGELOG.md
- Run
Template
package provider
import (
"context"
"fmt"
"github.com/datarobot-community/terraform-provider-datarobot/internal/client"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/types"
)
var _ resource.Resource = &{ResourceName}Resource{}
var _ resource.ResourceWithImportState = &{ResourceName}Resource{}
func New{ResourceName}Resource() resource.Resource {
return &{ResourceName}Resource{}
}
type {ResourceName}Resource struct {
provider *Provider
}
func (r *{ResourceName}Resource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
resp.TypeName = req.ProviderTypeName + "_{resource_name}"
}
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!