feat: routing mode, domain, server URL, SSL offloading on Environments page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -333,12 +333,20 @@ function DefaultResourcesSection({ environment, onSave, saving }: {
|
||||
const [memoryReserve, setMemoryReserve] = useState('');
|
||||
const [cpuShares, setCpuShares] = useState('');
|
||||
const [cpuLimit, setCpuLimit] = useState('');
|
||||
const [routingMode, setRoutingMode] = useState(String(defaults.routingMode ?? 'path'));
|
||||
const [routingDomain, setRoutingDomain] = useState(String(defaults.routingDomain ?? ''));
|
||||
const [serverUrl, setServerUrl] = useState(String(defaults.serverUrl ?? ''));
|
||||
const [envSslOffloading, setEnvSslOffloading] = useState(defaults.sslOffloading !== false);
|
||||
|
||||
useEffect(() => {
|
||||
setMemoryLimit(String(defaults.memoryLimitMb ?? ''));
|
||||
setMemoryReserve(String(defaults.memoryReserveMb ?? ''));
|
||||
setCpuShares(String(defaults.cpuShares ?? ''));
|
||||
setCpuLimit(String(defaults.cpuLimit ?? ''));
|
||||
setRoutingMode(String(environment.defaultContainerConfig.routingMode ?? 'path'));
|
||||
setRoutingDomain(String(environment.defaultContainerConfig.routingDomain ?? ''));
|
||||
setServerUrl(String(environment.defaultContainerConfig.serverUrl ?? ''));
|
||||
setEnvSslOffloading(environment.defaultContainerConfig.sslOffloading !== false);
|
||||
setEditing(false);
|
||||
}, [environment.id]);
|
||||
|
||||
@@ -347,6 +355,10 @@ function DefaultResourcesSection({ environment, onSave, saving }: {
|
||||
setMemoryReserve(String(defaults.memoryReserveMb ?? ''));
|
||||
setCpuShares(String(defaults.cpuShares ?? ''));
|
||||
setCpuLimit(String(defaults.cpuLimit ?? ''));
|
||||
setRoutingMode(String(defaults.routingMode ?? 'path'));
|
||||
setRoutingDomain(String(defaults.routingDomain ?? ''));
|
||||
setServerUrl(String(defaults.serverUrl ?? ''));
|
||||
setEnvSslOffloading(defaults.sslOffloading !== false);
|
||||
setEditing(false);
|
||||
}
|
||||
|
||||
@@ -356,6 +368,10 @@ function DefaultResourcesSection({ environment, onSave, saving }: {
|
||||
memoryReserveMb: memoryReserve ? parseInt(memoryReserve) : null,
|
||||
cpuShares: cpuShares ? parseInt(cpuShares) : null,
|
||||
cpuLimit: cpuLimit ? parseFloat(cpuLimit) : null,
|
||||
routingMode,
|
||||
routingDomain: routingDomain || null,
|
||||
serverUrl: serverUrl || null,
|
||||
sslOffloading: envSslOffloading,
|
||||
});
|
||||
setEditing(false);
|
||||
}
|
||||
@@ -386,6 +402,29 @@ function DefaultResourcesSection({ environment, onSave, saving }: {
|
||||
{editing
|
||||
? <Input value={cpuLimit} onChange={(e) => setCpuLimit(e.target.value)} placeholder="e.g. 1.0" style={{ width: 100 }} />
|
||||
: <span className={styles.metaValue}>{defaults.cpuLimit ? `${defaults.cpuLimit} cores` : '—'}</span>}
|
||||
|
||||
<span className={styles.metaLabel}>Routing Mode</span>
|
||||
{editing
|
||||
? <select value={routingMode} onChange={(e) => setRoutingMode(e.target.value)} style={{ padding: '4px 8px', border: '1px solid var(--border-subtle)', borderRadius: 4, background: 'var(--bg-surface)', color: 'var(--text-primary)', fontSize: 12 }}>
|
||||
<option value="path">Path-based</option>
|
||||
<option value="subdomain">Subdomain</option>
|
||||
</select>
|
||||
: <span className={styles.metaValue}>{routingMode === 'subdomain' ? 'Subdomain' : 'Path-based'}</span>}
|
||||
|
||||
<span className={styles.metaLabel}>Routing Domain</span>
|
||||
{editing
|
||||
? <Input value={routingDomain} onChange={(e) => setRoutingDomain(e.target.value)} placeholder="e.g. apps.example.com" style={{ width: 200 }} />
|
||||
: <span className={styles.metaValue}>{String(defaults.routingDomain || '—')}</span>}
|
||||
|
||||
<span className={styles.metaLabel}>Server URL</span>
|
||||
{editing
|
||||
? <Input value={serverUrl} onChange={(e) => setServerUrl(e.target.value)} placeholder="auto-detect" style={{ width: 200 }} />
|
||||
: <span className={styles.metaValue}>{String(defaults.serverUrl || '(global default)')}</span>}
|
||||
|
||||
<span className={styles.metaLabel}>SSL Offloading</span>
|
||||
{editing
|
||||
? <Toggle checked={envSslOffloading} onChange={() => setEnvSslOffloading(!envSslOffloading)} />
|
||||
: <span className={styles.metaValue}>{envSslOffloading ? 'Enabled' : 'Disabled'}</span>}
|
||||
</div>
|
||||
<div style={{ marginTop: 8, display: 'flex', gap: 8, justifyContent: 'flex-end' }}>
|
||||
{editing ? (
|
||||
|
||||
Reference in New Issue
Block a user