Skip to content

Commit d731442

Browse files
committed
version and serverless checks
1 parent caebd0b commit d731442

File tree

5 files changed

+81
-0
lines changed

5 files changed

+81
-0
lines changed

internal/kibana/maintenance_window/create.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,21 @@ func (r *MaintenanceWindowResource) Create(ctx context.Context, req resource.Cre
2525
return
2626
}
2727

28+
serverVersion, sdkDiags := r.client.ServerVersion(ctx)
29+
if sdkDiags.HasError() {
30+
return
31+
}
32+
33+
serverFlavor, sdkDiags := r.client.ServerFlavor(ctx)
34+
if sdkDiags.HasError() {
35+
return
36+
}
37+
38+
diags = validateMaintenanceWindowServer(serverVersion, serverFlavor)
39+
if diags.HasError() {
40+
return
41+
}
42+
2843
client, err := r.client.GetKibanaOapiClient()
2944
if err != nil {
3045
resp.Diagnostics.AddError(err.Error(), "")

internal/kibana/maintenance_window/delete.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ func (r *MaintenanceWindowResource) Delete(ctx context.Context, req resource.Del
1616
return
1717
}
1818

19+
serverVersion, sdkDiags := r.client.ServerVersion(ctx)
20+
if sdkDiags.HasError() {
21+
return
22+
}
23+
24+
serverFlavor, sdkDiags := r.client.ServerFlavor(ctx)
25+
if sdkDiags.HasError() {
26+
return
27+
}
28+
29+
diags = validateMaintenanceWindowServer(serverVersion, serverFlavor)
30+
if diags.HasError() {
31+
return
32+
}
33+
1934
client, err := r.client.GetKibanaOapiClient()
2035
if err != nil {
2136
resp.Diagnostics.AddError(err.Error(), "")

internal/kibana/maintenance_window/read.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ func (r *MaintenanceWindowResource) Read(ctx context.Context, req resource.ReadR
1616
return
1717
}
1818

19+
serverVersion, sdkDiags := r.client.ServerVersion(ctx)
20+
if sdkDiags.HasError() {
21+
return
22+
}
23+
24+
serverFlavor, sdkDiags := r.client.ServerFlavor(ctx)
25+
if sdkDiags.HasError() {
26+
return
27+
}
28+
29+
diags = validateMaintenanceWindowServer(serverVersion, serverFlavor)
30+
if diags.HasError() {
31+
return
32+
}
33+
1934
client, err := r.client.GetKibanaOapiClient()
2035
if err != nil {
2136
resp.Diagnostics.AddError(err.Error(), "")

internal/kibana/maintenance_window/update.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ func (r *MaintenanceWindowResource) Update(ctx context.Context, req resource.Upd
1616
return
1717
}
1818

19+
serverVersion, sdkDiags := r.client.ServerVersion(ctx)
20+
if sdkDiags.HasError() {
21+
return
22+
}
23+
24+
serverFlavor, sdkDiags := r.client.ServerFlavor(ctx)
25+
if sdkDiags.HasError() {
26+
return
27+
}
28+
29+
diags = validateMaintenanceWindowServer(serverVersion, serverFlavor)
30+
if diags.HasError() {
31+
return
32+
}
33+
1934
client, err := r.client.GetKibanaOapiClient()
2035
if err != nil {
2136
resp.Diagnostics.AddError(err.Error(), "")
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package maintenance_window
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/hashicorp/go-version"
7+
"github.com/hashicorp/terraform-plugin-framework/diag"
8+
)
9+
10+
func validateMaintenanceWindowServer(serverVersion *version.Version, serverFlavor string) diag.Diagnostics {
11+
var serverlessFlavor = "serverless"
12+
var maintenanceWindowPublicAPIMinSupportedVersion = version.Must(version.NewVersion("9.1.0"))
13+
var diags diag.Diagnostics
14+
15+
if serverVersion.LessThan(maintenanceWindowPublicAPIMinSupportedVersion) && serverFlavor != serverlessFlavor {
16+
diags.AddError("Maintenance window API not supported", fmt.Sprintf(`The maintenance Window public API feature requires a minimum Elasticsearch version of "%s" or a serverless Kibana instance.`, maintenanceWindowPublicAPIMinSupportedVersion))
17+
return diags
18+
}
19+
20+
return nil
21+
}

0 commit comments

Comments
 (0)