Add source in JSON output
parent
75cd450a63
commit
c1ea0a8067
|
@ -1089,9 +1089,14 @@ func TestAnalysis_MarshalJSON(t *testing.T) {
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
analysis.AddDifference(Difference{
|
analysis.AddDifference(Difference{
|
||||||
Res: &testresource.FakeResource{
|
Res: &resource.AbstractResource{
|
||||||
Id: "AKIA5QYBVVD25KFXJHYJ",
|
Id: "AKIA5QYBVVD25KFXJHYJ",
|
||||||
Type: "aws_iam_access_key",
|
Type: "aws_iam_access_key",
|
||||||
|
Source: &resource.TerraformStateSource{
|
||||||
|
State: "tfstate://terraform.tfstate",
|
||||||
|
Module: "module",
|
||||||
|
Name: "my_name",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Changelog: []Change{
|
Changelog: []Change{
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,7 +40,12 @@
|
||||||
{
|
{
|
||||||
"res": {
|
"res": {
|
||||||
"id": "AKIA5QYBVVD25KFXJHYJ",
|
"id": "AKIA5QYBVVD25KFXJHYJ",
|
||||||
"type": "aws_iam_access_key"
|
"type": "aws_iam_access_key",
|
||||||
|
"source": {
|
||||||
|
"source": "tfstate://terraform.tfstate",
|
||||||
|
"namespace": "module",
|
||||||
|
"internal_name": "my_name"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"changelog": [
|
"changelog": [
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,7 +40,12 @@
|
||||||
{
|
{
|
||||||
"res": {
|
"res": {
|
||||||
"id": "diff-id-1",
|
"id": "diff-id-1",
|
||||||
"type": "aws_diff_resource"
|
"type": "aws_diff_resource",
|
||||||
|
"source": {
|
||||||
|
"source": "tfstate://state.tfstate",
|
||||||
|
"namespace": "module",
|
||||||
|
"internal_name": "name"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"changelog": [
|
"changelog": [
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,12 @@
|
||||||
{
|
{
|
||||||
"res": {
|
"res": {
|
||||||
"id": "diff-id-1",
|
"id": "diff-id-1",
|
||||||
"type": "aws_diff_resource"
|
"type": "aws_diff_resource",
|
||||||
|
"source": {
|
||||||
|
"source": "tfstate://state.tfstate",
|
||||||
|
"namespace": "module",
|
||||||
|
"internal_name": "name"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"changelog": [
|
"changelog": [
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,7 @@ type Resource interface {
|
||||||
TerraformType() string
|
TerraformType() string
|
||||||
Attributes() *Attributes
|
Attributes() *Attributes
|
||||||
Schema() *Schema
|
Schema() *Schema
|
||||||
|
Src() Source
|
||||||
}
|
}
|
||||||
|
|
||||||
type Source interface {
|
type Source interface {
|
||||||
|
@ -24,6 +25,12 @@ type Source interface {
|
||||||
InternalName() string
|
InternalName() string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SerializableSource struct {
|
||||||
|
S string `json:"source"`
|
||||||
|
Ns string `json:"namespace"`
|
||||||
|
Name string `json:"internal_name"`
|
||||||
|
}
|
||||||
|
|
||||||
type TerraformStateSource struct {
|
type TerraformStateSource struct {
|
||||||
State string
|
State string
|
||||||
Module string
|
Module string
|
||||||
|
@ -70,6 +77,10 @@ func (a *AbstractResource) Attributes() *Attributes {
|
||||||
return a.Attrs
|
return a.Attrs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *AbstractResource) Src() Source {
|
||||||
|
return a.Source
|
||||||
|
}
|
||||||
|
|
||||||
func (a *AbstractResource) SourceString() string {
|
func (a *AbstractResource) SourceString() string {
|
||||||
if a.Source.Namespace() == "" {
|
if a.Source.Namespace() == "" {
|
||||||
return fmt.Sprintf("%s.%s", a.TerraformType(), a.Source.InternalName())
|
return fmt.Sprintf("%s.%s", a.TerraformType(), a.Source.InternalName())
|
||||||
|
@ -86,8 +97,9 @@ type SerializableResource struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type SerializedResource struct {
|
type SerializedResource struct {
|
||||||
Id string `json:"id"`
|
Id string `json:"id"`
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
|
Source *SerializableSource `json:"source,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *SerializedResource) TerraformId() string {
|
func (u *SerializedResource) TerraformId() string {
|
||||||
|
@ -106,6 +118,10 @@ func (u *SerializedResource) Schema() *Schema {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *SerializedResource) Src() Source {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *SerializableResource) UnmarshalJSON(bytes []byte) error {
|
func (s *SerializableResource) UnmarshalJSON(bytes []byte) error {
|
||||||
var res *SerializedResource
|
var res *SerializedResource
|
||||||
|
|
||||||
|
@ -117,7 +133,15 @@ func (s *SerializableResource) UnmarshalJSON(bytes []byte) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s SerializableResource) MarshalJSON() ([]byte, error) {
|
func (s SerializableResource) MarshalJSON() ([]byte, error) {
|
||||||
return json.Marshal(SerializedResource{Id: s.TerraformId(), Type: s.TerraformType()})
|
var src *SerializableSource
|
||||||
|
if s.Src() != nil {
|
||||||
|
src = &SerializableSource{
|
||||||
|
S: s.Src().Source(),
|
||||||
|
Ns: s.Src().Namespace(),
|
||||||
|
Name: s.Src().InternalName(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return json.Marshal(SerializedResource{Id: s.TerraformId(), Type: s.TerraformType(), Source: src})
|
||||||
}
|
}
|
||||||
|
|
||||||
type NormalizedResource interface {
|
type NormalizedResource interface {
|
||||||
|
|
|
@ -31,9 +31,14 @@ func (d *FakeResource) Attributes() *resource.Attributes {
|
||||||
return d.Attrs
|
return d.Attrs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *FakeResource) Src() resource.Source {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type FakeResourceStringer struct {
|
type FakeResourceStringer struct {
|
||||||
Id string
|
Id string
|
||||||
Attrs *resource.Attributes
|
Attrs *resource.Attributes
|
||||||
|
Source resource.Source
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *FakeResourceStringer) Schema() *resource.Schema {
|
func (d *FakeResourceStringer) Schema() *resource.Schema {
|
||||||
|
@ -52,6 +57,10 @@ func (d *FakeResourceStringer) Attributes() *resource.Attributes {
|
||||||
return d.Attrs
|
return d.Attrs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *FakeResourceStringer) Src() resource.Source {
|
||||||
|
return d.Source
|
||||||
|
}
|
||||||
|
|
||||||
func InitFakeSchemaRepository(provider, version string) resource.SchemaRepositoryInterface {
|
func InitFakeSchemaRepository(provider, version string) resource.SchemaRepositoryInterface {
|
||||||
repo := resource.NewSchemaRepository()
|
repo := resource.NewSchemaRepository()
|
||||||
schema := make(map[string]providers.Schema)
|
schema := make(map[string]providers.Schema)
|
||||||
|
|
Loading…
Reference in New Issue