summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitalii Lysak <v.lysak@dunice.net>2022-08-17 09:37:28 +0300
committerVitalii Lysak <v.lysak@dunice.net>2022-08-17 09:37:28 +0300
commitabfcb75c06375d3159a718334bca563feafcc466 (patch)
treebe33a4fcf1fedca28bf9dfbfa788a98fcea8f1cd
parenteabebb2402a1282b447c4aa64a1ed158a05bcf45 (diff)
downloadwebui-vue-abfcb75c06375d3159a718334bca563feafcc466.tar.xz
SILABMC-256: add fields for processors
-rw-r--r--src/locales/en-US.json3
-rw-r--r--src/locales/ru-RU.json3
-rw-r--r--src/store/modules/HardwareStatus/ProcessorStore.js34
-rw-r--r--src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue4
-rw-r--r--src/views/_sila/Processors/Dynamic/CpuTemp.vue84
5 files changed, 103 insertions, 25 deletions
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 2907982b..87892373 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -895,6 +895,9 @@
"warning": "Warning",
"shutdown": "Shutdown"
},
+ "toast": {
+ "errorLimitUpdate": "Limit update error"
+ },
"table": {
"temperature": {
"name": "Name",
diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json
index 46d75e83..ce293d8f 100644
--- a/src/locales/ru-RU.json
+++ b/src/locales/ru-RU.json
@@ -895,6 +895,9 @@
"warning": "Значение предупреждения",
"shutdown": "Значение отказа"
},
+ "toast": {
+ "errorLimitUpdate": "Ошибка обновления предела"
+ },
"table": {
"temperature": {
"name": "Имя модуля",
diff --git a/src/store/modules/HardwareStatus/ProcessorStore.js b/src/store/modules/HardwareStatus/ProcessorStore.js
index 68b29ab6..9a09dff4 100644
--- a/src/store/modules/HardwareStatus/ProcessorStore.js
+++ b/src/store/modules/HardwareStatus/ProcessorStore.js
@@ -8,12 +8,14 @@ const ProcessorStore = {
cpuPower: [],
cpuTempLastHour: [],
cpuPowerLastHour: [],
+ limitsTemp: [],
},
getters: {
cpuTemp: (state) => state.cpuTemp,
cpuPower: (state) => state.cpuPower,
cpuTempLastHour: (state) => state.cpuTempLastHour,
cpuPowerLastHour: (state) => state.cpuPowerLastHour,
+ limitsTemp: (state) => state.limitsTemp,
},
mutations: {
setProcessorsInfo: (state, data) => {
@@ -78,8 +80,40 @@ const ProcessorStore = {
setCpuPowerDynamicLastHour: (state, data) => {
state.cpuPowerLastHour = data;
},
+
+ setLimitsTemp: (state, data) => {
+ state.limitsTemp = data;
+ },
},
actions: {
+ async patchLimitsTemp({ dispatch }, { warning, groups }) {
+ return Promise.all(
+ groups.map(
+ async (group) =>
+ await api.patch('/redfish/v1/Chassis/SILA_Baseboard/Thermal', {
+ Temperatures: [
+ {
+ MemberId: group,
+ UpperThresholdNonCritical: warning,
+ },
+ ],
+ })
+ )
+ )
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageProcessor.toast.errorLimitUpdate'));
+ })
+ .finally(() => dispatch('getLimitsTemp'));
+ },
+ async getLimitsTemp({ commit }) {
+ return await api
+ .get('/redfish/v1/Chassis/SILA_Baseboard/Thermal')
+ .then(({ data: { Temperatures = [] } }) => {
+ commit('setLimitsTemp', Temperatures);
+ })
+ .catch((error) => console.log(error));
+ },
async getCpuPowerDynamic({ commit }, { lastHour }) {
let url = null;
if (lastHour) {
diff --git a/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue b/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue
index 7a3a392d..018e19a1 100644
--- a/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue
+++ b/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue
@@ -8,7 +8,7 @@
<img src="@/assets/images/_sila/collapsed/fan.svg" />
</template>
<page-section>
- <b-row class="align-items-end limit-container">
+ <!-- <b-row class="align-items-end limit-container">
<b-col xs="12" md="6" xl="3" class="pt-4">
<b-form-group :label="$t('pageFans.labels.warning')">
<b-form-input
@@ -35,7 +35,7 @@
{{ $t('global.action.save') }}
</b-button>
</b-col>
- </b-row>
+ </b-row>-->
<chart
type="fans"
:colors="colors"
diff --git a/src/views/_sila/Processors/Dynamic/CpuTemp.vue b/src/views/_sila/Processors/Dynamic/CpuTemp.vue
index 60813f9b..e3185aaa 100644
--- a/src/views/_sila/Processors/Dynamic/CpuTemp.vue
+++ b/src/views/_sila/Processors/Dynamic/CpuTemp.vue
@@ -8,43 +8,42 @@
<img src="@/assets/images/_sila/collapsed/temperature.svg" />
</template>
<page-section>
- <!-- <b-row class="align-items-end limit-container">
+ <b-row class="align-items-end limit-container">
<b-col xs="12" sm="6" xl="3" class="pt-4">
- <b-form-group :label="$t('pageProcessors.labels.notNormal')">
+ <b-form-group :label="$t('pageProcessors.labels.warning')">
<b-form-input
- v-model="notNormal"
+ v-model.number="warning"
type="number"
:min="0"
:max="100"
- ></b-form-input>
- </b-form-group>
- </b-col>
- <b-col xs="12" sm="6" xl="3" class="pt-4">
- <b-form-group :label="$t('pageProcessors.labels.critical')">
- <b-form-input v-model="critical" type="number" :min="0" :max="100">
+ >
</b-form-input>
</b-form-group>
</b-col>
<b-col xs="12" sm="6" xl="3" class="pt-4">
- <b-form-group :label="$t('pageProcessors.labels.warning')">
- <b-form-input v-model="warning" type="number" :min="0" :max="100">
+ <b-form-group :label="$t('pageProcessors.labels.critical')">
+ <b-form-input
+ v-model.number="critical"
+ type="number"
+ :min="0"
+ :max="100"
+ >
</b-form-input>
</b-form-group>
</b-col>
<b-col xs="12" sm="6" xl="3" class="pt-4">
- <b-button variant="primary" style="height: 35px">
+ <b-button variant="primary" style="height: 35px" @click="saveLimit">
{{ $t('global.action.save') }}
</b-button>
</b-col>
- </b-row> -->
+ </b-row>
<chart
type="processors"
:time-scale="timeScale"
:data="filteredSensors"
:colors="colors"
- :warning="+warning"
- :not-normal="+notNormal"
- :critical="+critical"
+ :warning="warningLimit"
+ :critical="criticalLimit"
></chart>
<b-table
responsive="md"
@@ -90,13 +89,14 @@ import PageSection from '@/components/Global/PageSection';
import DataFormatterMixin from '@/components/_sila/Mixins/DataFormatterMixin';
import LoadingBarMixin from '@/components/_sila/Mixins/LoadingBarMixin';
import TableFilterMixin from '@/components/_sila/Mixins/TableFilterMixin';
+import BVToastMixin from '@/components/_sila/Mixins/BVToastMixin';
import Collapse from '@/components/_sila/Global/Collapse';
-import { getItems } from '@/utilities/_sila/metricProperties';
+import { getGroups, getItems } from '@/utilities/_sila/metricProperties';
export default {
components: { PageSection, Chart, Collapse },
- mixins: [DataFormatterMixin, LoadingBarMixin, TableFilterMixin],
+ mixins: [DataFormatterMixin, LoadingBarMixin, TableFilterMixin, BVToastMixin],
props: {
timeScale: {
type: String,
@@ -105,9 +105,8 @@ export default {
},
data() {
return {
- warning: 72,
- notNormal: 44,
- critical: 55,
+ warning: null,
+ critical: null,
isBusy: true,
fields: [
{
@@ -144,10 +143,35 @@ export default {
},
computed: {
+ groups() {
+ return getGroups(this.filteredSensors);
+ },
+
items() {
return getItems(this.filteredSensors);
},
+ limits() {
+ return this.$store.getters['processors/limitsTemp'];
+ },
+
+ warningLimit() {
+ return this.limits.find((limit) => {
+ return (
+ limit?.UpperThresholdNonCritical &&
+ this.groups.includes(limit.MemberId)
+ );
+ })?.UpperThresholdNonCritical;
+ },
+
+ criticalLimit() {
+ return this.limits.find((limit) => {
+ return (
+ limit?.UpperThresholdCritical && this.groups.includes(limit.MemberId)
+ );
+ })?.UpperThresholdCritical;
+ },
+
allSensors() {
return this.timeScale === 'hour'
? this.$store.getters['processors/cpuTempLastHour']
@@ -176,6 +200,16 @@ export default {
this.loadData();
},
methods: {
+ saveLimit() {
+ this.startLoader();
+ this.$store
+ .dispatch('processors/patchLimitsTemp', {
+ warning: this.warning,
+ groups: this.groups,
+ })
+ .catch(({ message }) => this.errorToast(message))
+ .finally(() => this.endLoader());
+ },
onOpened(state) {
if (state) {
this.loadData();
@@ -192,8 +226,12 @@ export default {
this.$store
.dispatch('processors/getCpuTempDynamic', payload)
.finally(() => {
- this.endLoader();
- this.isBusy = false;
+ this.$store.dispatch('processors/getLimitsTemp').finally(() => {
+ this.warning = this.warningLimit;
+ this.critical = this.criticalLimit;
+ this.endLoader();
+ this.isBusy = false;
+ });
});
},
},