Skip to content

Commit ea55b8e

Browse files
committed
Merge remote-tracking branch 'origin/master' into issue_3644_sshproxy_get_upstream_api_method
2 parents 011d6a8 + 2a3c77f commit ea55b8e

33 files changed

Lines changed: 574 additions & 281 deletions

File tree

docker/server/entrypoint.sh

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,9 @@ if [[ -z "${LITESTREAM_REPLICA_URL}" ]]; then
1313
exec dstack server --host 0.0.0.0
1414
else
1515
if [[ ! -f "$DB_PATH" ]]; then
16-
echo "Attempting Litestream restore..."
17-
if ! output=$(litestream restore -o "$DB_PATH" "$LITESTREAM_REPLICA_URL" 2>&1); then
18-
if echo "$output" | grep -qiE "cannot calc restore plan"; then
19-
echo "No replica snapshots found; starting with empty database."
20-
else
21-
echo "$output" >&2
22-
exit 1
23-
fi
24-
fi
16+
echo "Starting db restore"
17+
litestream restore -if-replica-exists -o "$DB_PATH" "$LITESTREAM_REPLICA_URL"
18+
echo "Finished db restore"
2519
fi
2620
exec litestream replicate -exec "dstack server --host 0.0.0.0" "$DB_PATH" "$LITESTREAM_REPLICA_URL"
2721
fi

docker/server/release/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ RUN apt-get update && apt-get install -y \
1515
&& rm -rf /var/lib/apt/lists/*
1616

1717
RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="x86_64"; fi && \
18-
curl https://github.com/benbjohnson/litestream/releases/download/v0.5.0/litestream-0.5.0-linux-$ARCH.deb -O -L && \
19-
dpkg -i litestream-0.5.0-linux-$ARCH.deb
18+
curl https://github.com/benbjohnson/litestream/releases/download/v0.5.9/litestream-0.5.9-linux-$ARCH.deb -O -L && \
19+
dpkg -i litestream-0.5.9-linux-$ARCH.deb
2020

2121
ADD https://astral.sh/uv/install.sh /uv-installer.sh
2222
RUN sh /uv-installer.sh && rm /uv-installer.sh

docker/server/stgn/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ RUN apt-get update && apt-get install -y \
1313
&& rm -rf /var/lib/apt/lists/*
1414

1515
RUN if [ $(uname -m) = "aarch64" ]; then ARCH="arm64"; else ARCH="x86_64"; fi && \
16-
curl https://github.com/benbjohnson/litestream/releases/download/v0.5.0/litestream-0.5.0-linux-$ARCH.deb -O -L && \
17-
dpkg -i litestream-0.5.0-linux-$ARCH.deb
16+
curl https://github.com/benbjohnson/litestream/releases/download/v0.5.9/litestream-0.5.9-linux-$ARCH.deb -O -L && \
17+
dpkg -i litestream-0.5.9-linux-$ARCH.deb
1818

1919
ADD https://astral.sh/uv/install.sh /uv-installer.sh
2020
RUN sh /uv-installer.sh && rm /uv-installer.sh

docs/overrides/main.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@
191191
{% endblock %}
192192

193193
{% block announce %}
194-
Services now support native <a href="https://dstack.ai/blog/pd-disaggregation/" target="_blank">Prefill-Decode disaggregation</a>
194+
Infrastructure orchestration is becoming an <a href="/blog/agentic-orchestration/" target="_blank">agent skill</a>
195195
{% endblock %}
196196

197197
{% block footer %}

frontend/src/libs/fleet.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,18 @@ export const getStatusIconType = (status: IInstance['status']): StatusIndicatorP
2626
}
2727
};
2828

29+
export const getStatusIconColor = (status: IInstance['status']): StatusIndicatorProps.Color | undefined => {
30+
switch (status) {
31+
case 'busy':
32+
case 'provisioning':
33+
case 'starting':
34+
case 'terminating':
35+
return 'blue';
36+
default:
37+
return undefined;
38+
}
39+
};
40+
2941
export const getFleetStatusIconType = (status: IFleet['status']): StatusIndicatorProps['type'] => {
3042
switch (status) {
3143
case 'submitted':

frontend/src/libs/run.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,10 @@ export const getStatusIconColor = (
5252
switch (status) {
5353
case 'submitted':
5454
case 'pending':
55-
return 'blue';
55+
case 'provisioning':
5656
case 'pulling':
57-
return 'green';
57+
case 'terminating':
58+
return 'blue';
5859
case 'aborted':
5960
return 'yellow';
6061
case 'done':

frontend/src/pages/Instances/Details/InstanceDetails/index.tsx

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { format } from 'date-fns';
66
import { Box, ColumnLayout, Container, Header, Loader, NavigateLink, StatusIndicator } from 'components';
77

88
import { DATE_TIME_FORMAT } from 'consts';
9-
import { formatBackend, getStatusIconType } from 'libs/fleet';
9+
import { formatBackend, getStatusIconColor, getStatusIconType } from 'libs/fleet';
1010
import { getHealthStatusIconType, prettyEnumValue } from 'libs/instance';
1111
import { formatResources } from 'libs/resources';
1212
import { ROUTES } from 'routes';
@@ -52,9 +52,7 @@ export const InstanceDetails = () => {
5252
<Box variant="awsui-key-label">{t('fleets.fleet')}</Box>
5353
<div>
5454
{data.fleet_name && data.fleet_id ? (
55-
<NavigateLink
56-
href={ROUTES.FLEETS.DETAILS.FORMAT(data.project_name, data.fleet_id)}
57-
>
55+
<NavigateLink href={ROUTES.FLEETS.DETAILS.FORMAT(data.project_name, data.fleet_id)}>
5856
{data.fleet_name}
5957
</NavigateLink>
6058
) : (
@@ -66,7 +64,10 @@ export const InstanceDetails = () => {
6664
<div>
6765
<Box variant="awsui-key-label">{t('fleets.instances.status')}</Box>
6866
<div>
69-
<StatusIndicator type={getStatusIconType(data.status)}>
67+
<StatusIndicator
68+
type={getStatusIconType(data.status)}
69+
colorOverride={getStatusIconColor(data.status)}
70+
>
7071
{(data.status === 'idle' || data.status === 'busy') &&
7172
data.total_blocks !== null &&
7273
data.total_blocks > 1
@@ -98,17 +99,13 @@ export const InstanceDetails = () => {
9899

99100
<div>
100101
<Box variant="awsui-key-label">{t('fleets.instances.finished_at')}</Box>
101-
<div>
102-
{data.finished_at ? format(new Date(data.finished_at), DATE_TIME_FORMAT) : '-'}
103-
</div>
102+
<div>{data.finished_at ? format(new Date(data.finished_at), DATE_TIME_FORMAT) : '-'}</div>
104103
</div>
105104

106105
{data.termination_reason && (
107106
<div>
108107
<Box variant="awsui-key-label">{t('fleets.instances.termination_reason')}</Box>
109-
<div>
110-
{data.termination_reason_message ?? prettyEnumValue(data.termination_reason)}
111-
</div>
108+
<div>{data.termination_reason_message ?? prettyEnumValue(data.termination_reason)}</div>
112109
</div>
113110
)}
114111

frontend/src/pages/Instances/List/hooks/useColumnDefinitions.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { format } from 'date-fns';
55
import { Icon, NavigateLink, StatusIndicator, TableProps } from 'components';
66

77
import { DATE_TIME_FORMAT } from 'consts';
8-
import { formatBackend, getStatusIconType } from 'libs/fleet';
8+
import { formatBackend, getStatusIconColor, getStatusIconType } from 'libs/fleet';
99
import { formatInstanceStatusText, getHealthStatusIconType, prettyEnumValue } from 'libs/instance';
1010
import { formatResources } from 'libs/resources';
1111
import { ROUTES } from 'routes';
@@ -50,7 +50,9 @@ export const useColumnsDefinitions = () => {
5050
id: 'status',
5151
header: t('fleets.instances.status'),
5252
cell: (item) => (
53-
<StatusIndicator type={getStatusIconType(item.status)}>{formatInstanceStatusText(item)}</StatusIndicator>
53+
<StatusIndicator type={getStatusIconType(item.status)} colorOverride={getStatusIconColor(item.status)}>
54+
{formatInstanceStatusText(item)}
55+
</StatusIndicator>
5456
),
5557
},
5658
{

0 commit comments

Comments
 (0)