@@ -14,15 +14,16 @@ import (
1414	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" 
1515)
1616
17- func  validateMinMaintenanceWindowServerVersion (serverVersion  * version.Version ) diag.Diagnostics  {
18- 	var  maintenanceWindowPublicAPIMinSupportedVersion  =  version .Must (version .NewVersion ("8.1.0" ))
17+ func  validateMaintenanceWindowServer (serverVersion  * version.Version , serverFlavor  string ) diag.Diagnostics  {
18+ 	var  serverlessFlavor  =  "serverless" 
19+ 	var  maintenanceWindowPublicAPIMinSupportedVersion  =  version .Must (version .NewVersion ("9.1.0" ))
1920	var  diags  diag.Diagnostics 
2021
21- 	if  serverVersion .LessThan (maintenanceWindowPublicAPIMinSupportedVersion ) {
22+ 	if  serverVersion .LessThan (maintenanceWindowPublicAPIMinSupportedVersion ) &&   serverFlavor   !=   serverlessFlavor   {
2223		diags  =  append (diags , diag.Diagnostic {
2324			Severity : diag .Error ,
2425			Summary :  "Maintenance window API not supported" ,
25- 			Detail :   fmt .Sprintf (`The maintenance Window public API feature requires a minimum Elasticsearch version of "%s"` , maintenanceWindowPublicAPIMinSupportedVersion ),
26+ 			Detail :   fmt .Sprintf (`The maintenance Window public API feature requires a minimum Elasticsearch version of "%s" or a serverless Kibana instance. ` , maintenanceWindowPublicAPIMinSupportedVersion ),
2627		})
2728		return  diags 
2829	}
@@ -261,7 +262,12 @@ func resourceMaintenanceWindowCreate(ctx context.Context, d *schema.ResourceData
261262		return  diags 
262263	}
263264
264- 	diags  =  validateMinMaintenanceWindowServerVersion (serverVersion )
265+ 	serverFlavor , diags  :=  client .ServerFlavor (ctx )
266+ 	if  diags .HasError () {
267+ 		return  diags 
268+ 	}
269+ 
270+ 	diags  =  validateMaintenanceWindowServer (serverVersion , serverFlavor )
265271	if  diags .HasError () {
266272		return  diags 
267273	}
@@ -295,7 +301,12 @@ func resourceMaintenanceWindowUpdate(ctx context.Context, d *schema.ResourceData
295301		return  diags 
296302	}
297303
298- 	diags  =  validateMinMaintenanceWindowServerVersion (serverVersion )
304+ 	serverFlavor , diags  :=  client .ServerFlavor (ctx )
305+ 	if  diags .HasError () {
306+ 		return  diags 
307+ 	}
308+ 
309+ 	diags  =  validateMaintenanceWindowServer (serverVersion , serverFlavor )
299310	if  diags .HasError () {
300311		return  diags 
301312	}
@@ -333,7 +344,12 @@ func resourceMaintenanceWindowRead(ctx context.Context, d *schema.ResourceData,
333344		return  diags 
334345	}
335346
336- 	diags  =  validateMinMaintenanceWindowServerVersion (serverVersion )
347+ 	serverFlavor , diags  :=  client .ServerFlavor (ctx )
348+ 	if  diags .HasError () {
349+ 		return  diags 
350+ 	}
351+ 
352+ 	diags  =  validateMaintenanceWindowServer (serverVersion , serverFlavor )
337353	if  diags .HasError () {
338354		return  diags 
339355	}
@@ -421,7 +437,12 @@ func resourceMaintenanceWindowDelete(ctx context.Context, d *schema.ResourceData
421437		return  diags 
422438	}
423439
424- 	diags  =  validateMinMaintenanceWindowServerVersion (serverVersion )
440+ 	serverFlavor , diags  :=  client .ServerFlavor (ctx )
441+ 	if  diags .HasError () {
442+ 		return  diags 
443+ 	}
444+ 
445+ 	diags  =  validateMaintenanceWindowServer (serverVersion , serverFlavor )
425446	if  diags .HasError () {
426447		return  diags 
427448	}
0 commit comments