diff --git a/conf/getapiyaml.sh b/conf/getapiyaml.sh
index efdba66c..3e9ce097 100755
--- a/conf/getapiyaml.sh
+++ b/conf/getapiyaml.sh
@@ -4,7 +4,7 @@ FILE="./api.yaml"
read -p "MCIAM USE? (y/n): " MCIAM_USE
case "$MCIAM_USE" in
- y|Y ) URL="https://raw.githubusercontent.com/MZC-CSC/mc-admin-cli/develop/conf/api.yaml";; # m-cmp/mc-admin-cli
+ y|Y ) URL="https://raw.githubusercontent.com/m-cmp/mc-admin-cli/refs/heads/main/conf/api.yaml";; # m-cmp/mc-admin-cli
n|N ) URL="https://raw.githubusercontent.com/cloud-barista/cm-mayfly/main/conf/api.yaml";; # cloud-barista/cm-mayfly
esac
diff --git a/front/assets/css/application.scss b/front/assets/css/application.scss
index 9f6c5460..893f793a 100644
--- a/front/assets/css/application.scss
+++ b/front/assets/css/application.scss
@@ -13,6 +13,9 @@
// tomselect Custom CSS
@import "./tomselect_for_tabler.scss";
+// xtermjs
+@import "~@xterm/xterm/css/xterm.css";
+
.section {
display: none;
}
diff --git a/front/assets/js/common/api/services/monitoring_api.js b/front/assets/js/common/api/services/monitoring_api.js
index 8c7ad88e..4b79e40f 100644
--- a/front/assets/js/common/api/services/monitoring_api.js
+++ b/front/assets/js/common/api/services/monitoring_api.js
@@ -345,7 +345,7 @@ export async function getMonitoringLog(nsId, mciId, targetId, keyword) {
data.request = request;
- var controller = "/api/" + "mc-observability/" + "GET_OpensearchLogs";
+ var controller = "/api/" + "mc-observability/" + "GETOpensearchLogs";
const response = await webconsolejs["common/api/http"].commonAPIPost(
controller,
data
@@ -428,7 +428,6 @@ export async function getTargetsNsMci(nsId, mciId) {
controller,
data
)
-
// target이 있다는 이야기는 agent가 설치되었다는 뜻으로 보면 되는가? maybe
var respMeasureMent = response.data.responseData;
diff --git a/front/assets/js/common/api/services/remotecmd_api.js b/front/assets/js/common/api/services/remotecmd_api.js
new file mode 100644
index 00000000..d6dcffe5
--- /dev/null
+++ b/front/assets/js/common/api/services/remotecmd_api.js
@@ -0,0 +1,173 @@
+import { Terminal } from 'xterm';
+import { FitAddon } from '@xterm/addon-fit';
+
+let terminalInstance = null;
+
+export async function initTerminal(id, nsId, mciId, vmid) {
+ console.log("Trying to connect to " + nsId + " / " + mciId);
+
+ // 기존 터미널이 존재한다면 삭제
+ if (terminalInstance) {
+ terminalInstance.dispose();
+ terminalInstance = null;
+ }
+
+ // 새 터미널 및 FitAddon 생성
+ const term = new Terminal({
+ theme: {
+ background: '#1e1e1e',
+ foreground: '#ffffff',
+ cursor: '#ffcc00'
+ },
+ cursorBlink: true
+ });
+ const fitAddon = new FitAddon();
+ term.loadAddon(fitAddon);
+
+ // 터미널을 지정된 컨테이너에 열기
+ const container = document.getElementById(id);
+ term.open(container);
+
+ terminalInstance = term;
+
+ const ipcmd = "client_ip=$(echo $SSH_CLIENT | awk '{print $1}'); echo SSH client IP is: $client_ip";
+ await processCommand(nsId, mciId, vmid, ipcmd, term, () => {
+ // console.log("done get ip")
+ });
+
+ function prompt() {
+ term.write('\r\n $ ');
+ }
+ prompt();
+
+ let userInput = '';
+
+ term.onData(async (data) => {
+ if (data === '\r') {
+ const command = userInput;
+ userInput = '';
+ term.write(`\r\n`);
+
+ await processCommand(nsId, mciId, vmid, command, term, () => {
+ prompt();
+ });
+ } else if (data === '\u007f') {
+ if (userInput.length > 0) {
+ term.write('\b \b');
+ userInput = userInput.slice(0, -1);
+ }
+ } else {
+ if (/^[a-zA-Z0-9 !@#$%^&*()_\-+=\[\]{}|;:'",.<>/?]$/.test(data)) {
+ term.write(data);
+ userInput += data;
+ }
+ }
+ });
+}
+
+async function processCommand(nsid, mciid, vmid, command, term, callback) {
+ const loadingSymbols = ['|', '/', '-', '\\'];
+ let loadingIndex = 0;
+
+ const loadingInterval = setInterval(() => {
+ term.write(`\r${loadingSymbols[loadingIndex]} Processing...`);
+ loadingIndex = (loadingIndex + 1) % loadingSymbols.length;
+ }, 250);
+
+ try {
+ // API 호출 및 결과 받기
+ const result = await postcmdmci(nsid, mciid, vmid, [command]);
+
+ clearInterval(loadingInterval); // 로딩 애니메이션 중지
+ term.write('\r \r'); // 로딩 텍스트 지우기
+
+ const response = result.results[0];
+ const stdout = response.stdout;
+ const stderr = response.stderr;
+
+ // STDOUT 출력
+ if (stdout && Object.values(stdout).some(value => value.trim() !== '')) {
+ term.write('\r\nSTDOUT:\r\n');
+ Object.values(stdout).forEach(value => {
+ const lines = value.split('\n');
+ lines.forEach(line => {
+ writeAutoWrap(term, line);
+ });
+ });
+ } else {
+ term.write('\r\nSTDOUT: (No output)\r\n');
+ }
+
+ // STDERR 출력
+ if (stderr && Object.values(stderr).some(value => value.trim() !== '')) {
+ term.write('\r\nSTDERR:\r\n');
+ Object.values(stderr).forEach(value => {
+ const lines = value.split('\n');
+ lines.forEach(line => {
+ if (line.trim() !== "") {
+ writeAutoWrap(term, line);
+ }
+ });
+ });
+ }
+
+ callback(); // 완료 콜백 호출
+
+ } catch (error) {
+ clearInterval(loadingInterval); // 에러 발생 시 로딩 애니메이션 중지
+ term.write('\r \r'); // 로딩 텍스트 지우기
+ term.write(`Error: ${error.message}\r\n`); // 에러 메시지 전달
+ callback();
+ }
+}
+
+// 자동 줄바꿈 처리 함수
+function writeAutoWrap(term, text) {
+ const cols = term.cols;
+ console.log("@@@@@@@@@@ cols", cols)
+ let currentLine = '';
+
+ for (let i = 0; i < text.length; i++) {
+ const char = text[i];
+
+ if (char === '\n') {
+ term.write(currentLine + '\r\n');
+ currentLine = '';
+ continue;
+ }
+
+ currentLine += char;
+ if (currentLine.length >= cols) {
+ term.write(currentLine + '\r\n');
+ currentLine = '';
+ }
+ }
+
+ if (currentLine) {
+ term.write(currentLine);
+ }
+}
+
+export async function postcmdmci(nsid, mciid, vmid, cmdarr) {
+ const data = {
+ pathParams: {
+ nsId: nsid,
+ mciId: mciid
+ },
+ queryParams: {
+ vmId: vmid
+ },
+ Request: {
+ command: cmdarr,
+ userName: "cb-user"
+ }
+ }
+ const controller = "/api/" + "mc-infra-manager/" + "Postcmdmci";
+ const response = await webconsolejs["common/api/http"].commonAPIPost(
+ controller,
+ data
+ );
+ console.log("lookup disk info response : ", response);
+ const responseData = response.data.responseData;
+ return responseData;
+}
diff --git a/front/assets/js/pages/operation/analytics/monitoringconfig.js b/front/assets/js/pages/operation/analytics/monitoringconfig.js
index af69bf9e..8254fe82 100644
--- a/front/assets/js/pages/operation/analytics/monitoringconfig.js
+++ b/front/assets/js/pages/operation/analytics/monitoringconfig.js
@@ -99,41 +99,40 @@ $("#workloadlist").on('change', async function () {
// 1. mci의 vm 목록 조회(install 여부를 위해 필요.)
try {
- var response = await webconsolejs["common/api/services/mci_api"].getMci(currentNsId, currentWorkloadId);
- var aMci = response.responseData
- console.log("aMci ", aMci)
- for (var vmIndex in aMci.vm) {
- var aVm = aMci.vm[vmIndex]
- aVm.workloadType = "MCI";// [MCI/PMK]
- aVm.workloadName = currentWorkloadName;
- aVm.monAgentStatus = "Not Installed";
- //console.log("aVm ", aVm)
- vmMap.set(aVm.id, aVm);
- }
- console.log(vmMap)
+ var response = await webconsolejs["common/api/services/mci_api"].getMci(currentNsId, currentWorkloadId);
+ var aMci = response.responseData
+ console.log("aMci ", aMci)
+ for (var vmIndex in aMci.vm) {
+ var aVm = aMci.vm[vmIndex]
+ aVm.workloadType = "MCI"; // [MCI/PMK]
+ aVm.workloadName = currentWorkloadName;
+
+ aVm.monAgentStatus = "Not Installed";
+ vmMap.set(aVm.id, aVm);
+ }
+ console.log(vmMap)
// 2. mci에 agent 설치된 목록 조회
var monitorTargetList = await webconsolejs["common/api/services/monitoring_api"].getTargetsNsMci(currentNsId, currentWorkloadId)
+ console.log("monitorTargetList",monitorTargetList )
console.log("monitorTargetList",monitorTargetList.data )
for (var i in monitorTargetList.data) {
- console.log("monitorTargetList.data[i].id", monitorTargetList.data[i].id)
- // [
- // {
- // "alias_name": "77+9",
- // "description": "77+9bQ==",
- // "id": "g1-1-1",
- // "mci_id": "mci01",
- // "name": "g1-1-1",
- // "ns_id": "ns01",
- // "state": "ACTIVE"
- // }
- // ]
- //var findVm = vmMap.get(monitorTargetList.data[i].id)
- var findVm = vmMap.get("vm01-1")
- console.log("findVm", findVm)
- if( findVm){
- console.log("findVm2", findVm)
- //findVm.workloadType = "MCI";
-
+ console.log("monitorTargetList.data[i].id", i, monitorTargetList.data[i].id)
+
+ // [
+ // {
+ // "alias_name": null,
+ // "description": "dm0x",
+ // "id": "vm-1",
+ // "mci_id": "mci01",
+ // "name": null,
+ // "ns_id": "ns01",
+ // "state": "ACTIVE"
+ // }
+ // ]
+
+ // FIXME : 하드코드 for demo
+ var findVm = vmMap.get(monitorTargetList.data[i].id)
+ if(findVm){
findVm.monAgentStatus = monitorTargetList.data[i].state;// [ACTIVE/INACTIVE]
vmMap.set(findVm.id, findVm);
}
@@ -141,12 +140,12 @@ $("#workloadlist").on('change', async function () {
}catch(e){
console.log(e)
}
- // 3. mci에 log 설정??
+ // 3. mci에 log 설정??
console.log("vmMap", Array.from(vmMap.values()))
+
// 4. table에 필요한 data set
monitorConfigListTable.setData(Array.from(vmMap.values()));
-
})
// getMciList 호출 성공 시
@@ -166,20 +165,13 @@ function getSelectedMonitorConfigData(servernodeId) {
console.log("return ", servernodeId)
return;
}
-
- //
- // Toggle Monitoring Config Info
- // 기본은 detailTab : monitoringconfig_info
- // var div = document.getElementById("monitoringconfig_info");//monitoring_configuration
- // console.log("monitoringconfig_info ", div)
- // webconsolejs["partials/layout/navigatePages"].toggleElement(div)
-
+ console.log("selectedServerNode.id", selectedServerNode.id)
setMonitorConfigInfoData();
}
// 클릭한 mci의 info값 세팅
-function setMonitorConfigInfoData() {
+async function setMonitorConfigInfoData() {
// var row = monitorConfigListTable.getRow(currentServernodeId);
// console.log(row)
@@ -187,20 +179,30 @@ function setMonitorConfigInfoData() {
//selectedServerNode 안에 현재 선택한 rowData가 들어있음
console.log("setMonitorConfigInfoData ", selectedServerNode)
+
+
+
+ var htmlCardIdPrefix = "#monitoringconfig_info_"
try {
- // var mciID = mciData.id;
- // var mciName = mciData.name;
- // var mciDescription = mciData.description;
- // var mciStatus = mciData.status;
- // console.log("setMciInfoData ", mciStatus)
- // var mciDispStatus = webconsolejs["common/api/services/mci_api"].getMciStatusFormatter(mciStatus);
- // var mciStatusIcon = webconsolejs["common/api/services/mci_api"].getMciStatusIconFormatter(mciDispStatus);
- // var mciProviderNames = webconsolejs["common/api/services/mci_api"].getMciInfoProviderNames(mciData); //MCIS에 사용 된 provider
- // var totalvmCount = mciData.vm.length; //mci의 vm개수
-
- // console.log("totalvmCount", totalvmCount)
-
- // $("#mci_info_text").text(" [ " + mciName + " ]")
+ const generateOnOffIndicator = (result, status) => `
+
+ ${status}
+ `;
+ const generateStatusIndicator = (result, status) => ` ${status}`;
+ console.log("selectedServerNode.label", selectedServerNode.label)
+ var response = await webconsolejs["common/api/services/monitoring_api"].getMonitoringLog(
+ selectedServerNode.label["sys.namespace"],
+ selectedServerNode.label["sys.mciId"],
+ selectedServerNode.label["sys.id"],
+ "",
+ );
+ console.log(response)
+ $(htmlCardIdPrefix+"name").text(selectedServerNode.name+" / "+selectedServerNode.id)
+ $(htmlCardIdPrefix+"desc").text(selectedServerNode.description)
+ $(htmlCardIdPrefix+"workload").text(selectedServerNode.workloadType+" / "+selectedServerNode.workloadName)
+ $(htmlCardIdPrefix+"monitor").html(generateOnOffIndicator(selectedServerNode.monAgentStatus === "ACTIVE" ? "true" : "false", selectedServerNode.monAgentStatus === "ACTIVE" ? "On" : "Off"))
+ $(htmlCardIdPrefix+"agent_status").html(generateStatusIndicator(selectedServerNode.monAgentStatus === "ACTIVE" ? "success" : "waring", selectedServerNode.monAgentStatus === "ACTIVE" ? "Running" : "Stopped"))
+ $(htmlCardIdPrefix+"collect_status").html(generateStatusIndicator(selectedServerNode.monAgentStatus === "ACTIVE" ? "success" : "waring", selectedServerNode.monAgentStatus === "ACTIVE" ? "running" : "waring"))
// $("#mci_server_info_status").empty();
// $("#mci_server_info_status").text(" [ " + mciName + " ]")
// $("#mci_server_info_count").text(" Server(" + totalvmCount + ")")
@@ -623,9 +625,8 @@ function initMonitorConfigTable() {
// 상세 정보 표시 여부
if (tempServernodeId === currentServernodeId) {
webconsolejs["partials/layout/navigatePages"].deactiveElement(document.getElementById("monitoring_configuration"))
-
- this.deselectRow();
- return
+ this.dese
+ returnlectRow();
} else {
webconsolejs["partials/layout/navigatePages"].activeElement(document.getElementById("monitoring_configuration"))
this.deselectRow();
diff --git a/front/assets/js/pages/operation/manage/mci.js b/front/assets/js/pages/operation/manage/mci.js
index cb430403..9fd81f04 100644
--- a/front/assets/js/pages/operation/manage/mci.js
+++ b/front/assets/js/pages/operation/manage/mci.js
@@ -1054,4 +1054,21 @@ document.getElementById("filter-clear").addEventListener("click", function () {
});
/////////////////////////Tabulator Filter END/////////////////////////
-////////////////////////////////////////////////////// END TABULATOR ///////////////////////////////////////////////////
\ No newline at end of file
+////////////////////////////////////////////////////// END TABULATOR ///////////////////////////////////////////////////
+
+
+
+
+
+
+/////////////////// TEST TERMINAL MODAL /////////////////////////
+
+export async function initremotecmdModal(){
+ const nsId = webconsolejs["common/api/services/workspace_api"].getCurrentProject().NsId
+ await webconsolejs["common/api/services/remotecmd_api"].initTerminal('xterm-container',nsId,currentMciId,selectedVmId) // vmStatus 별로 상태 색상 set
+ const modalElement = document.getElementById('cmdtestmodal');
+ const modalInstance = new bootstrap.Modal(modalElement);
+ modalInstance.show();
+}
+
+
diff --git a/front/assets/js/partials/layout/navigatePages.js b/front/assets/js/partials/layout/navigatePages.js
index c42fbddd..6cb2f6df 100644
--- a/front/assets/js/partials/layout/navigatePages.js
+++ b/front/assets/js/partials/layout/navigatePages.js
@@ -1,6 +1,10 @@
function showSection() {
const sections = document.querySelectorAll('.section');
+ const subSections = document.querySelectorAll('.sub_section');
+
sections.forEach(section => section.classList.remove('active'));
+ subSections.forEach(subSections => subSections.classList.remove('active'));
+
const hash = window.location.hash || '#index';
const activeSection = document.querySelector(hash);
if (activeSection) {
diff --git a/front/assets/js/partials/operation/manage/remotecmd.js b/front/assets/js/partials/operation/manage/remotecmd.js
new file mode 100644
index 00000000..e69de29b
diff --git a/front/package-lock.json b/front/package-lock.json
index 4b3ee7e5..9f31951d 100644
--- a/front/package-lock.json
+++ b/front/package-lock.json
@@ -13,6 +13,8 @@
"@melloware/coloris": "^0.19.1",
"@popperjs/core": "^2.0.0",
"@tabler/core": "^1.0.0-beta20",
+ "@xterm/addon-fit": "^0.10.0",
+ "@xterm/xterm": "^5.5.0",
"apexcharts": "^3.45.2",
"axios": "^1.6.7",
"bootstrap": "^5.0.0",
@@ -32,6 +34,7 @@
"tabulator-tables": "^5.6.1",
"tinymce": "^6.8.3",
"tom-select": "^2.3.1",
+ "xterm-addon-fit": "^0.8.0",
"yarn": "^1.22.22"
},
"devDependencies": {
@@ -2204,6 +2207,21 @@
}
}
},
+ "node_modules/@xterm/addon-fit": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz",
+ "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@xterm/xterm": "^5.0.0"
+ }
+ },
+ "node_modules/@xterm/xterm": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz",
+ "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==",
+ "license": "MIT"
+ },
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"dev": true,
@@ -6194,6 +6212,24 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/xterm": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz",
+ "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==",
+ "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/xterm-addon-fit": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz",
+ "integrity": "sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw==",
+ "deprecated": "This package is now deprecated. Move to @xterm/addon-fit instead.",
+ "license": "MIT",
+ "peerDependencies": {
+ "xterm": "^5.0.0"
+ }
+ },
"node_modules/yallist": {
"version": "4.0.0",
"dev": true,
diff --git a/front/package.json b/front/package.json
index 81963fac..9079869c 100644
--- a/front/package.json
+++ b/front/package.json
@@ -13,6 +13,8 @@
"@melloware/coloris": "^0.19.1",
"@popperjs/core": "^2.0.0",
"@tabler/core": "^1.0.0-beta20",
+ "@xterm/addon-fit": "^0.10.0",
+ "@xterm/xterm": "^5.5.0",
"apexcharts": "^3.45.2",
"axios": "^1.6.7",
"bootstrap": "^5.0.0",
@@ -32,6 +34,7 @@
"tabulator-tables": "^5.6.1",
"tinymce": "^6.8.3",
"tom-select": "^2.3.1",
+ "xterm-addon-fit": "^0.8.0",
"yarn": "^1.22.22"
},
"devDependencies": {
diff --git a/front/templates/pages/operations/manage/workloads/mciworkloads.html b/front/templates/pages/operations/manage/workloads/mciworkloads.html
index 5ac3f34a..37e24be4 100644
--- a/front/templates/pages/operations/manage/workloads/mciworkloads.html
+++ b/front/templates/pages/operations/manage/workloads/mciworkloads.html
@@ -754,6 +754,10 @@
Steps
+
+<%= javascriptTag("common/api/services/remotecmd_api.js") %>
+
+
<%= partial("partials/operation/manage/mcicreate.html") %>
@@ -770,3 +774,6 @@ Steps
<%= javascriptTag("pages/operation/manage/mci.js") %>
<%= javascriptTag("common/api/services/mci_api.js") %>
<%= javascriptTag("common/api/services/vmimage_api.js") %>
+
+
+
diff --git a/front/templates/partials/layout/_pageheader.html b/front/templates/partials/layout/_pageheader.html
index c0f79085..d3558fba 100644
--- a/front/templates/partials/layout/_pageheader.html
+++ b/front/templates/partials/layout/_pageheader.html
@@ -7,4 +7,7 @@
+
+
+
\ No newline at end of file
diff --git a/front/templates/partials/operation/dashboard/_mci_dashboard.html b/front/templates/partials/operation/dashboard/_mci_dashboard.html
index b41b70e7..88175ff8 100644
--- a/front/templates/partials/operation/dashboard/_mci_dashboard.html
+++ b/front/templates/partials/operation/dashboard/_mci_dashboard.html
@@ -334,4 +334,7 @@ MCI / server
<%= javascriptTag("partials/operation/dashboard/mci_dashboard.js") %>
<%= javascriptTag("common/api/services/mci_api.js") %>
+
+
+
diff --git a/front/templates/partials/operation/manage/_mci_status_summary.html b/front/templates/partials/operation/manage/_mci_status_summary.html
index 6fca7e63..606e9041 100644
--- a/front/templates/partials/operation/manage/_mci_status_summary.html
+++ b/front/templates/partials/operation/manage/_mci_status_summary.html
@@ -23,7 +23,7 @@ 0
0
- Running
+ Running
@@ -35,7 +35,7 @@
style="display: flex; flex-direction: column; align-items: center"
>
0
- Stopped
+ Stopped
@@ -49,7 +49,7 @@
0
- Terminated
+ Terminated
diff --git a/front/templates/partials/operation/manage/_server_status_summary.html b/front/templates/partials/operation/manage/_server_status_summary.html
index 882aea81..802baee1 100644
--- a/front/templates/partials/operation/manage/_server_status_summary.html
+++ b/front/templates/partials/operation/manage/_server_status_summary.html
@@ -21,7 +21,7 @@ 0
style="border: 0px; display: flex; flex-direction: column"
>
0
- Running
+ Running
@@ -33,7 +33,7 @@ 0
style="display: flex; flex-direction: column; align-items: center"
>
0
- Stopped
+ Stopped
@@ -47,7 +47,7 @@ 0
0
- Terminated
+ Terminated
diff --git a/front/templates/partials/operation/manage/_serverinfo.html b/front/templates/partials/operation/manage/_serverinfo.html
index 515ff516..f42a361a 100644
--- a/front/templates/partials/operation/manage/_serverinfo.html
+++ b/front/templates/partials/operation/manage/_serverinfo.html
@@ -4,7 +4,21 @@
Server Info
-
@@ -172,3 +187,22 @@
Zone
+
+
+
+<%= javascriptTag("common/api/services/remotecmd_api.js") %>
diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html
index 3bbcf29c..de6ae0dc 100644
--- a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html
+++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html
@@ -1,97 +1,89 @@
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
Workload(type/name)
+
+
+
-
+
-
+
-
-
-
Collect datetime
-
-
-
+
-
-
-
Monitor Storage
-
-
-
+
+
+
Collect datetime
+
+
+
-
-
-
Monitor Metrics
-
-
-
+
+
+
Monitor
+
+
+ Monitor Storages
+
+
-
-
-
+
+
+
Monitor Metrics
+
+
+ Monitor Metrics
-
-
-
-
\ No newline at end of file
+
+
+
Log
+
+
+ Monitor Log/Traces
+
+
+
+
+
+
\ No newline at end of file
diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html
index f6ceccef..662e5675 100644
--- a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html
+++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html
@@ -1 +1 @@
-metric
\ No newline at end of file
+metric aaaa
\ No newline at end of file
diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtab_monitorStorages.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtab_monitorStorages.html
new file mode 100644
index 00000000..2f77c492
--- /dev/null
+++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtab_monitorStorages.html
@@ -0,0 +1 @@
+_monitoringconfigtab_monitorStorages
\ No newline at end of file
diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html
index f2b33d6d..feabfaa8 100644
--- a/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html
+++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html
@@ -6,13 +6,16 @@
@@ -29,6 +32,10 @@
<%= partial("partials/operations/analytics/monitorings/monitoringconfig_log.html") %>
+
+
+ <%= partial("partials/operations/analytics/monitorings/monitoringconfig_log.html") %>
+
diff --git a/front/yarn.lock b/front/yarn.lock
index 3414fdb6..8c62479d 100644
--- a/front/yarn.lock
+++ b/front/yarn.lock
@@ -43,20 +43,20 @@ __metadata:
linkType: hard
"@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0":
- version: 7.26.0
- resolution: "@babel/code-frame@npm:7.26.0"
+ version: 7.26.2
+ resolution: "@babel/code-frame@npm:7.26.2"
dependencies:
"@babel/helper-validator-identifier": "npm:^7.25.9"
js-tokens: "npm:^4.0.0"
picocolors: "npm:^1.0.0"
- checksum: 10c0/46f7e367714be736b52ea3c01b24f47e2102e210fb83021d1c8237d8fc511b9538909e16e2fcdbb5cb6173e0794e28624309a59014e52fcfb7bde908f5284388
+ checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8
languageName: node
linkType: hard
"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0":
- version: 7.26.0
- resolution: "@babel/compat-data@npm:7.26.0"
- checksum: 10c0/6325c9151a3c9b0a3a807e854a26255ef66d989bff331475a935af9bb18f160e0fffe6aed550e4e96b63f91efcd874bfbaab2a1f4a2f8d25645d712a0de590fb
+ version: 7.26.2
+ resolution: "@babel/compat-data@npm:7.26.2"
+ checksum: 10c0/c9b5f3724828d17f728a778f9d66c19b55c018d0d76de6d731178cca64f182c22b71400a73bf2b65dcc4fcfe52b630088a94d5902911b54206aa90e3ffe07d12
languageName: node
linkType: hard
@@ -84,15 +84,15 @@ __metadata:
linkType: hard
"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0":
- version: 7.26.0
- resolution: "@babel/generator@npm:7.26.0"
+ version: 7.26.2
+ resolution: "@babel/generator@npm:7.26.2"
dependencies:
- "@babel/parser": "npm:^7.26.0"
+ "@babel/parser": "npm:^7.26.2"
"@babel/types": "npm:^7.26.0"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^3.0.2"
- checksum: 10c0/b6bb9185f19a97eaf58e04a6d39a13237076678e7ed16b6321dea914535d4bf6a8d7727c9dcb65539845aa0096b326eb67be4bab764bd74bcfd848e2eda68609
+ checksum: 10c0/167ebce8977142f5012fad6bd91da51ac52bcd752f2261a54b7ab605d928aebe57e21636cdd2a9c7757e552652c68d9fcb5d40b06fcb66e02d9ee7526e118a5c
languageName: node
linkType: hard
@@ -310,14 +310,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0":
- version: 7.26.1
- resolution: "@babel/parser@npm:7.26.1"
+"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2":
+ version: 7.26.2
+ resolution: "@babel/parser@npm:7.26.2"
dependencies:
"@babel/types": "npm:^7.26.0"
bin:
parser: ./bin/babel-parser.js
- checksum: 10c0/dc7d4e6b7eb667fa0784e7e2c3f6f92ca12ad72242f6d4311995310dae55093f02acdb595b69b0dbbf04cb61ad87156ac03186ff32eacfa35149c655bc22c14b
+ checksum: 10c0/751a743087b3a9172a7599f1421830d44c38f065ef781588d2bfb1c98f9b461719a226feb13c868d7a284783eee120c88ea522593118f2668f46ebfb1105c4d7
languageName: node
linkType: hard
@@ -1335,106 +1335,114 @@ __metadata:
languageName: node
linkType: hard
-"@parcel/watcher-android-arm64@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-android-arm64@npm:2.4.1"
+"@parcel/watcher-android-arm64@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-android-arm64@npm:2.5.0"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
-"@parcel/watcher-darwin-arm64@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1"
+"@parcel/watcher-darwin-arm64@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-darwin-arm64@npm:2.5.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@parcel/watcher-darwin-x64@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-darwin-x64@npm:2.4.1"
+"@parcel/watcher-darwin-x64@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-darwin-x64@npm:2.5.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@parcel/watcher-freebsd-x64@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1"
+"@parcel/watcher-freebsd-x64@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-freebsd-x64@npm:2.5.0"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@parcel/watcher-linux-arm-glibc@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1"
+"@parcel/watcher-linux-arm-glibc@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-linux-arm-glibc@npm:2.5.0"
conditions: os=linux & cpu=arm & libc=glibc
languageName: node
linkType: hard
-"@parcel/watcher-linux-arm64-glibc@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1"
+"@parcel/watcher-linux-arm-musl@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-linux-arm-musl@npm:2.5.0"
+ conditions: os=linux & cpu=arm & libc=musl
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-linux-arm64-glibc@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.5.0"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@parcel/watcher-linux-arm64-musl@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1"
+"@parcel/watcher-linux-arm64-musl@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-linux-arm64-musl@npm:2.5.0"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@parcel/watcher-linux-x64-glibc@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1"
+"@parcel/watcher-linux-x64-glibc@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-linux-x64-glibc@npm:2.5.0"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@parcel/watcher-linux-x64-musl@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1"
+"@parcel/watcher-linux-x64-musl@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-linux-x64-musl@npm:2.5.0"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@parcel/watcher-win32-arm64@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-win32-arm64@npm:2.4.1"
+"@parcel/watcher-win32-arm64@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-win32-arm64@npm:2.5.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@parcel/watcher-win32-ia32@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-win32-ia32@npm:2.4.1"
+"@parcel/watcher-win32-ia32@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-win32-ia32@npm:2.5.0"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@parcel/watcher-win32-x64@npm:2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher-win32-x64@npm:2.4.1"
+"@parcel/watcher-win32-x64@npm:2.5.0":
+ version: 2.5.0
+ resolution: "@parcel/watcher-win32-x64@npm:2.5.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@parcel/watcher@npm:^2.4.1":
- version: 2.4.1
- resolution: "@parcel/watcher@npm:2.4.1"
- dependencies:
- "@parcel/watcher-android-arm64": "npm:2.4.1"
- "@parcel/watcher-darwin-arm64": "npm:2.4.1"
- "@parcel/watcher-darwin-x64": "npm:2.4.1"
- "@parcel/watcher-freebsd-x64": "npm:2.4.1"
- "@parcel/watcher-linux-arm-glibc": "npm:2.4.1"
- "@parcel/watcher-linux-arm64-glibc": "npm:2.4.1"
- "@parcel/watcher-linux-arm64-musl": "npm:2.4.1"
- "@parcel/watcher-linux-x64-glibc": "npm:2.4.1"
- "@parcel/watcher-linux-x64-musl": "npm:2.4.1"
- "@parcel/watcher-win32-arm64": "npm:2.4.1"
- "@parcel/watcher-win32-ia32": "npm:2.4.1"
- "@parcel/watcher-win32-x64": "npm:2.4.1"
+ version: 2.5.0
+ resolution: "@parcel/watcher@npm:2.5.0"
+ dependencies:
+ "@parcel/watcher-android-arm64": "npm:2.5.0"
+ "@parcel/watcher-darwin-arm64": "npm:2.5.0"
+ "@parcel/watcher-darwin-x64": "npm:2.5.0"
+ "@parcel/watcher-freebsd-x64": "npm:2.5.0"
+ "@parcel/watcher-linux-arm-glibc": "npm:2.5.0"
+ "@parcel/watcher-linux-arm-musl": "npm:2.5.0"
+ "@parcel/watcher-linux-arm64-glibc": "npm:2.5.0"
+ "@parcel/watcher-linux-arm64-musl": "npm:2.5.0"
+ "@parcel/watcher-linux-x64-glibc": "npm:2.5.0"
+ "@parcel/watcher-linux-x64-musl": "npm:2.5.0"
+ "@parcel/watcher-win32-arm64": "npm:2.5.0"
+ "@parcel/watcher-win32-ia32": "npm:2.5.0"
+ "@parcel/watcher-win32-x64": "npm:2.5.0"
detect-libc: "npm:^1.0.3"
is-glob: "npm:^4.0.3"
micromatch: "npm:^4.0.5"
@@ -1451,6 +1459,8 @@ __metadata:
optional: true
"@parcel/watcher-linux-arm-glibc":
optional: true
+ "@parcel/watcher-linux-arm-musl":
+ optional: true
"@parcel/watcher-linux-arm64-glibc":
optional: true
"@parcel/watcher-linux-arm64-musl":
@@ -1465,7 +1475,7 @@ __metadata:
optional: true
"@parcel/watcher-win32-x64":
optional: true
- checksum: 10c0/33b7112094b9eb46c234d824953967435b628d3d93a0553255e9910829b84cab3da870153c3a870c31db186dc58f3b2db81382fcaee3451438aeec4d786a6211
+ checksum: 10c0/9bad727d8b11e5d150ec47459254544c583adaa47d047b8ef65e1c74aede1a0767dc7fc6b8997649dae07318d6ef39caba6a1c405d306398d5bcd47074ec5d29
languageName: node
linkType: hard
@@ -1603,11 +1613,11 @@ __metadata:
linkType: hard
"@types/node@npm:*":
- version: 22.8.1
- resolution: "@types/node@npm:22.8.1"
+ version: 22.9.0
+ resolution: "@types/node@npm:22.9.0"
dependencies:
undici-types: "npm:~6.19.8"
- checksum: 10c0/83550fdf72a7db5b55eceac3f4fb038844eaee20202bdd2297a8248370cfa08317bda1605b781a8043eda4f173b75e73632e652fc85509eb14dfef78fa17337f
+ checksum: 10c0/3f46cbe0a49bab4ba30494025e4c8a6e699b98ac922857aa1f0209ce11a1313ee46e6808b8f13fe5b8b960a9d7796b77c8d542ad4e9810e85ef897d5593b5d51
languageName: node
linkType: hard
@@ -1795,6 +1805,22 @@ __metadata:
languageName: node
linkType: hard
+"@xterm/addon-fit@npm:^0.10.0":
+ version: 0.10.0
+ resolution: "@xterm/addon-fit@npm:0.10.0"
+ peerDependencies:
+ "@xterm/xterm": ^5.0.0
+ checksum: 10c0/76926120fc940376afef2cb68b15aec2a99fc628b6e3cc84f2bcb1682ca9b87f982b3c10ff206faf4ebc5b410467b81a7b5e83be37b4ac386586f472e4fa1c61
+ languageName: node
+ linkType: hard
+
+"@xterm/xterm@npm:^5.5.0":
+ version: 5.5.0
+ resolution: "@xterm/xterm@npm:5.5.0"
+ checksum: 10c0/358801feece58617d777b2783bec68dac1f52f736da3b0317f71a34f4e25431fb0b1920244f678b8d673f797145b4858c2a5ccb463a4a6df7c10c9093f1c9267
+ languageName: node
+ linkType: hard
+
"@xtuc/ieee754@npm:^1.2.0":
version: 1.2.0
resolution: "@xtuc/ieee754@npm:1.2.0"
@@ -2179,7 +2205,7 @@ __metadata:
languageName: node
linkType: hard
-"browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0":
+"browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.24.0, browserslist@npm:^4.24.2":
version: 4.24.2
resolution: "browserslist@npm:4.24.2"
dependencies:
@@ -2204,6 +2230,8 @@ __metadata:
"@melloware/coloris": "npm:^0.19.1"
"@popperjs/core": "npm:^2.0.0"
"@tabler/core": "npm:^1.0.0-beta20"
+ "@xterm/addon-fit": "npm:^0.10.0"
+ "@xterm/xterm": "npm:^5.5.0"
apexcharts: "npm:^3.45.2"
autoprefixer: "npm:^9.7.6"
axios: "npm:^1.6.7"
@@ -2243,6 +2271,7 @@ __metadata:
webpack-cli: "npm:^4.0.0"
webpack-livereload-plugin: "npm:^3.0.0"
webpack-manifest-plugin: "npm:^4.0.0"
+ xterm-addon-fit: "npm:^0.8.0"
yarn: "npm:^1.22.22"
languageName: unknown
linkType: soft
@@ -2386,9 +2415,9 @@ __metadata:
linkType: hard
"caniuse-lite@npm:^1.0.30001669":
- version: 1.0.30001673
- resolution: "caniuse-lite@npm:1.0.30001673"
- checksum: 10c0/0e73a2b0f06973052e563dec9990a6fd440d510fa2ff54fa50310e736abb86e96c96b43c10e609fc22f2109f98fe76428b70441baf6b1a49f69ccf50c1879f6b
+ version: 1.0.30001677
+ resolution: "caniuse-lite@npm:1.0.30001677"
+ checksum: 10c0/22b4aa738b213b5d0bc820c26ba23fa265ca90a5c59776e1a686b9ab6fff9120d0825fd920c0a601a4b65056ef40d01548405feb95c8dd6083255f50c71a0864
languageName: node
linkType: hard
@@ -2576,11 +2605,11 @@ __metadata:
linkType: hard
"core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1":
- version: 3.38.1
- resolution: "core-js-compat@npm:3.38.1"
+ version: 3.39.0
+ resolution: "core-js-compat@npm:3.39.0"
dependencies:
- browserslist: "npm:^4.23.3"
- checksum: 10c0/d8bc8a35591fc5fbf3e376d793f298ec41eb452619c7ef9de4ea59b74be06e9fda799e0dcbf9ba59880dae87e3b41fb191d744ffc988315642a1272bb9442b31
+ browserslist: "npm:^4.24.2"
+ checksum: 10c0/880579a3dab235e3b6350f1e324269c600753b48e891ea859331618d5051e68b7a95db6a03ad2f3cc7df4397318c25a5bc7740562ad39e94f56568638d09d414
languageName: node
linkType: hard
@@ -2760,9 +2789,9 @@ __metadata:
linkType: hard
"electron-to-chromium@npm:^1.5.41":
- version: 1.5.47
- resolution: "electron-to-chromium@npm:1.5.47"
- checksum: 10c0/5f8c4a9f0698695960f7bef5242d52b1043020ce50b51fb534409a768847f9bdc9672cb4a6a560eeb8f8b47a04327ae9b31b2cee376cb637b3eb04a4daeaa3b8
+ version: 1.5.52
+ resolution: "electron-to-chromium@npm:1.5.52"
+ checksum: 10c0/1c85a5710ad21758780b8e067d5f63ed00416dbe93f64bd8937dbfb4ed98cf93d80c471a30daed439cb91a00ff4942ea2628e00a69d56639cc7070e9e8ab2694
languageName: node
linkType: hard
@@ -3979,14 +4008,14 @@ __metadata:
linkType: hard
"mini-css-extract-plugin@npm:^2.0.0":
- version: 2.9.1
- resolution: "mini-css-extract-plugin@npm:2.9.1"
+ version: 2.9.2
+ resolution: "mini-css-extract-plugin@npm:2.9.2"
dependencies:
schema-utils: "npm:^4.0.0"
tapable: "npm:^2.2.1"
peerDependencies:
webpack: ^5.0.0
- checksum: 10c0/19361902ef028b9875aafa3931d99643c2d95824ba343a501c83ff61d069a430fcfc523ca796765798b564570da2199f5a28cd51b9528ddbcfdc9271c61400d0
+ checksum: 10c0/5d3218dbd7db48b572925ddac05162a7415bf81b321f1a0c07016ec643cb5720c8a836ae68d45f5de826097a3013b601706c9c5aacb7f610dc2041b271de2ce0
languageName: node
linkType: hard
@@ -4909,16 +4938,19 @@ __metadata:
linkType: hard
"sass@npm:^1.0.0":
- version: 1.80.4
- resolution: "sass@npm:1.80.4"
+ version: 1.80.6
+ resolution: "sass@npm:1.80.6"
dependencies:
"@parcel/watcher": "npm:^2.4.1"
chokidar: "npm:^4.0.0"
immutable: "npm:^4.0.0"
source-map-js: "npm:>=0.6.2 <2.0.0"
+ dependenciesMeta:
+ "@parcel/watcher":
+ optional: true
bin:
sass: sass.js
- checksum: 10c0/58ca0f2d10720cde6621ee62f4bdbb537ea2ac572c565d5f02309f8271a5e1e880ad8c163b933e52b22b3dc0550973fb5a6033a500248e6a0d89dd050c1743cf
+ checksum: 10c0/04ce40d4dcf06cf2a94a66c1cc4fd4a9eb4033fd039291acd0be9d1d4123860da568c5cbef9de8493ffbedd8acae1cd0b8346f5da21c6f7cf0ffd3477730beca
languageName: node
linkType: hard
@@ -5910,6 +5942,15 @@ __metadata:
languageName: node
linkType: hard
+"xterm-addon-fit@npm:^0.8.0":
+ version: 0.8.0
+ resolution: "xterm-addon-fit@npm:0.8.0"
+ peerDependencies:
+ xterm: ^5.0.0
+ checksum: 10c0/39f77c9ec74bcc048ad74fbc4b9d610070c0a67971837f7edf92a8d21d65189c887986713d6ab22c04e2704253022488324d27fdb2425dc8aa95a9b679703101
+ languageName: node
+ linkType: hard
+
"yallist@npm:^2.1.2":
version: 2.1.2
resolution: "yallist@npm:2.1.2"