Skip to content

Commit c44e894

Browse files
committed
add compute server image refresh button to admin settings
1 parent 71bc379 commit c44e894

File tree

2 files changed

+43
-25
lines changed

2 files changed

+43
-25
lines changed

src/packages/frontend/admin/site-settings/render-row.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details
44
*/
55

6-
import { Button, Popover } from "antd";
6+
import { Alert, Button, Popover } from "antd";
77
import { CSSProperties } from "react";
88

99
import { Icon, LabeledRow, Markdown } from "@cocalc/frontend/components";
@@ -12,6 +12,7 @@ import { Config, RowType, Tag } from "@cocalc/util/db-schema/site-defaults";
1212
import { COLORS } from "@cocalc/util/theme";
1313
import { Data, IsReadonly } from "./types";
1414
import { RowEntry } from "./row-entry";
15+
import { RefreshImagesButton } from "@cocalc/frontend/compute/select-version";
1516

1617
interface RenderRowProps {
1718
name: string;
@@ -150,6 +151,17 @@ export function RenderRow({
150151
clearable={conf.clearable}
151152
update={update}
152153
/>
154+
{name == "compute_servers_images_spec_url" && (
155+
<div>
156+
<RefreshImagesButton />
157+
<Alert
158+
showIcon
159+
style={{ margin: "15px" }}
160+
type="info"
161+
message="Click the above button after updating the images spec URL to clear the cache."
162+
/>
163+
</div>
164+
)}
153165
</LabeledRow>
154166
);
155167
}

src/packages/frontend/compute/select-version.tsx

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,7 @@ export default function SelectVersion({
3434
}
3535
setConfig0(obj);
3636
};
37-
3837
const [tag, setTag] = useState<string>(configuration.tag ?? "");
39-
const [refreshing, setRefreshing] = useState<boolean>(false);
40-
const [error, setError] = useState<string>("");
4138
const [tag_filesystem, set_tag_filesystem] = useState<string>(
4239
configuration.tag_filesystem ?? "",
4340
);
@@ -94,26 +91,7 @@ export default function SelectVersion({
9491

9592
return (
9693
<div style={style}>
97-
<Button
98-
size="small"
99-
style={{ float: "right" }}
100-
onClick={async () => {
101-
try {
102-
setError("");
103-
setRefreshing(true);
104-
await forceRefreshImages();
105-
} catch (err) {
106-
setError(`${err}`);
107-
} finally {
108-
setRefreshing(false);
109-
}
110-
}}
111-
disabled={refreshing}
112-
>
113-
<Icon name="refresh" /> Refresh{refreshing ? "ing..." : ""} Images
114-
{refreshing && <Spin style={{ marginLeft: "10px" }} />}
115-
</Button>
116-
<ShowError error={error} setError={setError} />
94+
<RefreshImagesButton size={"small"} style={{ float: "right" }} />
11795
<SelectTag
11896
style={{ marginBottom: "5px" }}
11997
label={
@@ -193,7 +171,7 @@ function toOption(x: {
193171
<Tooltip
194172
title={
195173
<>
196-
{x.tag ?? x.label ?? ""}{" "}{x.description ?? ""}
174+
{x.tag ?? x.label ?? ""} {x.description ?? ""}
197175
</>
198176
}
199177
>
@@ -231,3 +209,31 @@ function SelectTag({ disabled, tag, setTag, options, label, style }) {
231209
</div>
232210
);
233211
}
212+
213+
export function RefreshImagesButton({ size, style }: { size?; style? }) {
214+
const [refreshing, setRefreshing] = useState<boolean>(false);
215+
const [error, setError] = useState<string>("");
216+
return (
217+
<div style={style}>
218+
<Button
219+
size={size}
220+
onClick={async () => {
221+
try {
222+
setError("");
223+
setRefreshing(true);
224+
await forceRefreshImages();
225+
} catch (err) {
226+
setError(`${err}`);
227+
} finally {
228+
setRefreshing(false);
229+
}
230+
}}
231+
disabled={refreshing}
232+
>
233+
<Icon name="refresh" /> Refresh{refreshing ? "ing..." : ""} Images
234+
{refreshing && <Spin style={{ marginLeft: "10px" }} />}
235+
</Button>
236+
<ShowError error={error} setError={setError} />
237+
</div>
238+
);
239+
}

0 commit comments

Comments
 (0)