56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
![]() |
package json
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/hashicorp/terraform/plans"
|
||
|
)
|
||
|
|
||
|
func NewResourceInstanceChange(change *plans.ResourceInstanceChangeSrc) *ResourceInstanceChange {
|
||
|
c := &ResourceInstanceChange{
|
||
|
Resource: newResourceAddr(change.Addr),
|
||
|
Action: changeAction(change.Action),
|
||
|
}
|
||
|
|
||
|
return c
|
||
|
}
|
||
|
|
||
|
type ResourceInstanceChange struct {
|
||
|
Resource ResourceAddr `json:"resource"`
|
||
|
Action ChangeAction `json:"action"`
|
||
|
}
|
||
|
|
||
|
func (c *ResourceInstanceChange) String() string {
|
||
|
return fmt.Sprintf("%s: Plan to %s", c.Resource.Addr, c.Action)
|
||
|
}
|
||
|
|
||
|
type ChangeAction string
|
||
|
|
||
|
const (
|
||
|
ActionNoOp ChangeAction = "noop"
|
||
|
ActionCreate ChangeAction = "create"
|
||
|
ActionRead ChangeAction = "read"
|
||
|
ActionUpdate ChangeAction = "update"
|
||
|
ActionReplace ChangeAction = "replace"
|
||
|
ActionDelete ChangeAction = "delete"
|
||
|
)
|
||
|
|
||
|
func changeAction(action plans.Action) ChangeAction {
|
||
|
switch action {
|
||
|
case plans.NoOp:
|
||
|
return ActionNoOp
|
||
|
case plans.Create:
|
||
|
return ActionCreate
|
||
|
case plans.Read:
|
||
|
return ActionRead
|
||
|
case plans.Update:
|
||
|
return ActionUpdate
|
||
|
case plans.DeleteThenCreate, plans.CreateThenDelete:
|
||
|
return ActionReplace
|
||
|
case plans.Delete:
|
||
|
return ActionDelete
|
||
|
default:
|
||
|
return ActionNoOp
|
||
|
}
|
||
|
}
|