Skip to content

Commit 404fe2c

Browse files
authored
Merge pull request #2 from ajbosco/add_importer
add importers for destinations and sources
2 parents 6541912 + 3449fd0 commit 404fe2c

File tree

4 files changed

+69
-2
lines changed

4 files changed

+69
-2
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ require (
44
github.com/ajbosco/segment-config-go v0.2.0
55
github.com/apparentlymart/go-cidr v1.0.0 // indirect
66
github.com/blang/semver v3.5.1+incompatible // indirect
7+
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
78
github.com/hashicorp/go-getter v0.0.0-20181119194526-bd1edc22f8ea // indirect
89
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f // indirect
910
github.com/hashicorp/go-plugin v0.0.0-20181030172320-54b6ff97d818 // indirect

go.sum

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8=
22
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
3-
github.com/ajbosco/segment-config-go v0.1.0 h1:FT2X+DSsBTVl+jL/WXldfvTE4QWIdqLnjmpp2Nfxp8Q=
4-
github.com/ajbosco/segment-config-go v0.1.0/go.mod h1:f+rLFCLd9lq60T4ze+oGTMCbL4a9EHxIigR+NyhkfME=
53
github.com/ajbosco/segment-config-go v0.2.0 h1:qk5Z5yLkEjtysC3YvehLb4a+KvT00KA44W+u/WUVzHU=
64
github.com/ajbosco/segment-config-go v0.2.0/go.mod h1:f+rLFCLd9lq60T4ze+oGTMCbL4a9EHxIigR+NyhkfME=
75
github.com/apparentlymart/go-cidr v1.0.0 h1:lGDvXx8Lv9QHjrAVP7jyzleG4F9+FkRhJcEsDFxeb8w=
86
github.com/apparentlymart/go-cidr v1.0.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
7+
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA=
98
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
109
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
1110
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
@@ -25,7 +24,10 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
2524
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
2625
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
2726
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
27+
github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg=
2828
github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
29+
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
30+
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
2931
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
3032
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
3133
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -68,9 +70,12 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
6870
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
6971
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 h1:12VvqtR6Aowv3l/EQUlocDHW2Cp4G9WJVH7uyH8QFJE=
7072
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
73+
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
7174
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
7275
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
76+
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
7377
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
78+
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
7479
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
7580
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
7681
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -100,11 +105,14 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
100105
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
101106
github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
102107
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
108+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
103109
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
104110
github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
105111
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
112+
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
106113
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
107114
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
115+
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
108116
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
109117
github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok=
110118
github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
@@ -122,6 +130,7 @@ golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73r
122130
golang.org/x/net v0.0.0-20181207154023-610586996380 h1:zPQexyRtNYBc7bcHmehl1dH6TB3qn8zytv8cBGLDNY0=
123131
golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
124132
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
133+
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
125134
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
126135
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
127136
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e h1:o3PsSEY8E4eXWkXrIP9YJALUkVZqzHJT5DOasTyn8Vs=

segment/resource_segment_destination.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package segment
22

33
import (
4+
"fmt"
5+
"strings"
6+
47
"github.com/ajbosco/segment-config-go/segment"
58
"github.com/hashicorp/terraform/helper/schema"
69
)
@@ -50,6 +53,9 @@ func resourceSegmentDestination() *schema.Resource {
5053
Read: resourceSegmentDestinationRead,
5154
Update: resourceSegmentDestinationUpdate,
5255
Delete: resourceSegmentDestinationDelete,
56+
Importer: &schema.ResourceImporter{
57+
State: resourceSegmentDestinationImport,
58+
},
5359
}
5460
}
5561

@@ -119,6 +125,37 @@ func resourceSegmentDestinationDelete(r *schema.ResourceData, meta interface{})
119125
return nil
120126
}
121127

128+
func resourceSegmentDestinationImport(r *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
129+
client := meta.(*segment.Client)
130+
s := strings.SplitN(r.Id(), "/", 2)
131+
if len(s) != 2 {
132+
return nil, fmt.Errorf(
133+
"invalid destination import format: %s (expected <SOURCE-NAME>/<DESTINATION-NAME>)",
134+
r.Id(),
135+
)
136+
}
137+
138+
srcName := s[0]
139+
destName := s[1]
140+
141+
d, err := client.GetDestination(srcName, destName)
142+
if err != nil {
143+
return nil, fmt.Errorf("invalid destination: %q; err: %v", r.Id(), err)
144+
}
145+
146+
r.SetId(d.Name)
147+
r.Set("source_name", srcName)
148+
r.Set("destination_name", destName)
149+
r.Set("enabled", d.Enabled)
150+
r.Set("configs", d.Configs)
151+
r.Set("connection_mode", d.ConnectionMode)
152+
153+
results := make([]*schema.ResourceData, 1)
154+
results[0] = r
155+
156+
return results, nil
157+
}
158+
122159
func extractConfigs(s *schema.Set) []segment.DestinationConfig {
123160
configs := []segment.DestinationConfig{}
124161

segment/resource_segment_source.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package segment
22

33
import (
4+
"fmt"
45
"strings"
56

67
"github.com/ajbosco/segment-config-go/segment"
@@ -24,6 +25,9 @@ func resourceSegmentSource() *schema.Resource {
2425
Create: resourceSegmentSourceCreate,
2526
Read: resourceSegmentSourceRead,
2627
Delete: resourceSegmentSourceDelete,
28+
Importer: &schema.ResourceImporter{
29+
State: resourceSegmentSourceImport,
30+
},
2731
}
2832
}
2933

@@ -72,6 +76,22 @@ func resourceSegmentSourceDelete(r *schema.ResourceData, meta interface{}) error
7276
return nil
7377
}
7478

79+
func resourceSegmentSourceImport(r *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
80+
client := meta.(*segment.Client)
81+
s, err := client.GetSource(r.Id())
82+
if err != nil {
83+
return nil, fmt.Errorf("invalid source: %q; err: %v", r.Id(), err)
84+
}
85+
86+
r.SetId(s.Name)
87+
r.Set("catalog_name", s.CatalogName)
88+
89+
results := make([]*schema.ResourceData, 1)
90+
results[0] = r
91+
92+
return results, nil
93+
}
94+
7595
func idToName(id string) string {
7696
splitID := strings.Split(id, "/")
7797

0 commit comments

Comments
 (0)