@@ -2,6 +2,7 @@ package sumologic
22
33import (
44 "encoding/json"
5+ "errors"
56 "log"
67 "strconv"
78
@@ -46,7 +47,10 @@ func resourceSumologicCloudToCloudSourceCreate(d *schema.ResourceData, meta inte
4647 c := meta .(* Client )
4748
4849 if d .Id () == "" {
49- source := resourceToCloudToCloudSource (d )
50+ source , err := resourceToCloudToCloudSource (d )
51+ if err != nil {
52+ return err
53+ }
5054 log .Printf ("SchemaRef %s" , source .SchemaRef )
5155 log .Printf ("Config: %s" , source .Config )
5256
@@ -65,9 +69,12 @@ func resourceSumologicCloudToCloudSourceCreate(d *schema.ResourceData, meta inte
6569func resourceSumologicCloudToCloudSourceUpdate (d * schema.ResourceData , meta interface {}) error {
6670 c := meta .(* Client )
6771
68- source := resourceToCloudToCloudSource (d )
72+ source , err := resourceToCloudToCloudSource (d )
73+ if err != nil {
74+ return err
75+ }
6976
70- err : = c .UpdateCloudToCloudSource (* source , d .Get ("collector_id" ).(int ))
77+ err = c .UpdateCloudToCloudSource (* source , d .Get ("collector_id" ).(int ))
7178
7279 if err != nil {
7380 return err
@@ -86,7 +93,7 @@ func resourceSumologicCloudToCloudSourceDelete(d *schema.ResourceData, meta inte
8693
8794}
8895
89- func resourceToCloudToCloudSource (d * schema.ResourceData ) * CloudToCloudSource {
96+ func resourceToCloudToCloudSource (d * schema.ResourceData ) ( * CloudToCloudSource , error ) {
9097 id , _ := strconv .Atoi (d .Id ())
9198 var cloudToCloudSource CloudToCloudSource
9299 var jsonRawConf json.RawMessage
@@ -98,14 +105,19 @@ func resourceToCloudToCloudSource(d *schema.ResourceData) *CloudToCloudSource {
98105 err := json .Unmarshal (conf , & jsonRawConf )
99106 if err != nil {
100107 log .Println ("Unable to unmarshal the Json configuration" )
101- return nil
108+ return & cloudToCloudSource , nil
102109 }
103110
104111 cloudToCloudSource .ID = id
105112 cloudToCloudSource .Config = jsonRawConf
106- cloudToCloudSource .SchemaRef = getSourceSchemaRef (d )
113+ schemaRef , errSchemaRef := getSourceSchemaRef (d )
114+
115+ if errSchemaRef != nil {
116+ return & cloudToCloudSource , errSchemaRef
117+ }
107118
108- return & cloudToCloudSource
119+ cloudToCloudSource .SchemaRef = schemaRef
120+ return & cloudToCloudSource , nil
109121}
110122
111123func resourceSumologicCloudToCloudSourceRead (d * schema.ResourceData , meta interface {}) error {
@@ -127,13 +139,19 @@ func resourceSumologicCloudToCloudSourceRead(d *schema.ResourceData, meta interf
127139
128140 return nil
129141}
130- func getSourceSchemaRef (d * schema.ResourceData ) SchemaReference {
142+ func getSourceSchemaRef (d * schema.ResourceData ) ( SchemaReference , error ) {
131143 sourceSchema := d .Get ("schema_ref" ).(map [string ]interface {})
132144 schemaR := SchemaReference {}
133145
134146 if len (sourceSchema ) > 0 {
135147 schemaR .Type = sourceSchema ["type" ].(string )
148+ if sourceSchema ["version" ] != nil {
149+ errorMessage := "[Error] Unsupported argument 'version' specified for schemaRef"
150+ log .Print (errorMessage )
151+ return schemaR , errors .New (errorMessage )
152+
153+ }
136154 }
137155
138- return schemaR
156+ return schemaR , nil
139157}
0 commit comments