diff --git a/CHANGELOG.md b/CHANGELOG.md
index 666eef2..2d913eb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,22 @@
## 2.4.0 (Unreleased)
+## 2.3.2 (June 17, 2024)
+
+IMPROVEMENTS:
+
+* Supported 2 new configurations: `FortiAP Hardware` (`fap_hw`) and `FortiSwitch Hardware` (`fsw_hw`).
+* Configuration `faz_vm` added one new argument `addons`.
+* `fortiflexvm_entitlements_vm` supported new input argument `skip_pending`.
+
+
## 2.3.1 (April 3, 2024)
IMPROVEMENTS:
* Supported 2 new configurations: `FortiSASE` (`fortisase`) and `FortiEDR` (`fortiedr`).
-* `fortiflex_config` supported input argument `config_id`. You can import existing configurations by specifying this argument.
-* `fortiflex_retrieve_vm_group` supported input argument `retrieve_status`. It can retrieve both PENDING and STOPPED entitlements if you set `retrieve_status = ["STOPPED", "PENDING"]`.
-* `fortiflex_retrieve_vm_group` supported input argument `require_exact_count`. The default value is false, if set as true, the resource will release retrieved entitlements and report an error if the resource doesn't get enough `count_num` entitlements.
+* `fortiflexvm_config` supported input argument `config_id`. You can import existing configurations by specifying this argument.
+* `fortiflexvm_retrieve_vm_group` supported input argument `retrieve_status`. It can retrieve both PENDING and STOPPED entitlements if you set `retrieve_status = ["STOPPED", "PENDING"]`.
+* `fortiflexvm_retrieve_vm_group` supported input argument `require_exact_count`. The default value is false, if set as true, the resource will release retrieved entitlements and report an error if the resource doesn't get enough `count_num` entitlements.
* Reported a warning rather than an error if `end_date` in `fortiflexvm_entitlements_vm` is set incorrectly.
## 2.3.0 (Feburary 23, 2024)
diff --git a/fortiflexvm/config.go b/fortiflexvm/config.go
index aa41b63..68724bb 100644
--- a/fortiflexvm/config.go
+++ b/fortiflexvm/config.go
@@ -10,7 +10,8 @@ import (
)
var PRODUCT_TYPES = []string{"fgt_vm_bundle", "fmg_vm", "fwb_vm", "fgt_vm_lcs", "fc_ems_op", "faz_vm",
- "fpc_vm", "fad_vm", "fgt_hw", "fwbc_private", "fwbc_public", "fc_ems_cloud", "fortisase", "fortiedr"}
+ "fpc_vm", "fad_vm", "fgt_hw", "fap_hw", "fsw_hw", "fwbc_private", "fwbc_public", "fc_ems_cloud",
+ "fortisase", "fortiedr"}
func fortiAPIPatch(t interface{}) bool {
if t == nil {
@@ -46,6 +47,10 @@ func convProductTypeName2Id(p_type string) int {
return 9
case "FGT_HW":
return 101
+ case "FAP_HW":
+ return 102
+ case "FSW_HW":
+ return 103
case "FWBC_PRIVATE":
return 202
case "FWBC_PUBLIC":
@@ -81,6 +86,10 @@ func convProductTypeId2Name(p_id int) string {
return "FAD_VM"
case 101:
return "FGT_HW"
+ case 102:
+ return "FAP_HW"
+ case 103:
+ return "FSW_HW"
case 202:
return "FWBC_PRIVATE"
case 203:
@@ -192,6 +201,18 @@ func convConfParsId2NameList(p_id int) (string, string, string) {
return "fortisase", "dedicated_ips", "int"
case 52:
return "fortiedr", "addons", "list"
+ case 53:
+ return "fsw_hw", "device_model", "string"
+ case 54:
+ return "fsw_hw", "service_pkg", "string"
+ case 55:
+ return "fap_hw", "device_model", "string"
+ case 56:
+ return "fap_hw", "service_pkg", "string"
+ case 57:
+ return "fap_hw", "addons", "list"
+ case 58:
+ return "faz_vm", "addons", "list"
default:
return "", "", ""
}
@@ -272,6 +293,8 @@ func convConfParsNameList2Id(p_type, c_name string) int {
return 22
case "support_service":
return 23
+ case "addons":
+ return 58
default:
return 0
}
@@ -302,6 +325,26 @@ func convConfParsNameList2Id(p_type, c_name string) int {
default:
return 0
}
+ case "fsw_hw":
+ switch c_name {
+ case "device_model":
+ return 53
+ case "service_pkg":
+ return 54
+ default:
+ return 0
+ }
+ case "fap_hw":
+ switch c_name {
+ case "device_model":
+ return 55
+ case "service_pkg":
+ return 56
+ case "addons":
+ return 57
+ default:
+ return 0
+ }
case "fwbc_private":
switch c_name {
case "average_throughput":
diff --git a/fortiflexvm/data_source_configs_list.go b/fortiflexvm/data_source_configs_list.go
index ec3e39b..89e590b 100644
--- a/fortiflexvm/data_source_configs_list.go
+++ b/fortiflexvm/data_source_configs_list.go
@@ -198,6 +198,11 @@ func dataSourceConfigsList() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
+ "addons": &schema.Schema{
+ Type: schema.TypeList,
+ Computed: true,
+ Elem: &schema.Schema{Type: schema.TypeString},
+ },
},
},
},
@@ -250,6 +255,43 @@ func dataSourceConfigsList() *schema.Resource {
},
},
},
+ "fap_hw": &schema.Schema{
+ Type: schema.TypeList,
+ Computed: true,
+ Elem: &schema.Resource{
+ Schema: map[string]*schema.Schema{
+ "device_model": &schema.Schema{
+ Type: schema.TypeString,
+ Computed: true,
+ },
+ "service_pkg": &schema.Schema{
+ Type: schema.TypeString,
+ Computed: true,
+ },
+ "addons": &schema.Schema{
+ Type: schema.TypeList,
+ Computed: true,
+ Elem: &schema.Schema{Type: schema.TypeString},
+ },
+ },
+ },
+ },
+ "fsw_hw": &schema.Schema{
+ Type: schema.TypeList,
+ Computed: true,
+ Elem: &schema.Resource{
+ Schema: map[string]*schema.Schema{
+ "device_model": &schema.Schema{
+ Type: schema.TypeString,
+ Computed: true,
+ },
+ "service_pkg": &schema.Schema{
+ Type: schema.TypeString,
+ Computed: true,
+ },
+ },
+ },
+ },
"fwbc_private": &schema.Schema{
Type: schema.TypeList,
Computed: true,
diff --git a/fortiflexvm/resource_config.go b/fortiflexvm/resource_config.go
index 705ec1b..667f528 100644
--- a/fortiflexvm/resource_config.go
+++ b/fortiflexvm/resource_config.go
@@ -60,13 +60,16 @@ func resourceConfig() *schema.Resource {
FPC_VM: FortiPortal Virtual Machine;
FAD_VM: FortiADC Virtual Machine;
FGT_HW: FortiGate Hardware;
+ FAP_HW: FortiAP Hardware;
+ FSW_HW: FortiSwitch Hardware;
FWBC_PRIVATE: FortiWeb Cloud - Private;
FWBC_PUBLIC: FortiWeb Cloud - Public;
FC_EMS_CLOUD: FortiClient EMS Cloud;
FORTISASE: FortiSASE;
FORTIEDR: FortiEDR.`,
ValidateDiagFunc: checkInputValidString("product_type", []string{"FGT_VM_Bundle", "FMG_VM", "FWB_VM", "FGT_VM_LCS",
- "FC_EMS_OP", "FC_EMS_CLOUD", "FAZ_VM", "FPC_VM", "FAD_VM", "FGT_HW", "FWBC_PRIVATE", "FWBC_PUBLIC", "FORTISASE", "FORTIEDR"}),
+ "FC_EMS_OP", "FC_EMS_CLOUD", "FAZ_VM", "FPC_VM", "FAD_VM", "FGT_HW", "FAP_HW", "FSW_HW",
+ "FWBC_PRIVATE", "FWBC_PUBLIC", "FORTISASE", "FORTIEDR"}),
},
"status": &schema.Schema{
Type: schema.TypeString,
@@ -248,6 +251,12 @@ func resourceConfig() *schema.Resource {
Optional: true,
Computed: true,
},
+ "addons": &schema.Schema{
+ Type: schema.TypeList,
+ Optional: true,
+ Computed: true,
+ Elem: &schema.Schema{Type: schema.TypeString},
+ },
},
},
},
@@ -309,6 +318,50 @@ func resourceConfig() *schema.Resource {
},
},
},
+ "fap_hw": &schema.Schema{
+ Type: schema.TypeList,
+ Optional: true,
+ Computed: true,
+ Elem: &schema.Resource{
+ Schema: map[string]*schema.Schema{
+ "device_model": &schema.Schema{
+ Type: schema.TypeString,
+ Optional: true,
+ Computed: true,
+ },
+ "service_pkg": &schema.Schema{
+ Type: schema.TypeString,
+ Optional: true,
+ Computed: true,
+ },
+ "addons": &schema.Schema{
+ Type: schema.TypeList,
+ Optional: true,
+ Computed: true,
+ Elem: &schema.Schema{Type: schema.TypeString},
+ },
+ },
+ },
+ },
+ "fsw_hw": &schema.Schema{
+ Type: schema.TypeList,
+ Optional: true,
+ Computed: true,
+ Elem: &schema.Resource{
+ Schema: map[string]*schema.Schema{
+ "device_model": &schema.Schema{
+ Type: schema.TypeString,
+ Optional: true,
+ Computed: true,
+ },
+ "service_pkg": &schema.Schema{
+ Type: schema.TypeString,
+ Optional: true,
+ Computed: true,
+ },
+ },
+ },
+ },
"fwbc_private": &schema.Schema{
Type: schema.TypeList,
Optional: true,
diff --git a/fortiflexvm/resource_entitlements_vm.go b/fortiflexvm/resource_entitlements_vm.go
index d57fb84..3bfaced 100644
--- a/fortiflexvm/resource_entitlements_vm.go
+++ b/fortiflexvm/resource_entitlements_vm.go
@@ -52,6 +52,11 @@ func resourceEntitlementsVM() *schema.Resource {
Optional: true,
Computed: true,
},
+ "skip_pending": &schema.Schema{
+ Type: schema.TypeBool,
+ Optional: true,
+ Default: false,
+ },
"start_date": &schema.Schema{
Type: schema.TypeString,
Computed: true,
@@ -104,6 +109,9 @@ func resourceEntitlementsVMCreate(ctx context.Context, d *schema.ResourceData, m
if v, ok := d.GetOk("folder_path"); ok {
obj["folderPath"] = v
}
+ if v, ok := d.GetOk("skip_pending"); ok {
+ obj["skipPending"] = v
+ }
if v, ok := d.GetOk("end_date"); ok {
obj["endDate"] = v
}
diff --git a/website/docs/d/fortiflexvm_configs_list.html.markdown b/website/docs/d/fortiflexvm_configs_list.html.markdown
index f0619d9..a93f137 100644
--- a/website/docs/d/fortiflexvm_configs_list.html.markdown
+++ b/website/docs/d/fortiflexvm_configs_list.html.markdown
@@ -40,6 +40,7 @@ The following attributes are exported:
The `configs` block contains:
* `fad_vm` - (List of Object) FortiADC Virtual Machine. The structure of [`configs.fad_vm` block](#nestedobjatt--configs--fad_vm) is documented below.
+* `fap_hw` - (List of Object) FortiAP Hardware. The structure of [`configs.fap_hw` block](#nestedobjatt--configs--fap_hw) is documented below.
* `faz_vm` - (List of Object) FortiAnalyzer Virtual Machine. The structure of [`configs.faz_vm` block](#nestedobjatt--configs--faz_vm) is documented below.
* `fc_ems_cloud` - (List of Object) FortiClient EMS Cloud. The structure of [`configs.fc_ems_cloud` block](#nestedobjatt--configs--fc_ems_cloud) is documented below.
* `fc_ems_op` - (List of Object) FortiClient EMS On-Prem. The structure of [`configs.fc_ems_op` block](#nestedobjatt--configs--fc_ems_op) is documented below.
@@ -48,6 +49,7 @@ The `configs` block contains:
* `fgt_vm_lcs` - (List of Object) FortiGate Virtual Machine (A La Carte Services). The structure of [`configs.fgt_vm_lcs` block](#nestedobjatt--configs--fgt_vm_lcs) is documented below.
* `fmg_vm` - (List of Object) FortiManager Virtual Machine. The structure of [`configs.fmg_vm` block](#nestedobjatt--configs--fmg_vm) is documented below.
* `fpc_vm` - (List of Object) FortiPortal Virtual Machine. The structure of [`configs.fpc_vm` block](#nestedobjatt--configs--fpc_vm) is documented below.
+* `fsw_hw` - (List of Object) FortiSwitch Hardware. The structure of [`configs.fsw_hw` block](#nestedobjatt--configs--fsw_hw) is documented below.
* `fwb_vm` - (List of Object) FortiWeb Virtual Machine. The structure of [`configs.fwb_vm` block](#nestedobjatt--configs--fwb_vm) is documented below.
* `fwbc_private` - (List of Object) FortiWeb Cloud - Private. The structure of [`configs.fwbc_private` block](#nestedobjatt--configs--fwbc_private) is documented below.
* `fwbc_public` - (List of Object) FortiWeb Cloud - Public. The structure of [`configs.fwbc_public` block](#nestedobjatt--configs--fwbc_public) is documented below.
@@ -58,6 +60,7 @@ The `configs` block contains:
* `name` - (String) Configuration name.
* `product_type` - (String) Configuration type. Possible values:
* `FAD_VM`: FortiADC Virtual Machine
+ * `FAP_HW`: FortiAP Hardware
* `FAZ_VM`: FortiAnalyzer Virtual Machine
* `FC_EMS_CLOUD`: FortiClient EMS Cloud
* `FC_EMS_OP`: FortiClient EMS On-Prem
@@ -66,6 +69,7 @@ The `configs` block contains:
* `FGT_VM_LCS`: FortiGate Virtual Machine - A La Carte Services
* `FMG_VM`: FortiManager Virtual Machine
* `FPC_VM`: FortiPortal Virtual Machine
+ * `FSW_HW`: FortiSwitch Hardware
* `FWB_VM`: FortiWeb Virtual Machine - Service Bundle
* `FWBC_PRIVATE`: FortiWeb Cloud - Private
* `FWBC_PUBLIC`: FortiWeb Cloud - Public
@@ -79,7 +83,40 @@ The `configs` block contains:
The `configs.fad_vm` block contains:
* `cpu_size` - (String) The number of CPUs. The value of this attribute is one of `"1"`, `"2"`, `"4"`, `"8"`, `"16"`, `"32"`.
-* `service_pkg` - (String) The value of this attribute is one of `"FDVSTD"` (Standard), `"FDVADV"` (Advanced) or `"FDVFC247"` (FortiCare Premium).
+* `service_pkg` - (String) The value of this attribute is one of `"FDVFC247"` (FortiCare Premium), `"FDVNET"` (Network Security), `"FDVAPP"` (Application Security), `"FDVAI"` (AI Security).
+
+
+
+The `configs.fap_hw` block contains:
+
+* `device_model` - (String) Device Model. For all possible values, please check https://fndn.fortinet.net/index.php?/fortiapi/954-fortiflex. Possible values:
+ * `"FP23JF"`: FortiAP-23JF
+ * `"FP221E"`: FortiAP-221E
+ * `"FP223E"`: FortiAP-223E
+ * `"FP231F"`: FortiAP-231F
+ * `"FP231G"`: FortiAP-231G
+ * `"FP233G"`: FortiAP-233G
+ * `"FP234F"`: FortiAP-234F
+ * `"FP234G"`: FortiAP-234G
+ * `"FP431F"`: FortiAP-431F
+ * `"FP431G"`: FortiAP-431G
+ * `"FP432F"`: FortiAP-432F
+ * `"F432FR"`: FortiAP-432FR
+ * `"FP432G"`: FortiAP-432G
+ * `"FP433F"`: FortiAP-433F
+ * `"FP433G"`: FortiAP-433G
+ * `"FP441K"`: FortiAP-441K
+ * `"FP443K"`: FortiAP-443K
+ * `"FP831F"`: FortiAP-831F
+ * `"PU231F"`: FortiAP-U231F
+ * `"PU234F"`: FortiAP-U234F
+ * `"PU422E"`: FortiAP-U422EV
+ * `"PU431F"`: FortiAP-U431F
+ * `"PU432F"`: FortiAP-U432F
+ * `"PU433F"`: FortiAP-U433F
+* `service_pkg` - (String) Possible values: `"FAPHWFC247"` (FortiCare Premium), `"FAPHWFCEL"` (FortiCare Elite).
+* `addons` - (List of String) Possible values:
+ * `"FAPHWFSFG"`: FortiSASE Cloud Managed AP
@@ -88,6 +125,7 @@ The `configs.faz_vm` block contains:
* `adom_num` - (Number) Number of ADOMs. A number between 0 and 1200 (inclusive).
* `daily_storage` - (Number) Daily Storage (GB). A number between 5 and 8300 (inclusive).
* `support_service` - (String) Support Service. Possible value: `"FAZFC247"` (FortiCare Premium).
+* `addons` - (List of String) The default value is an empty list. Options: `"FAZISSS"` (OT Security Service), `"FAZFGSA"` (Attack Surface Security Service).
@@ -243,6 +281,65 @@ The `configs.fpc_vm` block contains:
* `managed_dev` - (Number) Number of managed devices. A number between 0 and 100000 (inclusive).
+
+The `configs.fsw_hw` block contains:
+
+* `device_model` - (String) Device Model. For all possible values, please check https://fndn.fortinet.net/index.php?/fortiapi/954-fortiflex. Possible values:
+ * `"S108EN"`: FortiSwitch-108E
+ * `"S108EF"`: FortiSwitch-108E-FPOE
+ * `"S108EP"`: FortiSwitch-108E-POE
+ * `"S108FN"`: FortiSwitch-108F
+ * `"S108FF"`: FortiSwitch-108F-FPOE
+ * `"S108FP"`: FortiSwitch-108F-POE
+ * `"S124EN"`: FortiSwitch-124E
+ * `"S124EF"`: FortiSwitch-124E-FPOE
+ * `"S124EP"`: FortiSwitch-124E-POE
+ * `"S124FN"`: FortiSwitch-124F
+ * `"S124FF"`: FortiSwitch-124F-FPOE
+ * `"S124FP"`: FortiSwitch-124F-POE
+ * `"S148EN"`: FortiSwitch-148E
+ * `"S148EP"`: FortiSwitch-148E-POE
+ * `"S148FN"`: FortiSwitch-148F
+ * `"S148FF"`: FortiSwitch-148F-FPOE
+ * `"S148FP"`: FortiSwitch-148F-POE
+ * `"S224DF"`: FortiSwitch-224D-FPOE
+ * `"S224EN"`: FortiSwitch-224E
+ * `"S224EP"`: FortiSwitch-224E-POE
+ * `"S248DN"`: FortiSwitch-248D
+ * `"S248EF"`: FortiSwitch-248E-FPOE
+ * `"S248EP"`: FortiSwitch-248E-POE
+ * `"S424DN"`: FortiSwitch-424D
+ * `"S424DF"`: FortiSwitch-424D-FPOE
+ * `"S424DP"`: FortiSwitch-424D-POE
+ * `"S424EN"`: FortiSwitch-424E
+ * `"S424EF"`: FortiSwitch-424E-FPOE
+ * `"S424EI"`: FortiSwitch-424E-Fiber
+ * `"S424EP"`: FortiSwitch-424E-POE
+ * `"S448DN"`: FortiSwitch-448D
+ * `"S448DP"`: FortiSwitch-448D-POE
+ * `"S448EN"`: FortiSwitch-448E
+ * `"S448EF"`: FortiSwitch-448E-FPOE
+ * `"S448EP"`: FortiSwitch-448E-POE
+ * `"S524DN"`: FortiSwitch-524D
+ * `"S524DF"`: FortiSwitch-524D-FPOE
+ * `"S548DN"`: FortiSwitch-548D
+ * `"S548DF"`: FortiSwitch-548D-FPOE
+ * `"S624FN"`: FortiSwitch-624F
+ * `"S624FF"`: FortiSwitch-624F-FPOE
+ * `"S648FN"`: FortiSwitch-648F
+ * `"S648FF"`: FortiSwitch-648F-FPOE
+ * `"FS1D24"`: FortiSwitch-1024D
+ * `"FS1E24"`: FortiSwitch-1024E
+ * `"FS1D48"`: FortiSwitch-1048D
+ * `"FS1E48"`: FortiSwitch-1048E
+ * `"FS2F48"`: FortiSwitch-2048F
+ * `"FS3D32"`: FortiSwitch-3032D
+ * `"FS3E32"`: FortiSwitch-3032E
+ * `"S426EF"`: FortiSwitch-M426E-FPOE
+ * `"ST1E24"`: FortiSwitch-T1024E
+ * `"SR12DP"`: FortiSwitchRugged-112D-POE
+ * `"SR24DN"`: FortiSwitchRugged-124D
+* `service_pkg` - (String) Possible values: `"FSWHWFC247"` (FortiCare Premium), `"FSWHWFCEL"` (FortiCare Elite).
The `configs.fwb_vm` block contains:
diff --git a/website/docs/index.html.markdown b/website/docs/index.html.markdown
index ed4b6ef..5d84305 100644
--- a/website/docs/index.html.markdown
+++ b/website/docs/index.html.markdown
@@ -17,7 +17,7 @@ The FortiFlexVM provider is used to interact with the resources supported by For
terraform {
required_providers {
fortiflexvm = {
- version = "2.3.1"
+ version = "2.3.2"
source = "fortinetdev/fortiflexvm"
}
}
diff --git a/website/docs/r/fortiflexvm_config.html.markdown b/website/docs/r/fortiflexvm_config.html.markdown
index 8269c6c..806bb49 100644
--- a/website/docs/r/fortiflexvm_config.html.markdown
+++ b/website/docs/r/fortiflexvm_config.html.markdown
@@ -121,6 +121,7 @@ resource "fortiflexvm_config" "example5" {
daily_storage = 11 # 5 ~ 8300
support_service = "FAZFC247" # "FAZFC247"
adom_num = 0 # 0 ~ 1200
+ addons = [] # "FAZISSS", "FAZFGSA"
}
}
@@ -141,7 +142,7 @@ resource "fortiflexvm_config" "example7" {
name = "FAD_VM_example"
fad_vm {
cpu_size = "1" # "1", "2", "4", "8", "16", "32"
- service_pkg = "FDVSTD" # "FDVSTD", "FDVADV", "FDVFC247"
+ service_pkg = "FDVSTD" # "FDVFC247", "FDVNET", "FDVAPP", "FDVAI"
}
}
@@ -215,6 +216,48 @@ resource "fortiflexvm_config" "example12" {
}
}
+resource "fortiflexvm_config" "example13" {
+ product_type = "FORTIEDR"
+ program_serial_number = "ELAVMS00000XXXXX"
+ name = "FORTIEDR_example"
+ fortiedr {
+ service_pkg = "FEDRPDR" # Only support "FEDRPDR" (Discover/Protect/Respond) now
+ addons = ["FEDRXDR"] # Empty list or ["FEDRXDR"]
+ }
+}
+
+resource "fortiflexvm_config" "example14" {
+ product_type = "FAP_HW"
+ program_serial_number = "ELAVMS00000XXXXX"
+ name = "FAP_HW_example"
+ fap_hw {
+ device_model = "FP23JF" # For all possible values, please check https://fndn.fortinet.net/index.php?/fortiapi/954-fortiflex
+ # "FP23JF", "FP221E", "FP223E", "FP231F", "FP231G", "FP233G", "FP234F"
+ # "FP234G", "FP431F", "FP431G", "FP432F", "F432FR", "FP432G", "FP433F"
+ # "FP433G", "FP441K", "FP443K", "FP831F", "PU231F", "PU234F", "PU422E"
+ # "PU431F", "PU432F", "PU433F"
+ service_pkg = "FAPHWFC247" # "FAPHWFC247", "FAPHWFCEL"
+ addons = [] # List of string, "FAPHWFSFG"
+ }
+}
+
+resource "fortiflexvm_config" "example15" {
+ product_type = "FSW_HW"
+ program_serial_number = "ELAVMS00000XXXXX"
+ name = "FSW_HW_example"
+ fsw_hw {
+ device_model = "S108EN" # For all possible values, please check https://fndn.fortinet.net/index.php?/fortiapi/954-fortiflex
+ # "S108EN", "S108EF", "S108EP", "S108FN", "S108FF", "S108FP", "S124EN", "S124EF",
+ # "S124EP", "S124FN", "S124FF", "S124FP", "S148EN", "S148EP", "S148FN", "S148FF",
+ # "S148FP", "S224DF", "S224EN", "S224EP", "S248DN", "S248EF", "S248EP", "S424DN",
+ # "S424DF", "S424DP", "S424EN", "S424EF", "S424EI", "S424EP", "S448DN", "S448DP",
+ # "S448EN", "S448EF", "S448EP", "S524DN", "S524DF", "S548DN", "S548DF", "S624FN",
+ # "S624FF", "S648FN", "S648FF", "FS1D24", "FS1E24", "FS1D48", "FS1E48", "FS2F48",
+ # "FS3D32", "FS3E32", "S426EF", "ST1E24", "SR12DP", "SR24DN"
+ service_pkg = "FSWHWFC247" # "FSWHWFC247", "FSWHWFCEL"
+ }
+}
+
```
## Argument Reference
@@ -225,6 +268,7 @@ The following arguments are supported:
* `config_id` - (Optional/Number) Configuration ID. If you specify this argument, this resource will import this configuration rather than create a new one.
* `product_type` (Required/String) Product type, must be one of the following options:
* `FAD_VM`: FortiADC Virtual Machine
+ * `FAP_HW`: FortiAP Hardware
* `FAZ_VM`: FortiAnalyzer Virtual Machine
* `FC_EMS_CLOUD`: FortiClient EMS Cloud
* `FC_EMS_OP`: FortiClient EMS On-Prem
@@ -233,6 +277,7 @@ The following arguments are supported:
* `FGT_VM_LCS`: FortiGate Virtual Machine - A La Carte Services
* `FMG_VM`: FortiManager Virtual Machine
* `FPC_VM`: FortiPortal Virtual Machine
+ * `FSW_HW`: FortiSwitch Hardware
* `FWB_VM`: FortiWeb Virtual Machine - Service Bundle
* `FWBC_PRIVATE`: FortiWeb Cloud - Private
* `FWBC_PUBLIC`: FortiWeb Cloud - Public
@@ -244,6 +289,7 @@ The following arguments are supported:
* `ACTIVE`: Enable a configuration
* `DISABLED`: Disable a configuration
* `fad_vm` - (Block List) You must fill in this block if your `product_type` is `"FAD_VM"`. The structure of [`fad_vm` block](#nestedblock--fad_vm) is documented below.
+* `fap_hw` - (Block List) You must fill in this block if your `product_type` is `"FAP_HW"`. The structure of [`fap_hw` block](#nestedblock--fap_hw) is documented below.
* `faz_vm` - (Block List) You must fill in this block if your `product_type` is `"FAZ_VM"`. The structure of [`faz_vm` block](#nestedblock--faz_vm) is documented below.
* `fc_ems_cloud` - (Block List) You must fill in this block if your `product_type` is `"FC_EMS_CLOUD"`. The structure of [`fc_ems_cloud` block](#nestedblock--fc_ems_cloud) is documented below.
* `fc_ems_op` - (Block List) You must fill in this block if your `product_type` is `"FC_EMS_OP"`. The structure of [`fc_ems_op` block](#nestedblock--fc_ems_op) is documented below.
@@ -252,6 +298,7 @@ The following arguments are supported:
* `fgt_vm_lcs` - (Block List) You must fill in this block if your `product_type` is `"FGT_VM_LCS"`. The structure of [`fgt_vm_lcs` block](#nestedblock--fgt_vm_lcs) is documented below.
* `fmg_vm` - (Block List) You must fill in this block if your `product_type` is `"FMG_VM"`. The structure of [`fmg_vm` block](#nestedblock--fmg_vm) is documented below.
* `fpc_vm` - (Block List) You must fill in this block if your `product_type` is `"FPC_VM"`. The structure of [`fpc_vm` block](#nestedblock--fpc_vm) is documented below.
+* `fsw_hw` - (Block List) You must fill in this block if your `product_type` is `"FSW_HW"`. The structure of [`fsw_hw` block](#nestedblock--fsw_hw) is documented below.
* `fwb_vm` - (Block List) You must fill in this block if your `product_type` is `"FWB_VM"`. The structure of [`fwb_vm` block](#nestedblock--fwb_vm) is documented below.
* `fwbc_private` - (Block List) You must fill in this block if your `product_type` is `"FWBC_PRIVATE"`. The structure of [`fwbc_private` block](#nestedblock--fwbc_private) is documented below.
* `fwbc_public` - (Block List) You must fill in this block if your `product_type` is `"FWBC_PUBLIC"`. The structure of [`fwbc_public` block](#nestedblock--fwbc_public) is documented below.
@@ -262,8 +309,40 @@ The following arguments are supported:
The `fad_vm` block contains:
* `cpu_size` - (Required if `product_type = "FAD_VM"`/String) The number of CPUs. The value of this attribute is one of `"1"`, `"2"`, `"4"`, `"8"`, `"16"`, `"32"`.
-* `service_pkg` - (Required if `product_type = "FAD_VM"`/String) Options: `"FDVSTD"` (Standard), `"FDVADV"` (Advanced) or `"FDVFC247"` (FortiCare Premium).
-
+* `service_pkg` - (Required if `product_type = "FAD_VM"`/String) Options: `"FDVFC247"` (FortiCare Premium), `"FDVNET"` (Network Security), `"FDVAPP"` (Application Security), `"FDVAI"` (AI Security).
+
+
+
+The `fap_vm` block contains:
+
+* `device_model` - (Required if `product_type = "FAP_HW"`/String) Device Model. For all possible values, please check https://fndn.fortinet.net/index.php?/fortiapi/954-fortiflex. Options:
+ * `"FP23JF"`: FortiAP-23JF
+ * `"FP221E"`: FortiAP-221E
+ * `"FP223E"`: FortiAP-223E
+ * `"FP231F"`: FortiAP-231F
+ * `"FP231G"`: FortiAP-231G
+ * `"FP233G"`: FortiAP-233G
+ * `"FP234F"`: FortiAP-234F
+ * `"FP234G"`: FortiAP-234G
+ * `"FP431F"`: FortiAP-431F
+ * `"FP431G"`: FortiAP-431G
+ * `"FP432F"`: FortiAP-432F
+ * `"F432FR"`: FortiAP-432FR
+ * `"FP432G"`: FortiAP-432G
+ * `"FP433F"`: FortiAP-433F
+ * `"FP433G"`: FortiAP-433G
+ * `"FP441K"`: FortiAP-441K
+ * `"FP443K"`: FortiAP-443K
+ * `"FP831F"`: FortiAP-831F
+ * `"PU231F"`: FortiAP-U231F
+ * `"PU234F"`: FortiAP-U234F
+ * `"PU422E"`: FortiAP-U422EV
+ * `"PU431F"`: FortiAP-U431F
+ * `"PU432F"`: FortiAP-U432F
+ * `"PU433F"`: FortiAP-U433F
+* `service_pkg` - (Required if `product_type = "FAP_HW"`/String) Possible values: `"FAPHWFC247"` (FortiCare Premium), `"FAPHWFCEL"` (FortiCare Elite).
+* `addons` - (Optional/List of String) Possible values:
+ * `"FAPHWFSFG"`: FortiSASE Cloud Managed AP
The `faz_vm` block contains:
@@ -271,7 +350,7 @@ The `faz_vm` block contains:
* `adom_num` - (Required if `product_type = "FAZ_VM"`/Number) Number of ADOMs. A number between 0 and 1200 (inclusive).
* `daily_storage` - (Required if `product_type = "FAZ_VM"`/Number) Daily Storage (GB). A number between 5 and 8300 (inclusive).
* `support_service` - (Required if `product_type = "FAZ_VM"`/String) Support Service. Option: `"FAZFC247"` (FortiCare Premium).
-
+* `addons` - (Optional) The default value is an empty list. Options: `"FAZISSS"` (OT Security Service), `"FAZFGSA"` (Attack Surface Security Service).
The `fc_ems_cloud` block contains:
@@ -424,6 +503,66 @@ The `fpc_vm` block contains:
* `managed_dev` - (Required if `product_type = "FPC_VM"`/Number) Number of managed devices. A number between 0 and 100000 (inclusive).
+
+The `fsw_hw` block contains:
+
+* `device_model` - (Required if `product_type = "FSW_HW"`/String) Device Model. For all possible values, please check https://fndn.fortinet.net/index.php?/fortiapi/954-fortiflex. Possible values:
+ * `"S108EN"`: FortiSwitch-108E
+ * `"S108EF"`: FortiSwitch-108E-FPOE
+ * `"S108EP"`: FortiSwitch-108E-POE
+ * `"S108FN"`: FortiSwitch-108F
+ * `"S108FF"`: FortiSwitch-108F-FPOE
+ * `"S108FP"`: FortiSwitch-108F-POE
+ * `"S124EN"`: FortiSwitch-124E
+ * `"S124EF"`: FortiSwitch-124E-FPOE
+ * `"S124EP"`: FortiSwitch-124E-POE
+ * `"S124FN"`: FortiSwitch-124F
+ * `"S124FF"`: FortiSwitch-124F-FPOE
+ * `"S124FP"`: FortiSwitch-124F-POE
+ * `"S148EN"`: FortiSwitch-148E
+ * `"S148EP"`: FortiSwitch-148E-POE
+ * `"S148FN"`: FortiSwitch-148F
+ * `"S148FF"`: FortiSwitch-148F-FPOE
+ * `"S148FP"`: FortiSwitch-148F-POE
+ * `"S224DF"`: FortiSwitch-224D-FPOE
+ * `"S224EN"`: FortiSwitch-224E
+ * `"S224EP"`: FortiSwitch-224E-POE
+ * `"S248DN"`: FortiSwitch-248D
+ * `"S248EF"`: FortiSwitch-248E-FPOE
+ * `"S248EP"`: FortiSwitch-248E-POE
+ * `"S424DN"`: FortiSwitch-424D
+ * `"S424DF"`: FortiSwitch-424D-FPOE
+ * `"S424DP"`: FortiSwitch-424D-POE
+ * `"S424EN"`: FortiSwitch-424E
+ * `"S424EF"`: FortiSwitch-424E-FPOE
+ * `"S424EI"`: FortiSwitch-424E-Fiber
+ * `"S424EP"`: FortiSwitch-424E-POE
+ * `"S448DN"`: FortiSwitch-448D
+ * `"S448DP"`: FortiSwitch-448D-POE
+ * `"S448EN"`: FortiSwitch-448E
+ * `"S448EF"`: FortiSwitch-448E-FPOE
+ * `"S448EP"`: FortiSwitch-448E-POE
+ * `"S524DN"`: FortiSwitch-524D
+ * `"S524DF"`: FortiSwitch-524D-FPOE
+ * `"S548DN"`: FortiSwitch-548D
+ * `"S548DF"`: FortiSwitch-548D-FPOE
+ * `"S624FN"`: FortiSwitch-624F
+ * `"S624FF"`: FortiSwitch-624F-FPOE
+ * `"S648FN"`: FortiSwitch-648F
+ * `"S648FF"`: FortiSwitch-648F-FPOE
+ * `"FS1D24"`: FortiSwitch-1024D
+ * `"FS1E24"`: FortiSwitch-1024E
+ * `"FS1D48"`: FortiSwitch-1048D
+ * `"FS1E48"`: FortiSwitch-1048E
+ * `"FS2F48"`: FortiSwitch-2048F
+ * `"FS3D32"`: FortiSwitch-3032D
+ * `"FS3E32"`: FortiSwitch-3032E
+ * `"S426EF"`: FortiSwitch-M426E-FPOE
+ * `"ST1E24"`: FortiSwitch-T1024E
+ * `"SR12DP"`: FortiSwitchRugged-112D-POE
+ * `"SR24DN"`: FortiSwitchRugged-124D
+* `service_pkg` - (Required if `product_type = "FSW_HW"`/String) Possible values: `"FSWHWFC247"` (FortiCare Premium), `"FSWHWFCEL"` (FortiCare Elite).
+
The `fwb_vm` block contains:
diff --git a/website/docs/r/fortiflexvm_entitlements_vm.markdown b/website/docs/r/fortiflexvm_entitlements_vm.markdown
index e110aba..e0b0ee2 100644
--- a/website/docs/r/fortiflexvm_entitlements_vm.markdown
+++ b/website/docs/r/fortiflexvm_entitlements_vm.markdown
@@ -25,6 +25,7 @@ resource "fortiflexvm_entitlements_vm" "example" {
description = "Your description" # Optional.
# end_date = "2024-11-12T00:00:00" # Optional. If not set, it will use the program end date automatically.
# folder_path = "My Assets" # Optional. If not set, new VM will be in "My Assets"
+ # skip_pending = false
# status = "ACTIVE" # "ACTIVE" or "STOPPED". Optional.
# refresh_token_when_destroy = True # Optional. Refresh the token when you destroy this resource
}
@@ -57,9 +58,10 @@ The following arguments are supported:
* `config_id` - (Required/Number) The ID of a FortiFlex Configuration.
* `description` - (Optional/String) The description of VM entitlement.
* `end_date` - (Optional/String) VM entitlement end date. It can not be before today's date or after the program's end date. Any format that satisfies [ISO 8601](https://www.w3.org/TR/NOTE-datetime-970915.html) is accepted. Recommended format: `YYYY-MM-DDThh:mm:ss`. If not specify, it will use the program end date automatically.
-* `folder_path` - (Optional/String) The folder path of the VM. If not set, the new VM will be in "My Assets"
+* `folder_path` - (Optional/String) Used when creating new entitlements. The folder path of the VM. If not set, the new VM will be in "My Assets".
* `refresh_token_when_destroy` - (Optional/Boolean) Default value is false. If set it as true, the token of this entitlement will be refreshed when you use `terraform destroy`.
* `serial_number` - (Optional/String) If you specify serial_number, terraform will import the existing entitlement. If you don't specify it, terraform will create a new entitlement.
+* `skip_pending` - (Optional/Boolean) Used when creating new entitlements. Default is False. Set it to true will activate the entitlement right away and charges start to incur even without downloading the license by token.
* `status` - (Optional/String) "ACTIVE" or "STOPPED". Use "STOPPED" if you want to stop the VM entitlement. Use "ACTIVE" if you want to reactivate it. It has many restrictions. Not recommended to set it manually.
## Attribute Reference