62 lines
2.5 KiB
JavaScript
62 lines
2.5 KiB
JavaScript
import org.json.JSONObject;
|
|
var Response = com.hivext.api.Response;
|
|
var storage_unavailable_markup = "";
|
|
var storageInfo = getStorageNodeid();
|
|
var storageEnvDomain = storageInfo.storageEnvShortName;
|
|
var storageEnvMasterId = storageInfo.storageCtid;
|
|
var backupedEnvDomain = '${env.envName}';
|
|
|
|
resp = api.env.control.GetEnvInfo(storageEnvDomain, session);
|
|
if (resp.result != 0 && resp.result != 11) return resp;
|
|
if (resp.result == 11) {
|
|
storage_unavailable_markup = "Storage environment " + "${settings.storageName}" + " is deleted.";
|
|
} else if (resp.env.status == 1) {
|
|
var respUpdate = api.env.control.ExecCmdById(storageEnvDomain, session, storageEnvMasterId, toJSON([{"command": "/usr/bin/restic self-update 2>&1", "params": ""}]), false);
|
|
if (respUpdate.result != 0) return resp;
|
|
var backups = api.env.control.ExecCmdById(storageEnvDomain, session, storageEnvMasterId, toJSON([{"command": "/root/getBackups.sh", "params": backupedEnvDomain}]), false).responses[0].out;
|
|
var backupList = toNative(new JSONObject(String(backups))).backups;
|
|
var backupListPrepared = prepareBackups(backupList);
|
|
} else {
|
|
storage_unavailable_markup = "Storage environment " + storageEnvDomain + " is unavailable (stopped/sleeping).";
|
|
}
|
|
|
|
function getStorageNodeid(){
|
|
let storageEnv = '${settings.storageName}'
|
|
var storageEnvShortName = storageEnv.split(".")[0]
|
|
let resp = api.environment.control.GetEnvInfo({ envName: storageEnvShortName })
|
|
if (resp.result != 0) return resp
|
|
|
|
let storageNode = resp.nodes.filter(node => (node.nodeGroup == 'storage' && node.ismaster))[0];
|
|
if (!storageNode) return { result: Response.OBJECT_NOT_EXIST, error: "storage node not found" };
|
|
|
|
return { result: 0, storageCtid : storageNode.id, storageEnvShortName: storageEnvShortName };
|
|
}
|
|
|
|
function prepareBackups(values) {
|
|
var aResultValues = [];
|
|
values = values || [];
|
|
for (var i = 0, n = values.length; i < n; i++) {
|
|
aResultValues.push({
|
|
caption: values[i],
|
|
value: values[i]
|
|
});
|
|
}
|
|
return aResultValues;
|
|
}
|
|
|
|
if (storage_unavailable_markup === "") {
|
|
settings.fields.push({
|
|
"caption": "Backup",
|
|
"type": "list",
|
|
"tooltip": "Select the time stamp for which you want to restore the contents of the web site",
|
|
"name": "backupDir",
|
|
"required": true,
|
|
"values": backupListPrepared
|
|
})
|
|
} else {
|
|
settings.fields.push(
|
|
{"type": "displayfield", "cls": "warning", "height": 30, "hideLabel": true, "markup": storage_unavailable_markup}
|
|
)
|
|
}
|
|
|
|
return settings; |