s/GraphNodeResource/GraphNodeConfigResource/
Make the interface name reflect the new return type of the method. Remove the confusingly named and unused ResourceAddress method from the resource nodes as well.
This commit is contained in:
parent
a7de3d07b8
commit
d905b990a5
|
@ -111,9 +111,9 @@ func evaluateResourceCountExpressionKnown(expr hcl.Expression, ctx EvalContext)
|
||||||
// Since the state is modified in-place, this function must take a writer lock
|
// Since the state is modified in-place, this function must take a writer lock
|
||||||
// on the state. The caller must therefore not also be holding a state lock,
|
// on the state. The caller must therefore not also be holding a state lock,
|
||||||
// or this function will block forever awaiting the lock.
|
// or this function will block forever awaiting the lock.
|
||||||
func fixResourceCountSetTransition(ctx EvalContext, addr addrs.AbsResource, countEnabled bool) {
|
func fixResourceCountSetTransition(ctx EvalContext, addr addrs.ConfigResource, countEnabled bool) {
|
||||||
state := ctx.State()
|
state := ctx.State()
|
||||||
changed := state.MaybeFixUpResourceInstanceAddressForCount(addr.Config(), countEnabled)
|
changed := state.MaybeFixUpResourceInstanceAddressForCount(addr, countEnabled)
|
||||||
if changed {
|
if changed {
|
||||||
log.Printf("[TRACE] renamed first %s instance in transient state due to count argument change", addr)
|
log.Printf("[TRACE] renamed first %s instance in transient state due to count argument change", addr)
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ func (n *EvalCountFixZeroOneBoundaryGlobal) fixModule(ctx EvalContext, moduleAdd
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
hasCount := rCfg.Count != nil
|
hasCount := rCfg.Count != nil
|
||||||
fixResourceCountSetTransition(ctx, r.Addr, hasCount)
|
fixResourceCountSetTransition(ctx, r.Addr.Config(), hasCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -19,7 +19,7 @@ var (
|
||||||
_ GraphNodeDynamicExpandable = (*NodeRefreshableDataResource)(nil)
|
_ GraphNodeDynamicExpandable = (*NodeRefreshableDataResource)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodeRefreshableDataResource)(nil)
|
_ GraphNodeReferenceable = (*NodeRefreshableDataResource)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeRefreshableDataResource)(nil)
|
_ GraphNodeReferencer = (*NodeRefreshableDataResource)(nil)
|
||||||
_ GraphNodeResource = (*NodeRefreshableDataResource)(nil)
|
_ GraphNodeConfigResource = (*NodeRefreshableDataResource)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodeRefreshableDataResource)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodeRefreshableDataResource)(nil)
|
||||||
_ GraphNodeAttachProviderMetaConfigs = (*NodeAbstractResource)(nil)
|
_ GraphNodeAttachProviderMetaConfigs = (*NodeAbstractResource)(nil)
|
||||||
)
|
)
|
||||||
|
|
|
@ -16,11 +16,11 @@ import (
|
||||||
// abstract resource to a concrete one of some type.
|
// abstract resource to a concrete one of some type.
|
||||||
type ConcreteResourceNodeFunc func(*NodeAbstractResource) dag.Vertex
|
type ConcreteResourceNodeFunc func(*NodeAbstractResource) dag.Vertex
|
||||||
|
|
||||||
// GraphNodeResource is implemented by any nodes that represent a resource.
|
// GraphNodeConfigResource is implemented by any nodes that represent a resource.
|
||||||
// The type of operation cannot be assumed, only that this node represents
|
// The type of operation cannot be assumed, only that this node represents
|
||||||
// the given resource.
|
// the given resource.
|
||||||
type GraphNodeResource interface {
|
type GraphNodeConfigResource interface {
|
||||||
ResourceAddr() addrs.AbsResource
|
ResourceAddr() addrs.ConfigResource
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConcreteResourceInstanceNodeFunc is a callback type used to convert an
|
// ConcreteResourceInstanceNodeFunc is a callback type used to convert an
|
||||||
|
@ -69,7 +69,7 @@ var (
|
||||||
_ GraphNodeReferencer = (*NodeAbstractResource)(nil)
|
_ GraphNodeReferencer = (*NodeAbstractResource)(nil)
|
||||||
_ GraphNodeProviderConsumer = (*NodeAbstractResource)(nil)
|
_ GraphNodeProviderConsumer = (*NodeAbstractResource)(nil)
|
||||||
_ GraphNodeProvisionerConsumer = (*NodeAbstractResource)(nil)
|
_ GraphNodeProvisionerConsumer = (*NodeAbstractResource)(nil)
|
||||||
_ GraphNodeResource = (*NodeAbstractResource)(nil)
|
_ GraphNodeConfigResource = (*NodeAbstractResource)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodeAbstractResource)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodeAbstractResource)(nil)
|
||||||
_ GraphNodeAttachResourceSchema = (*NodeAbstractResource)(nil)
|
_ GraphNodeAttachResourceSchema = (*NodeAbstractResource)(nil)
|
||||||
_ GraphNodeAttachProvisionerSchema = (*NodeAbstractResource)(nil)
|
_ GraphNodeAttachProvisionerSchema = (*NodeAbstractResource)(nil)
|
||||||
|
@ -117,7 +117,7 @@ var (
|
||||||
_ GraphNodeReferencer = (*NodeAbstractResourceInstance)(nil)
|
_ GraphNodeReferencer = (*NodeAbstractResourceInstance)(nil)
|
||||||
_ GraphNodeProviderConsumer = (*NodeAbstractResourceInstance)(nil)
|
_ GraphNodeProviderConsumer = (*NodeAbstractResourceInstance)(nil)
|
||||||
_ GraphNodeProvisionerConsumer = (*NodeAbstractResourceInstance)(nil)
|
_ GraphNodeProvisionerConsumer = (*NodeAbstractResourceInstance)(nil)
|
||||||
_ GraphNodeResource = (*NodeAbstractResourceInstance)(nil)
|
_ GraphNodeConfigResource = (*NodeAbstractResourceInstance)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodeAbstractResourceInstance)(nil)
|
_ GraphNodeResourceInstance = (*NodeAbstractResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceState = (*NodeAbstractResourceInstance)(nil)
|
_ GraphNodeAttachResourceState = (*NodeAbstractResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodeAbstractResourceInstance)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodeAbstractResourceInstance)(nil)
|
||||||
|
@ -375,8 +375,8 @@ func (n *NodeAbstractResource) AttachProvisionerSchema(name string, schema *conf
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeResource
|
// GraphNodeResource
|
||||||
func (n *NodeAbstractResource) ResourceAddr() addrs.AbsResource {
|
func (n *NodeAbstractResource) ResourceAddr() addrs.ConfigResource {
|
||||||
return n.addr()
|
return n.Addr
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeResourceInstance
|
// GraphNodeResourceInstance
|
||||||
|
@ -384,11 +384,6 @@ func (n *NodeAbstractResourceInstance) ResourceInstanceAddr() addrs.AbsResourceI
|
||||||
return n.NodeAbstractResource.addr().Instance(n.InstanceKey)
|
return n.NodeAbstractResource.addr().Instance(n.InstanceKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeAddressable, TODO: remove, used by target, should unify
|
|
||||||
func (n *NodeAbstractResource) ResourceAddress() *ResourceAddress {
|
|
||||||
return NewLegacyResourceAddress(n.addr())
|
|
||||||
}
|
|
||||||
|
|
||||||
// GraphNodeTargetable
|
// GraphNodeTargetable
|
||||||
func (n *NodeAbstractResource) SetTargets(targets []addrs.Targetable) {
|
func (n *NodeAbstractResource) SetTargets(targets []addrs.Targetable) {
|
||||||
n.Targets = targets
|
n.Targets = targets
|
||||||
|
|
|
@ -21,7 +21,7 @@ type NodeApplyableResource struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ GraphNodeResource = (*NodeApplyableResource)(nil)
|
_ GraphNodeConfigResource = (*NodeApplyableResource)(nil)
|
||||||
_ GraphNodeEvalable = (*NodeApplyableResource)(nil)
|
_ GraphNodeEvalable = (*NodeApplyableResource)(nil)
|
||||||
_ GraphNodeProviderConsumer = (*NodeApplyableResource)(nil)
|
_ GraphNodeProviderConsumer = (*NodeApplyableResource)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodeApplyableResource)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodeApplyableResource)(nil)
|
||||||
|
|
|
@ -28,7 +28,7 @@ type NodeApplyableResourceInstance struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ GraphNodeResource = (*NodeApplyableResourceInstance)(nil)
|
_ GraphNodeConfigResource = (*NodeApplyableResourceInstance)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodeApplyableResourceInstance)(nil)
|
_ GraphNodeResourceInstance = (*NodeApplyableResourceInstance)(nil)
|
||||||
_ GraphNodeCreator = (*NodeApplyableResourceInstance)(nil)
|
_ GraphNodeCreator = (*NodeApplyableResourceInstance)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeApplyableResourceInstance)(nil)
|
_ GraphNodeReferencer = (*NodeApplyableResourceInstance)(nil)
|
||||||
|
@ -99,8 +99,13 @@ func (n *NodeApplyableResourceInstance) References() []*addrs.Reference {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeAttachDependencies
|
// GraphNodeAttachDependencies
|
||||||
func (n *NodeApplyableResourceInstance) AttachDependencies(deps []addrs.AbsResource) {
|
func (n *NodeApplyableResourceInstance) AttachDependencies(deps []addrs.ConfigResource) {
|
||||||
n.Dependencies = deps
|
var shimmed []addrs.AbsResource
|
||||||
|
for _, r := range deps {
|
||||||
|
shimmed = append(shimmed, r.Absolute(r.Module.UnkeyedInstanceShim()))
|
||||||
|
}
|
||||||
|
|
||||||
|
n.Dependencies = shimmed
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeEvalable
|
// GraphNodeEvalable
|
||||||
|
|
|
@ -26,7 +26,7 @@ type NodeDestroyResourceInstance struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ GraphNodeResource = (*NodeDestroyResourceInstance)(nil)
|
_ GraphNodeConfigResource = (*NodeDestroyResourceInstance)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodeDestroyResourceInstance)(nil)
|
_ GraphNodeResourceInstance = (*NodeDestroyResourceInstance)(nil)
|
||||||
_ GraphNodeDestroyer = (*NodeDestroyResourceInstance)(nil)
|
_ GraphNodeDestroyer = (*NodeDestroyResourceInstance)(nil)
|
||||||
_ GraphNodeDestroyerCBD = (*NodeDestroyResourceInstance)(nil)
|
_ GraphNodeDestroyerCBD = (*NodeDestroyResourceInstance)(nil)
|
||||||
|
@ -292,10 +292,10 @@ type NodeDestroyResource struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ GraphNodeResource = (*NodeDestroyResource)(nil)
|
_ GraphNodeConfigResource = (*NodeDestroyResource)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodeDestroyResource)(nil)
|
_ GraphNodeReferenceable = (*NodeDestroyResource)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeDestroyResource)(nil)
|
_ GraphNodeReferencer = (*NodeDestroyResource)(nil)
|
||||||
_ GraphNodeEvalable = (*NodeDestroyResource)(nil)
|
_ GraphNodeEvalable = (*NodeDestroyResource)(nil)
|
||||||
|
|
||||||
// FIXME: this is here to document that this node is both
|
// FIXME: this is here to document that this node is both
|
||||||
// GraphNodeProviderConsumer by virtue of the embedded
|
// GraphNodeProviderConsumer by virtue of the embedded
|
||||||
|
@ -339,7 +339,7 @@ func (n *NodeDestroyResource) EvalTree() EvalNode {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeResource
|
// GraphNodeResource
|
||||||
func (n *NodeDestroyResource) ResourceAddr() addrs.AbsResource {
|
func (n *NodeDestroyResource) ResourceAddr() addrs.ConfigResource {
|
||||||
return n.NodeAbstractResource.ResourceAddr()
|
return n.NodeAbstractResource.ResourceAddr()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ type NodePlanDeposedResourceInstanceObject struct {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ GraphNodeDeposedResourceInstanceObject = (*NodePlanDeposedResourceInstanceObject)(nil)
|
_ GraphNodeDeposedResourceInstanceObject = (*NodePlanDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeResource = (*NodePlanDeposedResourceInstanceObject)(nil)
|
_ GraphNodeConfigResource = (*NodePlanDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodePlanDeposedResourceInstanceObject)(nil)
|
_ GraphNodeResourceInstance = (*NodePlanDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodePlanDeposedResourceInstanceObject)(nil)
|
_ GraphNodeReferenceable = (*NodePlanDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeReferencer = (*NodePlanDeposedResourceInstanceObject)(nil)
|
_ GraphNodeReferencer = (*NodePlanDeposedResourceInstanceObject)(nil)
|
||||||
|
@ -167,7 +167,7 @@ type NodeDestroyDeposedResourceInstanceObject struct {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ GraphNodeDeposedResourceInstanceObject = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
_ GraphNodeDeposedResourceInstanceObject = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeResource = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
_ GraphNodeConfigResource = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
_ GraphNodeResourceInstance = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeDestroyer = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
_ GraphNodeDestroyer = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
||||||
_ GraphNodeDestroyerCBD = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
_ GraphNodeDestroyerCBD = (*NodeDestroyDeposedResourceInstanceObject)(nil)
|
||||||
|
|
|
@ -23,7 +23,7 @@ var (
|
||||||
_ GraphNodeDynamicExpandable = (*NodePlannableResource)(nil)
|
_ GraphNodeDynamicExpandable = (*NodePlannableResource)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodePlannableResource)(nil)
|
_ GraphNodeReferenceable = (*NodePlannableResource)(nil)
|
||||||
_ GraphNodeReferencer = (*NodePlannableResource)(nil)
|
_ GraphNodeReferencer = (*NodePlannableResource)(nil)
|
||||||
_ GraphNodeResource = (*NodePlannableResource)(nil)
|
_ GraphNodeConfigResource = (*NodePlannableResource)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodePlannableResource)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodePlannableResource)(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ var (
|
||||||
_ GraphNodeReferenceable = (*NodePlanDestroyableResourceInstance)(nil)
|
_ GraphNodeReferenceable = (*NodePlanDestroyableResourceInstance)(nil)
|
||||||
_ GraphNodeReferencer = (*NodePlanDestroyableResourceInstance)(nil)
|
_ GraphNodeReferencer = (*NodePlanDestroyableResourceInstance)(nil)
|
||||||
_ GraphNodeDestroyer = (*NodePlanDestroyableResourceInstance)(nil)
|
_ GraphNodeDestroyer = (*NodePlanDestroyableResourceInstance)(nil)
|
||||||
_ GraphNodeResource = (*NodePlanDestroyableResourceInstance)(nil)
|
_ GraphNodeConfigResource = (*NodePlanDestroyableResourceInstance)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodePlanDestroyableResourceInstance)(nil)
|
_ GraphNodeResourceInstance = (*NodePlanDestroyableResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodePlanDestroyableResourceInstance)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodePlanDestroyableResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceState = (*NodePlanDestroyableResourceInstance)(nil)
|
_ GraphNodeAttachResourceState = (*NodePlanDestroyableResourceInstance)(nil)
|
||||||
|
|
|
@ -23,7 +23,7 @@ var (
|
||||||
_ GraphNodeModuleInstance = (*NodePlannableResourceInstance)(nil)
|
_ GraphNodeModuleInstance = (*NodePlannableResourceInstance)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodePlannableResourceInstance)(nil)
|
_ GraphNodeReferenceable = (*NodePlannableResourceInstance)(nil)
|
||||||
_ GraphNodeReferencer = (*NodePlannableResourceInstance)(nil)
|
_ GraphNodeReferencer = (*NodePlannableResourceInstance)(nil)
|
||||||
_ GraphNodeResource = (*NodePlannableResourceInstance)(nil)
|
_ GraphNodeConfigResource = (*NodePlannableResourceInstance)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodePlannableResourceInstance)(nil)
|
_ GraphNodeResourceInstance = (*NodePlannableResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodePlannableResourceInstance)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodePlannableResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceState = (*NodePlannableResourceInstance)(nil)
|
_ GraphNodeAttachResourceState = (*NodePlannableResourceInstance)(nil)
|
||||||
|
|
|
@ -16,7 +16,7 @@ var (
|
||||||
_ GraphNodeModuleInstance = (*NodePlannableResourceInstanceOrphan)(nil)
|
_ GraphNodeModuleInstance = (*NodePlannableResourceInstanceOrphan)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodePlannableResourceInstanceOrphan)(nil)
|
_ GraphNodeReferenceable = (*NodePlannableResourceInstanceOrphan)(nil)
|
||||||
_ GraphNodeReferencer = (*NodePlannableResourceInstanceOrphan)(nil)
|
_ GraphNodeReferencer = (*NodePlannableResourceInstanceOrphan)(nil)
|
||||||
_ GraphNodeResource = (*NodePlannableResourceInstanceOrphan)(nil)
|
_ GraphNodeConfigResource = (*NodePlannableResourceInstanceOrphan)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodePlannableResourceInstanceOrphan)(nil)
|
_ GraphNodeResourceInstance = (*NodePlannableResourceInstanceOrphan)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodePlannableResourceInstanceOrphan)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodePlannableResourceInstanceOrphan)(nil)
|
||||||
_ GraphNodeAttachResourceState = (*NodePlannableResourceInstanceOrphan)(nil)
|
_ GraphNodeAttachResourceState = (*NodePlannableResourceInstanceOrphan)(nil)
|
||||||
|
|
|
@ -28,14 +28,19 @@ var (
|
||||||
_ GraphNodeDynamicExpandable = (*NodeRefreshableManagedResource)(nil)
|
_ GraphNodeDynamicExpandable = (*NodeRefreshableManagedResource)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodeRefreshableManagedResource)(nil)
|
_ GraphNodeReferenceable = (*NodeRefreshableManagedResource)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeRefreshableManagedResource)(nil)
|
_ GraphNodeReferencer = (*NodeRefreshableManagedResource)(nil)
|
||||||
_ GraphNodeResource = (*NodeRefreshableManagedResource)(nil)
|
_ GraphNodeConfigResource = (*NodeRefreshableManagedResource)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodeRefreshableManagedResource)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodeRefreshableManagedResource)(nil)
|
||||||
_ GraphNodeAttachDependencies = (*NodeRefreshableManagedResource)(nil)
|
_ GraphNodeAttachDependencies = (*NodeRefreshableManagedResource)(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
// GraphNodeAttachDependencies
|
// GraphNodeAttachDependencies
|
||||||
func (n *NodeRefreshableManagedResource) AttachDependencies(deps []addrs.AbsResource) {
|
func (n *NodeRefreshableManagedResource) AttachDependencies(deps []addrs.ConfigResource) {
|
||||||
n.Dependencies = deps
|
var shimmed []addrs.AbsResource
|
||||||
|
for _, r := range deps {
|
||||||
|
shimmed = append(shimmed, r.Absolute(r.Module.UnkeyedInstanceShim()))
|
||||||
|
}
|
||||||
|
|
||||||
|
n.Dependencies = shimmed
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeDynamicExpandable
|
// GraphNodeDynamicExpandable
|
||||||
|
@ -144,7 +149,7 @@ var (
|
||||||
_ GraphNodeReferenceable = (*NodeRefreshableManagedResourceInstance)(nil)
|
_ GraphNodeReferenceable = (*NodeRefreshableManagedResourceInstance)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeRefreshableManagedResourceInstance)(nil)
|
_ GraphNodeReferencer = (*NodeRefreshableManagedResourceInstance)(nil)
|
||||||
_ GraphNodeDestroyer = (*NodeRefreshableManagedResourceInstance)(nil)
|
_ GraphNodeDestroyer = (*NodeRefreshableManagedResourceInstance)(nil)
|
||||||
_ GraphNodeResource = (*NodeRefreshableManagedResourceInstance)(nil)
|
_ GraphNodeConfigResource = (*NodeRefreshableManagedResourceInstance)(nil)
|
||||||
_ GraphNodeResourceInstance = (*NodeRefreshableManagedResourceInstance)(nil)
|
_ GraphNodeResourceInstance = (*NodeRefreshableManagedResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodeRefreshableManagedResourceInstance)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodeRefreshableManagedResourceInstance)(nil)
|
||||||
_ GraphNodeAttachResourceState = (*NodeRefreshableManagedResourceInstance)(nil)
|
_ GraphNodeAttachResourceState = (*NodeRefreshableManagedResourceInstance)(nil)
|
||||||
|
|
|
@ -18,7 +18,7 @@ var (
|
||||||
_ GraphNodeEvalable = (*NodeValidatableResource)(nil)
|
_ GraphNodeEvalable = (*NodeValidatableResource)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodeValidatableResource)(nil)
|
_ GraphNodeReferenceable = (*NodeValidatableResource)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeValidatableResource)(nil)
|
_ GraphNodeReferencer = (*NodeValidatableResource)(nil)
|
||||||
_ GraphNodeResource = (*NodeValidatableResource)(nil)
|
_ GraphNodeConfigResource = (*NodeValidatableResource)(nil)
|
||||||
_ GraphNodeAttachResourceConfig = (*NodeValidatableResource)(nil)
|
_ GraphNodeAttachResourceConfig = (*NodeValidatableResource)(nil)
|
||||||
_ GraphNodeAttachProviderMetaConfigs = (*NodeValidatableResource)(nil)
|
_ GraphNodeAttachProviderMetaConfigs = (*NodeValidatableResource)(nil)
|
||||||
)
|
)
|
||||||
|
|
|
@ -3,7 +3,6 @@ package terraform
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/terraform/configs/configschema"
|
"github.com/hashicorp/terraform/configs/configschema"
|
||||||
|
@ -13,63 +12,6 @@ import (
|
||||||
"github.com/mitchellh/reflectwalk"
|
"github.com/mitchellh/reflectwalk"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInstanceInfoResourceAddress(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
Input *InstanceInfo
|
|
||||||
Want string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
&InstanceInfo{
|
|
||||||
Id: "test_resource.baz",
|
|
||||||
},
|
|
||||||
"test_resource.baz",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
&InstanceInfo{
|
|
||||||
Id: "test_resource.baz",
|
|
||||||
ModulePath: rootModulePath,
|
|
||||||
},
|
|
||||||
"test_resource.baz",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
&InstanceInfo{
|
|
||||||
Id: "test_resource.baz",
|
|
||||||
ModulePath: []string{"root", "foo"},
|
|
||||||
},
|
|
||||||
"module.foo.test_resource.baz",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
&InstanceInfo{
|
|
||||||
Id: "test_resource.baz",
|
|
||||||
ModulePath: []string{"root", "foo", "bar"},
|
|
||||||
},
|
|
||||||
"module.foo.module.bar.test_resource.baz",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
&InstanceInfo{
|
|
||||||
Id: "test_resource.baz (tainted)",
|
|
||||||
},
|
|
||||||
"test_resource.baz.tainted",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
&InstanceInfo{
|
|
||||||
Id: "test_resource.baz (deposed #0)",
|
|
||||||
},
|
|
||||||
"test_resource.baz.deposed",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, test := range tests {
|
|
||||||
t.Run(strconv.Itoa(i), func(t *testing.T) {
|
|
||||||
gotAddr := test.Input.ResourceAddress()
|
|
||||||
got := gotAddr.String()
|
|
||||||
if got != test.Want {
|
|
||||||
t.Fatalf("wrong result\ngot: %s\nwant: %s", got, test.Want)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResourceConfigGet(t *testing.T) {
|
func TestResourceConfigGet(t *testing.T) {
|
||||||
fooStringSchema := &configschema.Block{
|
fooStringSchema := &configschema.Block{
|
||||||
Attributes: map[string]*configschema.Attribute{
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
// GraphNodeAttachProviderMetaConfigs is an interface that must be implemented
|
// GraphNodeAttachProviderMetaConfigs is an interface that must be implemented
|
||||||
// by nodes that want provider meta configurations attached.
|
// by nodes that want provider meta configurations attached.
|
||||||
type GraphNodeAttachProviderMetaConfigs interface {
|
type GraphNodeAttachProviderMetaConfigs interface {
|
||||||
GraphNodeResource
|
GraphNodeConfigResource
|
||||||
|
|
||||||
// Sets the configuration
|
// Sets the configuration
|
||||||
AttachProviderMetaConfigs(map[addrs.Provider]*configs.ProviderMeta)
|
AttachProviderMetaConfigs(map[addrs.Provider]*configs.ProviderMeta)
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
// GraphNodeAttachResourceConfig is an interface that must be implemented by nodes
|
// GraphNodeAttachResourceConfig is an interface that must be implemented by nodes
|
||||||
// that want resource configurations attached.
|
// that want resource configurations attached.
|
||||||
type GraphNodeAttachResourceConfig interface {
|
type GraphNodeAttachResourceConfig interface {
|
||||||
GraphNodeResource
|
GraphNodeConfigResource
|
||||||
|
|
||||||
// Sets the configuration
|
// Sets the configuration
|
||||||
AttachResourceConfig(*configs.Resource)
|
AttachResourceConfig(*configs.Resource)
|
||||||
|
@ -40,7 +40,7 @@ func (t *AttachResourceConfigTransformer) Transform(g *Graph) error {
|
||||||
addr := arn.ResourceAddr()
|
addr := arn.ResourceAddr()
|
||||||
|
|
||||||
// Get the configuration.
|
// Get the configuration.
|
||||||
config := t.Config.DescendentForInstance(addr.Module)
|
config := t.Config.Descendent(addr.Module)
|
||||||
if config == nil {
|
if config == nil {
|
||||||
log.Printf("[TRACE] AttachResourceConfigTransformer: %q (%T) has no configuration available", dag.VertexName(v), v)
|
log.Printf("[TRACE] AttachResourceConfigTransformer: %q (%T) has no configuration available", dag.VertexName(v), v)
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
// GraphNodeAttachResourceSchema is an interface implemented by node types
|
// GraphNodeAttachResourceSchema is an interface implemented by node types
|
||||||
// that need a resource schema attached.
|
// that need a resource schema attached.
|
||||||
type GraphNodeAttachResourceSchema interface {
|
type GraphNodeAttachResourceSchema interface {
|
||||||
GraphNodeResource
|
GraphNodeConfigResource
|
||||||
GraphNodeProviderConsumer
|
GraphNodeProviderConsumer
|
||||||
|
|
||||||
AttachResourceSchema(schema *configschema.Block, version uint64)
|
AttachResourceSchema(schema *configschema.Block, version uint64)
|
||||||
|
|
|
@ -36,9 +36,9 @@ func (t *DiffTransformer) Transform(g *Graph) error {
|
||||||
// get evaluated before any of the corresponding instances by creating
|
// get evaluated before any of the corresponding instances by creating
|
||||||
// dependency edges, so we'll do some prep work here to ensure we'll only
|
// dependency edges, so we'll do some prep work here to ensure we'll only
|
||||||
// create connections to nodes that existed before we started here.
|
// create connections to nodes that existed before we started here.
|
||||||
resourceNodes := map[string][]GraphNodeResource{}
|
resourceNodes := map[string][]GraphNodeConfigResource{}
|
||||||
for _, node := range g.Vertices() {
|
for _, node := range g.Vertices() {
|
||||||
rn, ok := node.(GraphNodeResource)
|
rn, ok := node.(GraphNodeConfigResource)
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,44 +18,39 @@ import (
|
||||||
type OrphanResourceCountTransformer struct {
|
type OrphanResourceCountTransformer struct {
|
||||||
Concrete ConcreteResourceInstanceNodeFunc
|
Concrete ConcreteResourceInstanceNodeFunc
|
||||||
|
|
||||||
Addr addrs.AbsResource // Addr of the resource to look for orphans
|
Addr addrs.ConfigResource // Addr of the resource to look for orphans
|
||||||
InstanceAddrs []addrs.AbsResourceInstance // Addresses that currently exist in config
|
InstanceAddrs []addrs.AbsResourceInstance // Addresses that currently exist in config
|
||||||
State *states.State // Full global state
|
State *states.State // Full global state
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *OrphanResourceCountTransformer) Transform(g *Graph) error {
|
func (t *OrphanResourceCountTransformer) Transform(g *Graph) error {
|
||||||
// FIXME: This is currently assuming that all of the instances of
|
resources := t.State.Resources(t.Addr)
|
||||||
// this resource belong to a single module instance, which is true
|
if len(resources) == 0 {
|
||||||
// at the time of writing this because Terraform Core doesn't support
|
|
||||||
// repetition of module calls yet, but this will need to be corrected
|
|
||||||
// in order to support count and for_each on module calls, where
|
|
||||||
// our t.InstanceAddrs may contain resource instances from many different
|
|
||||||
// module instances.
|
|
||||||
rs := t.State.Resource(t.Addr)
|
|
||||||
if rs == nil {
|
|
||||||
return nil // Resource doesn't exist in state, so nothing to do!
|
return nil // Resource doesn't exist in state, so nothing to do!
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is an O(n*m) analysis, which we accept for now because the
|
for _, rs := range resources {
|
||||||
// number of instances of a single resource ought to always be small in any
|
// This is an O(n*m) analysis, which we accept for now because the
|
||||||
// reasonable Terraform configuration.
|
// number of instances of a single resource ought to always be small in any
|
||||||
Have:
|
// reasonable Terraform configuration.
|
||||||
for key := range rs.Instances {
|
Have:
|
||||||
thisAddr := t.Addr.Instance(key)
|
for key := range rs.Instances {
|
||||||
for _, wantAddr := range t.InstanceAddrs {
|
thisAddr := rs.Addr.Instance(key)
|
||||||
if wantAddr.Equal(thisAddr) {
|
for _, wantAddr := range t.InstanceAddrs {
|
||||||
continue Have
|
if wantAddr.Equal(thisAddr) {
|
||||||
|
continue Have
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
// If thisAddr is not in t.InstanceAddrs then we've found an "orphan"
|
||||||
// If thisAddr is not in t.InstanceAddrs then we've found an "orphan"
|
|
||||||
|
|
||||||
abstract := NewNodeAbstractResourceInstance(thisAddr)
|
abstract := NewNodeAbstractResourceInstance(thisAddr)
|
||||||
var node dag.Vertex = abstract
|
var node dag.Vertex = abstract
|
||||||
if f := t.Concrete; f != nil {
|
if f := t.Concrete; f != nil {
|
||||||
node = f(abstract)
|
node = f(abstract)
|
||||||
|
}
|
||||||
|
log.Printf("[TRACE] OrphanResourceCountTransformer: adding %s as %T", thisAddr, node)
|
||||||
|
g.Add(node)
|
||||||
}
|
}
|
||||||
log.Printf("[TRACE] OrphanResourceCountTransformer: adding %s as %T", thisAddr, node)
|
|
||||||
g.Add(node)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -137,7 +137,7 @@ func (t *OrphanResourceTransformer) Transform(g *Graph) error {
|
||||||
case GraphNodeResourceInstance:
|
case GraphNodeResourceInstance:
|
||||||
k := tv.ResourceInstanceAddr().ContainingResource().String()
|
k := tv.ResourceInstanceAddr().ContainingResource().String()
|
||||||
deps[k] = append(deps[k], v)
|
deps[k] = append(deps[k], v)
|
||||||
case GraphNodeResource:
|
case GraphNodeConfigResource:
|
||||||
k := tv.ResourceAddr().String()
|
k := tv.ResourceAddr().String()
|
||||||
deps[k] = append(deps[k], v)
|
deps[k] = append(deps[k], v)
|
||||||
case GraphNodeDestroyer:
|
case GraphNodeDestroyer:
|
||||||
|
|
|
@ -41,8 +41,8 @@ type GraphNodeReferencer interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type GraphNodeAttachDependencies interface {
|
type GraphNodeAttachDependencies interface {
|
||||||
GraphNodeResource
|
GraphNodeConfigResource
|
||||||
AttachDependencies([]addrs.AbsResource)
|
AttachDependencies([]addrs.ConfigResource)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeReferenceOutside is an interface that can optionally be implemented.
|
// GraphNodeReferenceOutside is an interface that can optionally be implemented.
|
||||||
|
@ -116,6 +116,8 @@ type AttachDependenciesTransformer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t AttachDependenciesTransformer) Transform(g *Graph) error {
|
func (t AttachDependenciesTransformer) Transform(g *Graph) error {
|
||||||
|
// FIXME: this is only working with ResourceConfigAddr for now
|
||||||
|
|
||||||
for _, v := range g.Vertices() {
|
for _, v := range g.Vertices() {
|
||||||
attacher, ok := v.(GraphNodeAttachDependencies)
|
attacher, ok := v.(GraphNodeAttachDependencies)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -135,15 +137,15 @@ func (t AttachDependenciesTransformer) Transform(g *Graph) error {
|
||||||
|
|
||||||
// dedupe addrs when there's multiple instances involved, or
|
// dedupe addrs when there's multiple instances involved, or
|
||||||
// multiple paths in the un-reduced graph
|
// multiple paths in the un-reduced graph
|
||||||
depMap := map[string]addrs.AbsResource{}
|
depMap := map[string]addrs.ConfigResource{}
|
||||||
for _, d := range ans {
|
for _, d := range ans {
|
||||||
var addr addrs.AbsResource
|
var addr addrs.ConfigResource
|
||||||
|
|
||||||
switch d := d.(type) {
|
switch d := d.(type) {
|
||||||
case GraphNodeResourceInstance:
|
case GraphNodeResourceInstance:
|
||||||
instAddr := d.ResourceInstanceAddr()
|
instAddr := d.ResourceInstanceAddr()
|
||||||
addr = instAddr.Resource.Resource.Absolute(instAddr.Module)
|
addr = instAddr.ContainingResource().Config()
|
||||||
case GraphNodeResource:
|
case GraphNodeConfigResource:
|
||||||
addr = d.ResourceAddr()
|
addr = d.ResourceAddr()
|
||||||
default:
|
default:
|
||||||
continue
|
continue
|
||||||
|
@ -160,7 +162,7 @@ func (t AttachDependenciesTransformer) Transform(g *Graph) error {
|
||||||
depMap[addr.String()] = addr
|
depMap[addr.String()] = addr
|
||||||
}
|
}
|
||||||
|
|
||||||
deps := make([]addrs.AbsResource, 0, len(depMap))
|
deps := make([]addrs.ConfigResource, 0, len(depMap))
|
||||||
for _, d := range depMap {
|
for _, d := range depMap {
|
||||||
deps = append(deps, d)
|
deps = append(deps, d)
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ type ResourceCountTransformer struct {
|
||||||
Concrete ConcreteResourceInstanceNodeFunc
|
Concrete ConcreteResourceInstanceNodeFunc
|
||||||
Schema *configschema.Block
|
Schema *configschema.Block
|
||||||
|
|
||||||
Addr addrs.AbsResource
|
Addr addrs.ConfigResource
|
||||||
InstanceAddrs []addrs.AbsResourceInstance
|
InstanceAddrs []addrs.AbsResourceInstance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ func (t *TargetsTransformer) Transform(g *Graph) error {
|
||||||
|
|
||||||
for _, v := range g.Vertices() {
|
for _, v := range g.Vertices() {
|
||||||
removable := false
|
removable := false
|
||||||
if _, ok := v.(GraphNodeResource); ok {
|
if _, ok := v.(GraphNodeConfigResource); ok {
|
||||||
removable = true
|
removable = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,16 +225,12 @@ func (t *TargetsTransformer) nodeIsTarget(v dag.Vertex, targets []addrs.Targetab
|
||||||
switch r := v.(type) {
|
switch r := v.(type) {
|
||||||
case GraphNodeResourceInstance:
|
case GraphNodeResourceInstance:
|
||||||
vertexAddr = r.ResourceInstanceAddr()
|
vertexAddr = r.ResourceInstanceAddr()
|
||||||
case GraphNodeResource:
|
case GraphNodeConfigResource:
|
||||||
vertexAddr = r.ResourceAddr()
|
vertexAddr = r.ResourceAddr()
|
||||||
default:
|
default:
|
||||||
// Only resource and resource instance nodes can be targeted.
|
// Only resource and resource instance nodes can be targeted.
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
_, ok := v.(GraphNodeResource)
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, targetAddr := range targets {
|
for _, targetAddr := range targets {
|
||||||
if t.IgnoreIndices {
|
if t.IgnoreIndices {
|
||||||
|
|
Loading…
Reference in New Issue