39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
// static/js/graph/wizard/api.js
|
|
export async function setTarget(ip) {
|
|
const r = await fetch('/api/host/target', {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify({ ip })
|
|
});
|
|
const j = await r.json();
|
|
if (!r.ok || !j.ok) throw new Error(j.error || 'Failed to set target IP');
|
|
return j;
|
|
}
|
|
|
|
export async function getTarget() {
|
|
const r = await fetch('/api/host/target');
|
|
// returns { ip: "x.x.x.x" } or { ip: null }
|
|
return r.ok ? r.json() : { ip: null };
|
|
}
|
|
|
|
export async function bootstrapAccess() {
|
|
const r = await fetch('/api/host/bootstrap_access', { method: 'POST' });
|
|
const j = await r.json();
|
|
if (!r.ok || !j.ok) throw new Error(j.error || 'Failed to bootstrap access');
|
|
return j;
|
|
}
|
|
|
|
// static/js/wizard/api.js
|
|
export async function renderAnsible(payload) {
|
|
const r = await fetch('/api/ansible/render', {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify(payload)
|
|
});
|
|
const j = await r.json().catch(() => ({}));
|
|
if (!r.ok || !j.ok) {
|
|
const msg = j.error || `Render failed (HTTP ${r.status})`;
|
|
throw new Error(msg);
|
|
}
|
|
return j; // { ok: true, staging: "ansible_workspace/staging" }
|
|
} |