diff --git a/docs/data-sources/persistent_volume_v1.md b/docs/data-sources/persistent_volume_v1.md index ed9fc87ecb..cf9e8794c3 100644 --- a/docs/data-sources/persistent_volume_v1.md +++ b/docs/data-sources/persistent_volume_v1.md @@ -313,10 +313,23 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names +- `namespace` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/data-sources/pod.md b/docs/data-sources/pod.md index 5b1c5b4771..3e47b9dd0d 100644 --- a/docs/data-sources/pod.md +++ b/docs/data-sources/pod.md @@ -1794,14 +1794,27 @@ Read-Only: Read-Only: +- `chap_auth_discovery` (Boolean) +- `chap_auth_session` (Boolean) - `fs_type` (String) +- `initiator_name` (String) - `iqn` (String) - `iscsi_interface` (String) - `lun` (Number) +- `portals` (List of String) - `read_only` (Boolean) +- `secret_ref` (List of Object) (see [below for nested schema](#nestedobjatt--spec--volume--iscsi--secret_ref)) - `target_portal` (String) + +### Nested Schema for `spec.volume.iscsi.secret_ref` + +Read-Only: + +- `name` (String) + + ### Nested Schema for `spec.volume.local` diff --git a/docs/data-sources/pod_v1.md b/docs/data-sources/pod_v1.md index 884a79d6fe..766885cea6 100644 --- a/docs/data-sources/pod_v1.md +++ b/docs/data-sources/pod_v1.md @@ -868,7 +868,7 @@ Read-Only: - `tty` (Boolean) - `volume_mount` (List of Object) (see [below for nested schema](#nestedobjatt--spec--init_container--volume_mount)) - `working_dir` (String) -- `restart_policy` (String) +- `restart_policy` (String) ### Nested Schema for `spec.init_container.env` @@ -1795,14 +1795,27 @@ Read-Only: Read-Only: +- `chap_auth_discovery` (Boolean) +- `chap_auth_session` (Boolean) - `fs_type` (String) +- `initiator_name` (String) - `iqn` (String) - `iscsi_interface` (String) - `lun` (Number) +- `portals` (List of String) - `read_only` (Boolean) +- `secret_ref` (List of Object) (see [below for nested schema](#nestedobjatt--spec--volume--iscsi--secret_ref)) - `target_portal` (String) + +### Nested Schema for `spec.volume.iscsi.secret_ref` + +Read-Only: + +- `name` (String) + + ### Nested Schema for `spec.volume.local` diff --git a/docs/guides/getting-started.html.md b/docs/guides/getting-started.html.md index c35f48cb81..737bf80dc1 100644 --- a/docs/guides/getting-started.html.md +++ b/docs/guides/getting-started.html.md @@ -487,12 +487,21 @@ Terraform will perform the following actions: } + iscsi { - + fs_type = (known after apply) - + iqn = (known after apply) - + iscsi_interface = (known after apply) - + lun = (known after apply) - + read_only = (known after apply) - + target_portal = (known after apply) + + chap_auth_discovery = (known after apply) + + chap_auth_session = (known after apply) + + fs_type = (known after apply) + + initiator_name = (known after apply) + + iqn = (known after apply) + + iscsi_interface = (known after apply) + + lun = (known after apply) + + portals = (known after apply) + + read_only = (known after apply) + + + secret_ref { + + name = (known after apply) + } + + + target_portal = (known after apply) } + local { diff --git a/docs/resources/cron_job.md b/docs/resources/cron_job.md index 28c053d052..a9f48e9f39 100644 --- a/docs/resources/cron_job.md +++ b/docs/resources/cron_job.md @@ -5,7 +5,7 @@ description: |- A Cron Job creates Jobs on a time-based schedule. One CronJob object is like one line of a crontab (cron table) file. --- -# kubernetes_cron_job +# kubernetes_cron_job A Cron Job creates Jobs on a time-based schedule. @@ -2034,10 +2034,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names @@ -2387,7 +2399,7 @@ resource "kubernetes_cron_job" "demo" { ``` -## Import +## Import ``` $ terraform import kubernetes_cron_job_v1/example default/example diff --git a/docs/resources/cron_job_v1.md b/docs/resources/cron_job_v1.md index b435350633..98054253c0 100644 --- a/docs/resources/cron_job_v1.md +++ b/docs/resources/cron_job_v1.md @@ -2029,10 +2029,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/daemon_set_v1.md b/docs/resources/daemon_set_v1.md index 4669641b64..dddc2b6f65 100644 --- a/docs/resources/daemon_set_v1.md +++ b/docs/resources/daemon_set_v1.md @@ -978,8 +978,8 @@ Optional: - `volume_mount` (Block List) Pod volumes to mount into the container's filesystem. Cannot be updated. (see [below for nested schema](#nestedblock--spec--template--spec--init_container--volume_mount)) - `volume_device` (Block List) Raw volume devices to attach into the container's filesystem as raw block devices. Cannot be updated. More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#volumes-1 (see [below for nested schema](#nestedblock--spec--template--spec--init_container--volume_device)) - `working_dir` (String) Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. -- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. - +- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. + ### Nested Schema for `spec.template.spec.init_container.env` @@ -1981,10 +1981,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names @@ -2278,7 +2290,7 @@ Optional: - `update` (String) - + ## Example Usage diff --git a/docs/resources/daemonset.md b/docs/resources/daemonset.md index 49a34e6ba0..2af4197b2e 100644 --- a/docs/resources/daemonset.md +++ b/docs/resources/daemonset.md @@ -5,7 +5,7 @@ description: |- A DaemonSet ensures that all (or some) Nodes run a copy of a Pod. As nodes are added to the cluster, Pods are added to them. As nodes are removed from the cluster, those Pods are garbage collected. Deleting a DaemonSet will clean up the Pods it created. --- -# kubernetes_daemonset +# kubernetes_daemonset A DaemonSet ensures that all (or some) Nodes run a copy of a Pod. As nodes are added to the cluster, Pods are added to them. As nodes are removed from the cluster, those Pods are garbage collected. Deleting a DaemonSet will clean up the Pods it created. @@ -1979,10 +1979,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/deployment.md b/docs/resources/deployment.md index 38062e9ab8..bb11b21f4e 100644 --- a/docs/resources/deployment.md +++ b/docs/resources/deployment.md @@ -1979,10 +1979,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/deployment_v1.md b/docs/resources/deployment_v1.md index 83ec0fe09c..e3b9c19490 100644 --- a/docs/resources/deployment_v1.md +++ b/docs/resources/deployment_v1.md @@ -986,7 +986,7 @@ Optional: - `volume_mount` (Block List) Pod volumes to mount into the container's filesystem. Cannot be updated. (see [below for nested schema](#nestedblock--spec--template--spec--init_container--volume_mount)) - `volume_device` (Block List) Raw volume devices to attach into the container's filesystem as raw block devices. Cannot be updated. More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#volumes-1 (see [below for nested schema](#nestedblock--spec--template--spec--init_container--volume_device)) - `working_dir` (String) Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. -- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. +- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. @@ -1989,10 +1989,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/job.md b/docs/resources/job.md index bcaca5b3ba..5857f04ea5 100644 --- a/docs/resources/job.md +++ b/docs/resources/job.md @@ -1987,10 +1987,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/job_v1.md b/docs/resources/job_v1.md index 5e222cb5f3..894e2e90a7 100644 --- a/docs/resources/job_v1.md +++ b/docs/resources/job_v1.md @@ -7,7 +7,7 @@ description: |- # kubernetes_job_v1 -A Job creates one or more Pods and ensures that a specified number of them successfully terminate. As pods successfully complete, the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete. Deleting a Job will clean up the Pods it created. A simple case is to create one Job object in order to reliably run one Pod to completion. The Job object will start a new Pod if the first Pod fails or is deleted (for example due to a node hardware failure or a node reboot. You can also use a Job to run multiple Pods in parallel. +A Job creates one or more Pods and ensures that a specified number of them successfully terminate. As pods successfully complete, the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete. Deleting a Job will clean up the Pods it created. A simple case is to create one Job object in order to reliably run one Pod to completion. The Job object will start a new Pod if the first Pod fails or is deleted (for example due to a node hardware failure or a node reboot. You can also use a Job to run multiple Pods in parallel. ## Schema @@ -1985,10 +1985,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/persistent_volume.md b/docs/resources/persistent_volume.md index 21b6a8f0c1..4c61a62d3c 100644 --- a/docs/resources/persistent_volume.md +++ b/docs/resources/persistent_volume.md @@ -314,10 +314,23 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names +- `namespace` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/persistent_volume_v1.md b/docs/resources/persistent_volume_v1.md index 89da63119a..e3e2d95c4d 100644 --- a/docs/resources/persistent_volume_v1.md +++ b/docs/resources/persistent_volume_v1.md @@ -314,10 +314,23 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names +- `namespace` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/pod.md b/docs/resources/pod.md index 9a806bd765..08438742c2 100644 --- a/docs/resources/pod.md +++ b/docs/resources/pod.md @@ -1940,10 +1940,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/pod_v1.md b/docs/resources/pod_v1.md index c40bac1146..a84591e318 100644 --- a/docs/resources/pod_v1.md +++ b/docs/resources/pod_v1.md @@ -937,7 +937,7 @@ Optional: - `volume_mount` (Block List) Pod volumes to mount into the container's filesystem. Cannot be updated. (see [below for nested schema](#nestedblock--spec--init_container--volume_mount)) - `volume_device` (Block List) Raw volume devices to attach into the container's filesystem as raw block devices. Cannot be updated. More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#volumes-1 (see [below for nested schema](#nestedblock--spec--init_container--volume_device)) - `working_dir` (String) Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. -- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. +- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. ### Nested Schema for `spec.init_container.env` @@ -1940,10 +1940,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/replication_controller.md b/docs/resources/replication_controller.md index e08a5ce4bb..6857e038f6 100644 --- a/docs/resources/replication_controller.md +++ b/docs/resources/replication_controller.md @@ -1974,10 +1974,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/replication_controller_v1.md b/docs/resources/replication_controller_v1.md index 12af4452ae..88e90432e4 100644 --- a/docs/resources/replication_controller_v1.md +++ b/docs/resources/replication_controller_v1.md @@ -1974,10 +1974,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/docs/resources/stateful_set.md b/docs/resources/stateful_set.md index fa41a3ff34..9c9d89620a 100644 --- a/docs/resources/stateful_set.md +++ b/docs/resources/stateful_set.md @@ -2006,10 +2006,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names @@ -2361,7 +2373,7 @@ Optional: - `update` (String) - + ## Example Usage diff --git a/docs/resources/stateful_set_v1.md b/docs/resources/stateful_set_v1.md index d84ee98730..a66b397af7 100644 --- a/docs/resources/stateful_set_v1.md +++ b/docs/resources/stateful_set_v1.md @@ -307,7 +307,7 @@ Required: Optional: - `label_selector` (Block List) A label query over a set of resources, in this case pods. (see [below for nested schema](#nestedblock--spec--template--spec--affinity--pod_affinity--required_during_scheduling_ignored_during_execution--label_selector)) -- `namespace_selector` (Block List) A label query over a set of namespaces. This allows pod affinity to select pods from a specified namespace, based on namespace labels. +- `namespace_selector` (Block List) A label query over a set of namespaces. This allows pod affinity to select pods from a specified namespace, based on namespace labels. - `namespaces` (Set of String) namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means 'this pod's namespace' @@ -1009,7 +1009,7 @@ Optional: - `volume_mount` (Block List) Pod volumes to mount into the container's filesystem. Cannot be updated. (see [below for nested schema](#nestedblock--spec--template--spec--init_container--volume_mount)) - `volume_device` (Block List) Raw volume devices to attach into the container's filesystem as raw block devices. Cannot be updated. More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#volumes-1 (see [below for nested schema](#nestedblock--spec--template--spec--init_container--volume_device)) - `working_dir` (String) Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. -- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. +- `restart_policy` (String) Restart policy for designating init container as a sidecar. Can only be `Always`. More info: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers. ### Nested Schema for `spec.template.spec.init_container.env` @@ -2010,10 +2010,22 @@ Required: Optional: +- `chap_auth_discovery` (Boolean) Whether target supports iSCSI Discovery CHAP authentication. +- `chap_auth_session` (Boolean) Whether target supports iSCSI Session CHAP authentication. - `fs_type` (String) Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi +- `initiator_name` (String) The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface `target portal:volume name` will be created for the connection. - `iscsi_interface` (String) iSCSI interface name that uses an iSCSI transport. Defaults to 'default' (tcp). - `lun` (Number) iSCSI target lun number. +- `portals` (List of String) The iSCSI Target Portal List. The Portal is either an IP or `ip_addr:port` if the port is other than default (typically TCP ports 860 and 3260). - `read_only` (Boolean) Whether to force the read-only setting in VolumeMounts. Defaults to false. +- `secret_ref` (Block List, Max: 1) The CHAP Secret for iSCSI target and initiator authentication. Default is nil. More info: https://github.com/kubernetes/examples/tree/master/_archived/volumes/iscsi (see [below for nested schema](#nestedblock--spec--persistent_volume_source--iscsi--secret_ref)) + + +### Nested Schema for `spec.persistent_volume_source.iscsi.secret_ref` + +Optional: + +- `name` (String) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names diff --git a/kubernetes/schema_volume_source.go b/kubernetes/schema_volume_source.go index 2317947e78..724089b745 100644 --- a/kubernetes/schema_volume_source.go +++ b/kubernetes/schema_volume_source.go @@ -405,11 +405,26 @@ func commonVolumeSources() map[string]*schema.Schema { MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ + "chap_auth_discovery": { + Type: schema.TypeBool, + Description: "Whether target supports iSCSI Discovery CHAP authentication.", + Optional: true, + }, + "chap_auth_session": { + Type: schema.TypeBool, + Description: "Whether target supports iSCSI Session CHAP authentication.", + Optional: true, + }, "fs_type": { Type: schema.TypeString, Description: "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi", Optional: true, }, + "initiator_name": { + Type: schema.TypeString, + Description: "The custom iSCSI Initiator Name. If initiator_name is specified with iscsi_interface simultaneously, new iSCSI interface : will be created for the connection.", + Optional: true, + }, "iqn": { Type: schema.TypeString, Description: "Target iSCSI Qualified Name.", @@ -426,11 +441,18 @@ func commonVolumeSources() map[string]*schema.Schema { Description: "iSCSI target lun number.", Optional: true, }, + "portals": { + Type: schema.TypeList, + Description: "The iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, "read_only": { Type: schema.TypeBool, Description: "Whether to force the read-only setting in VolumeMounts. Defaults to false.", Optional: true, }, + "secret_ref": commonVolumeSourcesSecretRef("The CHAP Secret for iSCSI target and initiator authentication"), "target_portal": { Type: schema.TypeString, Description: "iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", diff --git a/kubernetes/structure_persistent_volume_spec.go b/kubernetes/structure_persistent_volume_spec.go index 7980ddc9d0..7d90b72eac 100644 --- a/kubernetes/structure_persistent_volume_spec.go +++ b/kubernetes/structure_persistent_volume_spec.go @@ -220,6 +220,21 @@ func flattenLocalVolumeSource(in *v1.LocalVolumeSource) []interface{} { func flattenISCSIVolumeSource(in *v1.ISCSIVolumeSource) []interface{} { att := make(map[string]interface{}) + if in.DiscoveryCHAPAuth { + att["chap_auth_discovery"] = in.DiscoveryCHAPAuth + } + if in.SessionCHAPAuth { + att["chap_auth_session"] = in.SessionCHAPAuth + } + if in.InitiatorName != nil && *in.InitiatorName != "" { + att["initiator_name"] = *in.InitiatorName + } + if len(in.Portals) > 0 { + att["portals"] = in.Portals + } + if in.SecretRef != nil { + att["secret_ref"] = flattenLocalObjectReference(in.SecretRef) + } if in.TargetPortal != "" { att["target_portal"] = in.TargetPortal } @@ -243,6 +258,21 @@ func flattenISCSIVolumeSource(in *v1.ISCSIVolumeSource) []interface{} { func flattenISCSIPersistentVolumeSource(in *v1.ISCSIPersistentVolumeSource) []interface{} { att := make(map[string]interface{}) + if in.DiscoveryCHAPAuth { + att["chap_auth_discovery"] = in.DiscoveryCHAPAuth + } + if in.SessionCHAPAuth { + att["chap_auth_session"] = in.SessionCHAPAuth + } + if in.InitiatorName != nil && *in.InitiatorName != "" { + att["initiator_name"] = *in.InitiatorName + } + if len(in.Portals) > 0 { + att["portals"] = in.Portals + } + if in.SecretRef != nil { + att["secret_ref"] = flattenSecretReference(in.SecretRef) + } if in.TargetPortal != "" { att["target_portal"] = in.TargetPortal } @@ -823,6 +853,21 @@ func expandISCSIVolumeSource(l []interface{}) *v1.ISCSIVolumeSource { TargetPortal: in["target_portal"].(string), IQN: in["iqn"].(string), } + if v, ok := in["chap_auth_discovery"].(bool); ok { + obj.DiscoveryCHAPAuth = v + } + if v, ok := in["chap_auth_session"].(bool); ok { + obj.SessionCHAPAuth = v + } + if v, ok := in["initiator_name"].(string); ok && v != "" { + obj.InitiatorName = &v + } + if v, ok := in["portals"].([]string); ok { + obj.Portals = v + } + if v, ok := in["secret_ref"].([]interface{}); ok && len(v) > 0 { + obj.SecretRef = expandLocalObjectReference(v) + } if v, ok := in["lun"].(int); ok { obj.Lun = int32(v) } @@ -847,6 +892,21 @@ func expandISCSIPersistentVolumeSource(l []interface{}) *v1.ISCSIPersistentVolum TargetPortal: in["target_portal"].(string), IQN: in["iqn"].(string), } + if v, ok := in["chap_auth_discovery"].(bool); ok { + obj.DiscoveryCHAPAuth = v + } + if v, ok := in["chap_auth_session"].(bool); ok { + obj.SessionCHAPAuth = v + } + if v, ok := in["initiator_name"].(string); ok && v != "" { + obj.InitiatorName = &v + } + if v, ok := in["portals"].([]string); ok { + obj.Portals = v + } + if v, ok := in["secret_ref"].([]interface{}); ok && len(v) > 0 { + obj.SecretRef = expandSecretReference(v) + } if v, ok := in["lun"].(int); ok { obj.Lun = int32(v) } diff --git a/templates/guides/getting-started.html.markdown b/templates/guides/getting-started.html.markdown index b86ad48578..bddba34682 100644 --- a/templates/guides/getting-started.html.markdown +++ b/templates/guides/getting-started.html.markdown @@ -487,12 +487,21 @@ Terraform will perform the following actions: } + iscsi { - + fs_type = (known after apply) - + iqn = (known after apply) - + iscsi_interface = (known after apply) - + lun = (known after apply) - + read_only = (known after apply) - + target_portal = (known after apply) + + chap_auth_discovery = (known after apply) + + chap_auth_session = (known after apply) + + fs_type = (known after apply) + + initiator_name = (known after apply) + + iqn = (known after apply) + + iscsi_interface = (known after apply) + + lun = (known after apply) + + portals = (known after apply) + + read_only = (known after apply) + + + secret_ref { + + name = (known after apply) + } + + + target_portal = (known after apply) } + local {