183 lines
4.8 KiB
JavaScript
183 lines
4.8 KiB
JavaScript
const SessionStates = {
|
|
definition: 1,
|
|
configuration: 2,
|
|
instantiation: 3,
|
|
runtime: 4,
|
|
dataCollect: 5,
|
|
shutdown: 6
|
|
};
|
|
|
|
const SessionStateDisplay = {
|
|
1: 'Definition',
|
|
2: 'Configuration',
|
|
3: 'Instantiation',
|
|
4: 'Runtime',
|
|
5: 'Data Collect',
|
|
6: 'Shutdown'
|
|
};
|
|
|
|
async function sendJson(url, data, type) {
|
|
return await $.ajax({
|
|
url,
|
|
type,
|
|
data: JSON.stringify(data),
|
|
contentType: 'application/json',
|
|
dataType: 'json'
|
|
});
|
|
}
|
|
|
|
async function postJson(url, data) {
|
|
console.log('POST: ', url);
|
|
return await sendJson(url, data, 'POST');
|
|
}
|
|
|
|
async function putJson(url, data) {
|
|
console.log('PUT: ', url);
|
|
return await sendJson(url, data, 'PUT');
|
|
}
|
|
|
|
async function deleteJson(url, data) {
|
|
console.log('DELETE: ', url);
|
|
return await sendJson(url, data, 'DELETE');
|
|
}
|
|
|
|
class CoreRest {
|
|
constructor() {
|
|
this.currentSession = null;
|
|
}
|
|
|
|
getStateName(state) {
|
|
return SessionStateDisplay[state];
|
|
}
|
|
|
|
async getSession() {
|
|
return await $.getJSON(`/sessions/${this.currentSession}`);
|
|
}
|
|
|
|
async getSessions() {
|
|
return await $.getJSON('/sessions');
|
|
}
|
|
|
|
async createSession() {
|
|
return await postJson('/sessions');
|
|
}
|
|
|
|
async shutdownSession() {
|
|
return await this.setSessionState(SessionStates.shutdown);
|
|
}
|
|
|
|
async setSessionState(state) {
|
|
return await putJson(`/sessions/${this.currentSession}/state`, {state});
|
|
}
|
|
|
|
async deleteSession(sessionId) {
|
|
return await deleteJson(`/sessions/${sessionId}`);
|
|
}
|
|
|
|
async getEmaneModels() {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/emane/models`);
|
|
}
|
|
|
|
async getEmaneConfig(config) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/emane/config`, config);
|
|
}
|
|
|
|
async getEmaneModelConfig(config) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/emane/model/config`, config);
|
|
}
|
|
|
|
async setEmaneConfig(config) {
|
|
return await putJson(`/sessions/${this.currentSession}/emane/config`, config);
|
|
}
|
|
|
|
async setEmaneModelConfig(config) {
|
|
return await putJson(`/sessions/${this.currentSession}/emane/model/config`, config);
|
|
}
|
|
|
|
async getNode(nodeId) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/nodes/${nodeId}`);
|
|
}
|
|
|
|
async createNode(node) {
|
|
return await postJson(`/sessions/${this.currentSession}/nodes`, node);
|
|
}
|
|
|
|
async editNode(node) {
|
|
return await putJson(`/sessions/${this.currentSession}/nodes/${node.id}`, {
|
|
id: node.id,
|
|
x: node.x,
|
|
y: node.y
|
|
});
|
|
}
|
|
|
|
async nodeTerminal(nodeId) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/nodes/${nodeId}/terminal`);
|
|
}
|
|
|
|
async createLink(link) {
|
|
return await postJson(`/sessions/${this.currentSession}/links`, link);
|
|
}
|
|
|
|
async editLink(link) {
|
|
return await putJson(`/sessions/${this.currentSession}/links`, link);
|
|
}
|
|
|
|
async getLinks(nodeId) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/nodes/${nodeId}/links`);
|
|
}
|
|
|
|
async getServices(nodeId) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/nodes/${nodeId}/services`);
|
|
}
|
|
|
|
async getService(nodeId, service) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/nodes/${nodeId}/services/${service}`);
|
|
}
|
|
|
|
async setService(nodeId, service, data) {
|
|
return await putJson(`/sessions/${this.currentSession}/nodes/${nodeId}/services/${service}`, data);
|
|
}
|
|
|
|
async getServiceFile(nodeId, service, serviceFile) {
|
|
return await $.getJSON(`/sessions/${this.currentSession}/nodes/${nodeId}/services/${service}/file`,
|
|
{file: serviceFile});
|
|
}
|
|
|
|
async setServiceFile(nodeId, service, serviceFile, data) {
|
|
return await putJson(`/sessions/${this.currentSession}/nodes/${nodeId}/services/${service}/file`, {
|
|
name: serviceFile,
|
|
data
|
|
});
|
|
}
|
|
|
|
async getNodeIps(nodeId, ip4Prefix, ip6Prefix) {
|
|
return await postJson('/ips', {
|
|
id: nodeId,
|
|
ip4: ip4Prefix,
|
|
ip6: ip6Prefix
|
|
});
|
|
}
|
|
|
|
async retrieveSession() {
|
|
let response = await this.getSessions();
|
|
const sessions = response.sessions;
|
|
console.log('current sessions: ', sessions);
|
|
const session = {id: 0, state: 0};
|
|
|
|
if (sessions.length) {
|
|
session.id = sessions[0].id;
|
|
session.state = sessions[0].state;
|
|
} else {
|
|
response = await this.createSession();
|
|
session.id = response.id;
|
|
session.state = response.state;
|
|
}
|
|
|
|
return session;
|
|
}
|
|
|
|
async isRunning() {
|
|
const session = await this.getSession();
|
|
return session.state === SessionStates.runtime;
|
|
}
|
|
}
|