remove useless file. prevent getter in attribute from copiying slice and
map. remove useless exported function from resourcemain
parent
b5c48dbbfc
commit
3a544133e2
|
@ -0,0 +1,34 @@
|
|||
package helpers
|
||||
|
||||
import "strings"
|
||||
|
||||
func Join(elems []interface{}, sep string) string {
|
||||
firstElemt, ok := elems[0].(string)
|
||||
if !ok {
|
||||
panic("cannot join a slice that contains something else than strings")
|
||||
}
|
||||
switch len(elems) {
|
||||
case 0:
|
||||
return ""
|
||||
case 1:
|
||||
|
||||
return firstElemt
|
||||
}
|
||||
n := len(sep) * (len(elems) - 1)
|
||||
for i := 0; i < len(elems); i++ {
|
||||
n += len(elems[i].(string))
|
||||
}
|
||||
|
||||
var b strings.Builder
|
||||
b.Grow(n)
|
||||
b.WriteString(firstElemt)
|
||||
for _, s := range elems[1:] {
|
||||
b.WriteString(sep)
|
||||
elem, ok := s.(string)
|
||||
if !ok {
|
||||
panic("cannot join a slice that contains something else than strings")
|
||||
}
|
||||
b.WriteString(elem)
|
||||
}
|
||||
return b.String()
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
# This file is maintained automatically by "terraform init".
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.terraform.io/hashicorp/aws" {
|
||||
version = "3.42.0"
|
||||
hashes = [
|
||||
"h1:quV6hK7ewiHWBznGWCb/gJ6JAPm6UtouBUrhAjv6oRY=",
|
||||
"zh:126c856a6eedddd8571f161a826a407ba5655a37a6241393560a96b8c4beca1a",
|
||||
"zh:1a4868e6ac734b5fc2e79a4a889d176286b66664aad709435aa6acee5871d5b0",
|
||||
"zh:40fed7637ab8ddeb93bef06aded35d970f0628025b97459ae805463e8aa0a58a",
|
||||
"zh:68def3c0a5a1aac1db6372c51daef858b707f03052626d3427ac24cba6f2014d",
|
||||
"zh:6db7ec9c8d1803a0b6f40a664aa892e0f8894562de83061fa7ac1bc51ff5e7e5",
|
||||
"zh:7058abaad595930b3f97dc04e45c112b2dbf37d098372a849081f7081da2fb52",
|
||||
"zh:8c25adb15a19da301c478aa1f4a4d8647cabdf8e5dae8331d4490f80ea718c26",
|
||||
"zh:8e129b847401e39fcbc54817726dab877f36b7f00ff5ed76f7b43470abe99ff9",
|
||||
"zh:d268bb267a2d6b39df7ddee8efa7c1ef7a15cf335dfa5f2e64c9dae9b623a1b8",
|
||||
"zh:d6eeb3614a0ab50f8e9ab5666ae5754ea668ce327310e5b21b7f04a18d7611a8",
|
||||
"zh:f5d3c58055dff6e38562b75d3edc908cb2f1e45c6914f6b00f4773359ce49324",
|
||||
]
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
# This file is maintained automatically by "terraform init".
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.terraform.io/hashicorp/aws" {
|
||||
version = "3.42.0"
|
||||
hashes = [
|
||||
"h1:C6/yDp6BhuDFx0qdkBuJj/OWUJpAoraHTJaU6ac38Rw=",
|
||||
"h1:quV6hK7ewiHWBznGWCb/gJ6JAPm6UtouBUrhAjv6oRY=",
|
||||
"zh:126c856a6eedddd8571f161a826a407ba5655a37a6241393560a96b8c4beca1a",
|
||||
"zh:1a4868e6ac734b5fc2e79a4a889d176286b66664aad709435aa6acee5871d5b0",
|
||||
"zh:40fed7637ab8ddeb93bef06aded35d970f0628025b97459ae805463e8aa0a58a",
|
||||
"zh:68def3c0a5a1aac1db6372c51daef858b707f03052626d3427ac24cba6f2014d",
|
||||
"zh:6db7ec9c8d1803a0b6f40a664aa892e0f8894562de83061fa7ac1bc51ff5e7e5",
|
||||
"zh:7058abaad595930b3f97dc04e45c112b2dbf37d098372a849081f7081da2fb52",
|
||||
"zh:8c25adb15a19da301c478aa1f4a4d8647cabdf8e5dae8331d4490f80ea718c26",
|
||||
"zh:8e129b847401e39fcbc54817726dab877f36b7f00ff5ed76f7b43470abe99ff9",
|
||||
"zh:d268bb267a2d6b39df7ddee8efa7c1ef7a15cf335dfa5f2e64c9dae9b623a1b8",
|
||||
"zh:d6eeb3614a0ab50f8e9ab5666ae5754ea668ce327310e5b21b7f04a18d7611a8",
|
||||
"zh:f5d3c58055dff6e38562b75d3edc908cb2f1e45c6914f6b00f4773359ce49324",
|
||||
]
|
||||
}
|
|
@ -15,9 +15,9 @@ func initAwsInstanceMetaData(resourceSchemaRepository resource.SchemaRepositoryI
|
|||
resourceSchemaRepository.SetHumanReadableAttributesFunc(AwsInstanceResourceType, func(res *resource.AbstractResource) map[string]string {
|
||||
val := res.Attrs
|
||||
attrs := make(map[string]string)
|
||||
if tags := val.GetStringMap("tags"); tags != nil {
|
||||
if tags := val.GetMap("tags"); tags != nil {
|
||||
if name, ok := tags["name"]; ok {
|
||||
attrs["Name"] = name
|
||||
attrs["Name"] = name.(string)
|
||||
}
|
||||
}
|
||||
return attrs
|
||||
|
|
|
@ -12,9 +12,9 @@ func initAwsRoute53HealthCheckMetaData(resourceSchemaRepository resource.SchemaR
|
|||
resourceSchemaRepository.SetHumanReadableAttributesFunc(AwsRoute53HealthCheckResourceType, func(res *resource.AbstractResource) map[string]string {
|
||||
val := res.Attrs
|
||||
attrs := make(map[string]string)
|
||||
if tags := val.GetStringMap("tags"); tags != nil {
|
||||
if tags := val.GetMap("tags"); tags != nil {
|
||||
if name, ok := tags["name"]; ok {
|
||||
attrs["Name"] = name
|
||||
attrs["Name"] = name.(string)
|
||||
}
|
||||
}
|
||||
port := val.GetInt("port")
|
||||
|
|
|
@ -3,8 +3,8 @@ package aws
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/cloudskiff/driftctl/pkg/helpers"
|
||||
"github.com/cloudskiff/driftctl/pkg/resource"
|
||||
"github.com/hashicorp/terraform/helper/hashcode"
|
||||
)
|
||||
|
@ -111,14 +111,14 @@ func initAwsSecurityGroupRuleMetaData(resourceSchemaRepository resource.SchemaRe
|
|||
case "ingress":
|
||||
sourceOrDestination = "Source"
|
||||
}
|
||||
if ipv4 := val.GetStringSlice("cidr_blocks"); len(ipv4) > 0 {
|
||||
attrs[sourceOrDestination] = strings.Join(ipv4, ", ")
|
||||
if ipv4 := val.GetSlice("cidr_blocks"); len(ipv4) > 0 {
|
||||
attrs[sourceOrDestination] = helpers.Join(ipv4, ", ")
|
||||
}
|
||||
if ipv6 := val.GetStringSlice("ipv6_cidr_blocks"); len(ipv6) > 0 {
|
||||
attrs[sourceOrDestination] = strings.Join(ipv6, ", ")
|
||||
if ipv6 := val.GetSlice("ipv6_cidr_blocks"); len(ipv6) > 0 {
|
||||
attrs[sourceOrDestination] = helpers.Join(ipv6, ", ")
|
||||
}
|
||||
if prefixList := val.GetStringSlice("prefix_list_ids"); len(prefixList) > 0 {
|
||||
attrs[sourceOrDestination] = strings.Join(prefixList, ", ")
|
||||
if prefixList := val.GetSlice("prefix_list_ids"); len(prefixList) > 0 {
|
||||
attrs[sourceOrDestination] = helpers.Join(prefixList, ", ")
|
||||
}
|
||||
if sourceSgID := val.GetString("source_security_group_id"); sourceSgID != nil && *sourceSgID != "" {
|
||||
attrs[sourceOrDestination] = *sourceSgID
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
package resource
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/zclconf/go-cty/cty"
|
||||
ctyjson "github.com/zclconf/go-cty/cty/json"
|
||||
)
|
||||
|
||||
type Deserializer struct {
|
||||
|
@ -16,8 +19,15 @@ func (s *Deserializer) Deserialize(ty string, rawList []cty.Value) ([]Resource,
|
|||
resources := make([]Resource, 0)
|
||||
for _, rawResource := range rawList {
|
||||
rawResource := rawResource
|
||||
attrs := ToResourceAttributes(&rawResource)
|
||||
res := s.factory.CreateAbstractResource(ty, rawResource.GetAttr("id").AsString(), *attrs)
|
||||
var attrs Attributes
|
||||
|
||||
bytes, _ := ctyjson.Marshal(rawResource, rawResource.Type())
|
||||
err := json.Unmarshal(bytes, &attrs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res := s.factory.CreateAbstractResource(ty, rawResource.GetAttr("id").AsString(), attrs)
|
||||
resources = append(resources, res)
|
||||
}
|
||||
return resources, nil
|
||||
|
|
|
@ -8,8 +8,6 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/zclconf/go-cty/cty"
|
||||
ctyjson "github.com/zclconf/go-cty/cty/json"
|
||||
)
|
||||
|
||||
type Resource interface {
|
||||
|
@ -113,21 +111,6 @@ func Sort(res []Resource) []Resource {
|
|||
return res
|
||||
}
|
||||
|
||||
func ToResourceAttributes(val *cty.Value) *Attributes {
|
||||
if val == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
bytes, _ := ctyjson.Marshal(*val, val.Type())
|
||||
var attrs Attributes
|
||||
err := json.Unmarshal(bytes, &attrs)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return &attrs
|
||||
}
|
||||
|
||||
type Attributes map[string]interface{}
|
||||
|
||||
func (a *Attributes) Copy() *Attributes {
|
||||
|
@ -162,18 +145,6 @@ func (a *Attributes) GetString(path string) *string {
|
|||
return &v
|
||||
}
|
||||
|
||||
func (a *Attributes) GetStringSlice(path string) []string {
|
||||
val := a.GetSlice(path)
|
||||
if val == nil {
|
||||
return nil
|
||||
}
|
||||
slice := make([]string, 0, len(val))
|
||||
for _, v := range val {
|
||||
slice = append(slice, v.(string))
|
||||
}
|
||||
return slice
|
||||
}
|
||||
|
||||
func (a *Attributes) GetBool(path string) *bool {
|
||||
val, exist := (*a)[path]
|
||||
if !exist {
|
||||
|
@ -209,18 +180,6 @@ func (a *Attributes) GetMap(path string) map[string]interface{} {
|
|||
return val.(map[string]interface{})
|
||||
}
|
||||
|
||||
func (a *Attributes) GetStringMap(path string) map[string]string {
|
||||
val := a.GetMap(path)
|
||||
if val == nil {
|
||||
return nil
|
||||
}
|
||||
stringMap := make(map[string]string)
|
||||
for k, v := range val {
|
||||
stringMap[k] = v.(string)
|
||||
}
|
||||
return stringMap
|
||||
}
|
||||
|
||||
func (a *Attributes) SafeDelete(path []string) {
|
||||
for i, key := range path {
|
||||
if i == len(path)-1 {
|
||||
|
|
Loading…
Reference in New Issue