in frontend/src/pages/Configure/HeadNode.js [158:209]
function DcvSettings() {
const dcvPath = [...headNodePath, 'Dcv', 'Enabled'];
let dcvEnabled = useState(dcvPath) || false;
let port = useState([...headNodePath, 'Dcv', 'Port']) || 8443;
let allowedIps = useState([...headNodePath, 'Dcv', 'AllowedIps']) || '0.0.0.0/0';
const editing = useState(['app', 'wizard', 'editing']);
const toggleDcv = (event) => {
const value = !dcvEnabled;
if(value)
{
enableSsm(value);
if(allowedIps === null)
setState([...headNodePath, 'Dcv', 'AllowedIps'], '0.0.0.0/0');
if(port === null)
setState([...headNodePath, 'Dcv', 'Port'], 8443);
setState(dcvPath, value);
} else {
clearState([...headNodePath, 'Dcv'])
}
}
return (
<FormField label="Virtual Desktop" description="Allow a virtual desktop session on the HeadNode via DCV. If you select this option, we suggest using a larger instance size.">
<div style={{display: "flex", flexDirection: "row", alignItems: "center", justifyContent: "space-between"}}>
<SpaceBetween direction="vertical" size="xxxs">
<Toggle disabled={editing} checked={dcvEnabled} onChange={toggleDcv}>DCV Enabled</Toggle>
<SpaceBetween direction="vertical" size="xs">
{dcvEnabled &&
<FormField label="Allowed IPs">
<Input
value={allowedIps}
onChange={(({detail}) => {setState([...headNodePath, 'Dcv', 'allowedIps'], detail.value)})} />
</FormField>
}
{dcvEnabled &&
<FormField label="Port">
<Input
inputMode="decimal"
value={port}
onChange={(({detail}) => setState([...headNodePath, 'Dcv', 'port'], parseInt(detail.value)))} />
</FormField>
}
</SpaceBetween>
</SpaceBetween>
<HelpTooltip>
Remote-Desktop into the headnode to visualize results.
</HelpTooltip>
</div>
</FormField>
)
}