summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components/AppNavigation/AppNavigation.vue2
-rw-r--r--src/locales/en-US.json4
-rw-r--r--src/router/index.js8
-rw-r--r--src/store/index.js4
-rw-r--r--src/store/modules/Control/ServerLedStore.js36
-rw-r--r--src/views/Control/ServerLed/ServerLed.vue52
-rw-r--r--src/views/Control/ServerLed/index.js2
7 files changed, 106 insertions, 2 deletions
diff --git a/src/components/AppNavigation/AppNavigation.vue b/src/components/AppNavigation/AppNavigation.vue
index ef88adb4..f98db35d 100644
--- a/src/components/AppNavigation/AppNavigation.vue
+++ b/src/components/AppNavigation/AppNavigation.vue
@@ -40,7 +40,7 @@
<b-nav-item to="/control/reboot-bmc">
{{ $t('appNavigation.rebootBmc') }}
</b-nav-item>
- <b-nav-item href="javascript:void(0)">
+ <b-nav-item to="/control/server-led">
{{ $t('appNavigation.serverLed') }}
</b-nav-item>
<b-nav-item to="/control/server-power-operations">
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 5824e5fa..ff57c5d4 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -268,6 +268,10 @@
"upperCritical": "Upper critical"
}
},
+ "pageServerLed": {
+ "serverLedSubTitle": "Server indicator LED",
+ "serverLedTitle": "LED light control"
+ },
"pageServerPowerOperations": {
"currentStatus": "Current status",
"hostOsBootSettings": "Host OS boot settings",
diff --git a/src/router/index.js b/src/router/index.js
index c3d44390..44c32467 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -64,6 +64,14 @@ const routes = [
}
},
{
+ path: '/control/server-led',
+ name: 'server-led',
+ component: () => import('@/views/Control/ServerLed'),
+ meta: {
+ title: 'appPageTitle.serverLed'
+ }
+ },
+ {
path: '/control/server-power-operations',
name: 'server-power-operations',
component: () => import('@/views/Control/ServerPowerOperations'),
diff --git a/src/store/index.js b/src/store/index.js
index 364e16c0..ad55030a 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -14,6 +14,7 @@ import PowerControlStore from './modules/Control/PowerControlStore';
import NetworkSettingStore from './modules/Configuration/NetworkSettingsStore';
import EventLogStore from './modules/Health/EventLogStore';
import SensorsStore from './modules/Health/SensorsStore';
+import ServerLedStore from './modules/Control/ServerLedStore';
import WebSocketPlugin from './plugins/WebSocketPlugin';
@@ -36,7 +37,8 @@ export default new Vuex.Store({
networkSettings: NetworkSettingStore,
eventLog: EventLogStore,
sensors: SensorsStore,
- sslCertificates: SslCertificatesStore
+ sslCertificates: SslCertificatesStore,
+ serverLed: ServerLedStore
},
plugins: [WebSocketPlugin]
});
diff --git a/src/store/modules/Control/ServerLedStore.js b/src/store/modules/Control/ServerLedStore.js
new file mode 100644
index 00000000..c690d7cb
--- /dev/null
+++ b/src/store/modules/Control/ServerLedStore.js
@@ -0,0 +1,36 @@
+import api from '../../api';
+
+const ServerLedStore = {
+ namespaced: true,
+ state: {
+ indicatorValue: 'Off'
+ },
+ getters: {
+ getIndicatorValue: state => state.indicatorValue
+ },
+ mutations: {
+ setIndicatorValue(state, indicatorValue) {
+ state.indicatorValue = indicatorValue;
+ }
+ },
+ actions: {
+ getIndicatorValue: ({ commit }) => {
+ api
+ .get('/redfish/v1/Systems/system')
+ .then(response => {
+ commit('setIndicatorValue', response.data.IndicatorLED);
+ })
+ .catch(error => console.log(error));
+ },
+ saveIndicatorLedValue: ({ commit }, payload) => {
+ api
+ .patch('/redfish/v1/Systems/system', { IndicatorLED: payload })
+ .then(() => {
+ commit('setIndicatorValue', payload);
+ })
+ .catch(error => console.log(error));
+ }
+ }
+};
+
+export default ServerLedStore;
diff --git a/src/views/Control/ServerLed/ServerLed.vue b/src/views/Control/ServerLed/ServerLed.vue
new file mode 100644
index 00000000..1b1c24ab
--- /dev/null
+++ b/src/views/Control/ServerLed/ServerLed.vue
@@ -0,0 +1,52 @@
+<template>
+ <b-container fluid="xl">
+ <page-title />
+ <b-row>
+ <b-col md="12">
+ <page-section :section-title="$t('pageServerLed.serverLedTitle')">
+ <b-form-group :label="$t('pageServerLed.serverLedSubTitle')">
+ <b-form-checkbox
+ v-model="indicatorLED"
+ name="check-button"
+ value="Lit"
+ unchecked-value="Off"
+ switch
+ >
+ <span v-if="indicatorLED !== 'Off' && indicatorLED">
+ {{ $t('global.status.on') }}
+ </span>
+ <span v-else>
+ {{ $t('global.status.off') }}
+ </span>
+ </b-form-checkbox>
+ </b-form-group>
+ </page-section>
+ </b-col>
+ </b-row>
+ </b-container>
+</template>
+
+<script>
+import PageTitle from '../../../components/Global/PageTitle';
+import PageSection from '../../../components/Global/PageSection';
+
+export default {
+ name: 'ServerLed',
+ components: { PageTitle, PageSection },
+ computed: {
+ indicatorLED: {
+ get() {
+ return this.$store.getters['serverLed/getIndicatorValue'];
+ },
+ set(newValue) {
+ if (newValue) {
+ this.$store.dispatch('serverLed/saveIndicatorLedValue', newValue);
+ }
+ }
+ }
+ },
+ created() {
+ this.$store.dispatch('serverLed/getIndicatorValue');
+ }
+};
+</script>
diff --git a/src/views/Control/ServerLed/index.js b/src/views/Control/ServerLed/index.js
new file mode 100644
index 00000000..1926dae8
--- /dev/null
+++ b/src/views/Control/ServerLed/index.js
@@ -0,0 +1,2 @@
+import ServerLed from './ServerLed.vue';
+export default ServerLed;