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