Skip to content

Commit 789780d

Browse files
authored
fix: nil reference in api.kibana_synthetics.go:418 in case of unmarshable arrays (#1320)
1 parent 1618750 commit 789780d

10 files changed

+37
-29
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
- Add support for `data_view_id` in the `elasticstack_kibana_slo` resource ([#1305](https://github.com/elastic/terraform-provider-elasticstack/pull/1305))
2020
- Add support for `unenrollment_timeout` in `elasticstack_fleet_agent_policy` ([#1169](https://github.com/elastic/terraform-provider-elasticstack/issues/1169))
2121
- Handle default value for `allow_restricted_indices` in `elasticstack_elasticsearch_security_api_key` ([#1315](https://github.com/elastic/terraform-provider-elasticstack/pull/1315))
22+
- Fixed `nil` reference in kibana synthetics API client in case of response errors ([#1320](https://github.com/elastic/terraform-provider-elasticstack/pull/1320))
2223

2324
## [0.11.17] - 2025-07-21
2425

libs/go-kibana-rest/docker-compose.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
services:
22
elasticsearch:
3-
image: docker.elastic.co/elasticsearch/elasticsearch:9.1.3@sha256:d620e80b7222e32eff42ac0fc614a0a5753f6ce9859df33b9ddea49c3bf5fb01
3+
image: docker.elastic.co/elasticsearch/elasticsearch:9.1.2@sha256:d1a8016cf55be8ffec635ed69f5a9acb0c459db35b46a4549ec5b2847a2f170a
44
environment:
55
cluster.name: test
66
discovery.type: single-node
@@ -11,7 +11,7 @@ services:
1111
ports:
1212
- "9200:9200/tcp"
1313
set-kibana-password:
14-
image: docker.elastic.co/kibana/kibana:9.1.3@sha256:26792c8e4a68ba0bff3efcc46755f60bf36bb16b2431014c210f2546ca1819ad
14+
image: docker.elastic.co/kibana/kibana:9.0.3@sha256:c4c00a485fbc3619d8373f3bc74e9dd5b5a34380ef50442be4366e8fb57cd50a
1515
restart: on-failure
1616
links:
1717
- elasticsearch
@@ -22,7 +22,7 @@ services:
2222
elasticsearch:
2323
condition: service_started
2424
kibana:
25-
image: docker.elastic.co/kibana/kibana:9.1.3@sha256:26792c8e4a68ba0bff3efcc46755f60bf36bb16b2431014c210f2546ca1819ad
25+
image: docker.elastic.co/kibana/kibana:9.0.3@sha256:c4c00a485fbc3619d8373f3bc74e9dd5b5a34380ef50442be4366e8fb57cd50a
2626
environment:
2727
SERVER_NAME: kibana
2828
ELASTICSEARCH_HOSTS: http://es:9200

libs/go-kibana-rest/kbapi/api.kibana_logstash_pipeline.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func newKibanaLogstashPipelineGetFunc(c *resty.Client) KibanaLogstashPipelineGet
7373
if resp.StatusCode() == 404 {
7474
return nil, nil
7575
}
76-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
76+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
7777
}
7878
logstashPipeline := &LogstashPipeline{}
7979
err = json.Unmarshal(resp.Body(), logstashPipeline)
@@ -97,7 +97,7 @@ func newKibanaLogstashPipelineListFunc(c *resty.Client) KibanaLogstashPipelineLi
9797
}
9898
log.Debug("Response: ", resp)
9999
if resp.StatusCode() >= 300 {
100-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
100+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
101101
}
102102
logstashPipelinesList := &LogstashPipelinesList{}
103103
err = json.Unmarshal(resp.Body(), logstashPipelinesList)
@@ -140,7 +140,7 @@ func newKibanaLogstashPipelineCreateOrUpdateFunc(c *resty.Client) KibanaLogstash
140140

141141
log.Debug("Response: ", resp)
142142
if resp.StatusCode() >= 300 {
143-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
143+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
144144
}
145145

146146
// Retrive the object to return it
@@ -174,7 +174,7 @@ func newKibanaLogstashPipelineDeleteFunc(c *resty.Client) KibanaLogstashPipeline
174174
}
175175
log.Debug("Response: ", resp)
176176
if resp.StatusCode() >= 300 {
177-
return NewAPIError(resp.StatusCode(), resp.Status())
177+
return NewAPIError(resp.StatusCode(), "%s", resp.Status())
178178
}
179179

180180
return nil

libs/go-kibana-rest/kbapi/api.kibana_role_management.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func newKibanaRoleManagementGetFunc(c *resty.Client) KibanaRoleManagementGet {
100100
if resp.StatusCode() == 404 {
101101
return nil, nil
102102
}
103-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
103+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
104104
}
105105
kibanaRole := &KibanaRole{}
106106
err = json.Unmarshal(resp.Body(), kibanaRole)
@@ -124,7 +124,7 @@ func newKibanaRoleManagementListFunc(c *resty.Client) KibanaRoleManagementList {
124124
}
125125
log.Debug("Response: ", resp)
126126
if resp.StatusCode() >= 300 {
127-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
127+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
128128
}
129129
kibanaRoles := make(KibanaRoles, 0, 1)
130130
err = json.Unmarshal(resp.Body(), &kibanaRoles)
@@ -165,7 +165,7 @@ func newKibanaRoleManagementCreateOrUpdateFunc(c *resty.Client) KibanaRoleManage
165165
}
166166
log.Debug("Response: ", resp)
167167
if resp.StatusCode() >= 300 {
168-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
168+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
169169
}
170170

171171
// Retrive the object to return it
@@ -197,7 +197,7 @@ func newKibanaRoleManagementDeleteFunc(c *resty.Client) KibanaRoleManagementDele
197197
}
198198
log.Debug("Response: ", resp)
199199
if resp.StatusCode() >= 300 {
200-
return NewAPIError(resp.StatusCode(), resp.Status())
200+
return NewAPIError(resp.StatusCode(), "%s", resp.Status())
201201
}
202202

203203
return nil

libs/go-kibana-rest/kbapi/api.kibana_save_object.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func newKibanaSavedObjectGetFunc(c *resty.Client) KibanaSavedObjectGet {
8585
if resp.StatusCode() == 404 {
8686
return nil, nil
8787
}
88-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
88+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
8989

9090
}
9191
var data map[string]interface{}
@@ -165,7 +165,7 @@ func newKibanaSavedObjectFindFunc(c *resty.Client) KibanaSavedObjectFind {
165165
if resp.StatusCode() == 404 {
166166
return nil, nil
167167
}
168-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
168+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
169169

170170
}
171171
var data map[string]interface{}
@@ -214,7 +214,7 @@ func newKibanaSavedObjectCreateFunc(c *resty.Client) KibanaSavedObjectCreate {
214214
}
215215
log.Debug("Response: ", resp)
216216
if resp.StatusCode() >= 300 {
217-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
217+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
218218
}
219219
var dataResponse map[string]interface{}
220220
err = json.Unmarshal(resp.Body(), &dataResponse)
@@ -263,7 +263,7 @@ func newKibanaSavedObjectUpdateFunc(c *resty.Client) KibanaSavedObjectUpdate {
263263
}
264264
log.Debug("Response: ", resp)
265265
if resp.StatusCode() >= 300 {
266-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
266+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
267267
}
268268
var dataResponse map[string]interface{}
269269
err = json.Unmarshal(resp.Body(), &dataResponse)
@@ -304,7 +304,7 @@ func newKibanaSavedObjectDeleteFunc(c *resty.Client) KibanaSavedObjectDelete {
304304
}
305305
log.Debug("Response: ", resp)
306306
if resp.StatusCode() >= 300 {
307-
return NewAPIError(resp.StatusCode(), resp.Status())
307+
return NewAPIError(resp.StatusCode(), "%s", resp.Status())
308308
}
309309
var dataResponse map[string]interface{}
310310
err = json.Unmarshal(resp.Body(), &dataResponse)
@@ -356,7 +356,7 @@ func newKibanaSavedObjectExportFunc(c *resty.Client) KibanaSavedObjectExport {
356356
}
357357
log.Debug("Response: ", resp)
358358
if resp.StatusCode() >= 300 {
359-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
359+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
360360
}
361361

362362
data := resp.Body()
@@ -396,7 +396,7 @@ func newKibanaSavedObjectImportFunc(c *resty.Client) KibanaSavedObjectImport {
396396
}
397397
log.Debug("Response: ", resp)
398398
if resp.StatusCode() >= 300 {
399-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
399+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
400400
}
401401
var dataResponse map[string]interface{}
402402
err = json.Unmarshal(resp.Body(), &dataResponse)

libs/go-kibana-rest/kbapi/api.kibana_shorten_url.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func newKibanaShortenURLCreateFunc(c *resty.Client) KibanaShortenURLCreate {
6363

6464
log.Debug("Response: ", resp)
6565
if resp.StatusCode() >= 300 {
66-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
66+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
6767
}
6868

6969
shortenURLResponse := &ShortenURLResponse{}

libs/go-kibana-rest/kbapi/api.kibana_spaces.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func newKibanaSpaceGetFunc(c *resty.Client) KibanaSpaceGet {
8787
if resp.StatusCode() == 404 {
8888
return nil, nil
8989
}
90-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
90+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
9191

9292
}
9393
kibanaSpace := &KibanaSpace{}
@@ -113,7 +113,7 @@ func newKibanaSpaceListFunc(c *resty.Client) KibanaSpaceList {
113113
}
114114
log.Debug("Response: ", resp)
115115
if resp.StatusCode() >= 300 {
116-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
116+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
117117
}
118118
kibanaSpaces := make(KibanaSpaces, 0, 1)
119119
err = json.Unmarshal(resp.Body(), &kibanaSpaces)
@@ -148,7 +148,7 @@ func newKibanaSpaceCreateFunc(c *resty.Client) KibanaSpaceCreate {
148148

149149
log.Debug("Response: ", resp)
150150
if resp.StatusCode() >= 300 {
151-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
151+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
152152
}
153153
kibanaSpace = &KibanaSpace{}
154154
err = json.Unmarshal(resp.Body(), kibanaSpace)
@@ -189,7 +189,7 @@ func newKibanaSpaceCopySavedObjectsFunc(c *resty.Client) KibanaSpaceCopySavedObj
189189

190190
log.Debug("Response: ", resp)
191191
if resp.StatusCode() >= 300 {
192-
return NewAPIError(resp.StatusCode(), resp.Status())
192+
return NewAPIError(resp.StatusCode(), "%s", resp.Status())
193193
}
194194
data := make(map[string]interface{})
195195
err = json.Unmarshal(resp.Body(), &data)
@@ -205,7 +205,7 @@ func newKibanaSpaceCopySavedObjectsFunc(c *resty.Client) KibanaSpaceCopySavedObj
205205
}
206206
}
207207
if len(errors) > 0 {
208-
return NewAPIError(500, strings.Join(errors, "\n"))
208+
return NewAPIError(500, "%s", strings.Join(errors, "\n"))
209209
}
210210

211211
return nil
@@ -231,7 +231,7 @@ func newKibanaSpaceDeleteFunc(c *resty.Client) KibanaSpaceDelete {
231231
log.Debug("Response: ", resp)
232232
if resp.StatusCode() >= 300 {
233233

234-
return NewAPIError(resp.StatusCode(), resp.Status())
234+
return NewAPIError(resp.StatusCode(), "%s", resp.Status())
235235

236236
}
237237

@@ -261,7 +261,7 @@ func newKibanaSpaceUpdateFunc(c *resty.Client) KibanaSpaceUpdate {
261261

262262
log.Debug("Response: ", resp)
263263
if resp.StatusCode() >= 300 {
264-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
264+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
265265
}
266266
kibanaSpace = &KibanaSpace{}
267267
err = json.Unmarshal(resp.Body(), kibanaSpace)

libs/go-kibana-rest/kbapi/api.kibana_status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func newKibanaStatusGetFunc(c *resty.Client) KibanaStatusGet {
2929
if resp.StatusCode() == 404 {
3030
return nil, nil
3131
}
32-
return nil, NewAPIError(resp.StatusCode(), resp.Status())
32+
return nil, NewAPIError(resp.StatusCode(), "%s", resp.Status())
3333
}
3434
kibanaStatus := make(KibanaStatus)
3535
err = json.Unmarshal(resp.Body(), &kibanaStatus)

libs/go-kibana-rest/kbapi/api.kibana_synthetics.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,9 @@ func newKibanaSyntheticsMonitorDeleteFunc(c *resty.Client) KibanaSyntheticsMonit
415415
}
416416

417417
result, err := unmarshal(resp, []MonitorDeleteStatus{})
418+
if err != nil {
419+
return nil, err
420+
}
418421
return *result, err
419422
}
420423
}
@@ -481,6 +484,9 @@ func newKibanaSyntheticsParameterDeleteFunc(c *resty.Client) KibanaSyntheticsPar
481484
}
482485

483486
result, err := unmarshal(resp, []ParameterDeleteStatus{})
487+
if err != nil {
488+
return nil, err
489+
}
484490
return *result, err
485491
}
486492
}
@@ -503,9 +509,9 @@ func handleKibanaError(err error, resp *resty.Response) error {
503509
kibanaErr := KibanaError{}
504510
err := json.Unmarshal(resp.Body(), &kibanaErr)
505511
if err != nil {
506-
return NewAPIError(resp.StatusCode(), resp.Status(), err)
512+
return NewAPIError(resp.StatusCode(), "status: %s, err: %s", resp.Status(), err)
507513
}
508-
return NewAPIError(resp.StatusCode(), kibanaErr.Message, kibanaErr.Error)
514+
return NewAPIError(resp.StatusCode(), "message: %s, err: %s", kibanaErr.Message, kibanaErr.Error)
509515
}
510516
return nil
511517
}

libs/go-kibana-rest/kbapi/api.kibana_synthetics_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,7 @@ func (s *KBAPITestSuite) TestKibanaSyntheticsPrivateLocationAPI() {
444444
created, err := pAPI.Create(ctx, cfg)
445445

446446
assert.NoError(s.T(), err)
447+
assert.NotNil(s.T(), created)
447448
assert.Equal(s.T(), created.Label, cfg.Label)
448449
assert.Equal(s.T(), created.AgentPolicyId, cfg.AgentPolicyId)
449450

0 commit comments

Comments
 (0)