* add DNS record * revamp tests * lint * cleanup * feat dns test * chore: add DNS Record tests * linting * f
36 lines
1.1 KiB
Go
36 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"github.com/hashicorp/terraform-plugin-framework/attr"
|
|
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
|
|
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
|
|
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
|
|
)
|
|
|
|
// ID generates an attribute definition suitable for the always-present `id` attribute.
|
|
func ID(desc ...string) schema.StringAttribute {
|
|
a := schema.StringAttribute{
|
|
Computed: true,
|
|
Description: "The unique identifier of this resource.",
|
|
PlanModifiers: []planmodifier.String{
|
|
stringplanmodifier.UseStateForUnknown(),
|
|
},
|
|
}
|
|
|
|
if len(desc) > 0 {
|
|
a.Description = desc[0]
|
|
}
|
|
|
|
return a
|
|
}
|
|
|
|
// ShouldBeRemoved evaluates if an attribute should be removed from the plan during update.
|
|
func ShouldBeRemoved(plan attr.Value, state attr.Value, isClone bool) bool {
|
|
return !IsDefined(plan) && IsDefined(state) && !isClone
|
|
}
|
|
|
|
// IsDefined returns true if attribute is known and not null.
|
|
func IsDefined(v attr.Value) bool {
|
|
return !v.IsNull() && !v.IsUnknown()
|
|
}
|