Skip to content

Commit

Permalink
Missing USB Firmware Update Policy Info (#73)
Browse files Browse the repository at this point in the history
Updated the USB Firmware Update Policy enabled/disabled Info
Available only for service login
Fixed Incorrect toast notifications in policy page that existed

Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
  • Loading branch information
Nikhil-Ashoka authored and GitHub Enterprise committed Mar 11, 2022
1 parent 2f80b0b commit bd5c038
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 35 deletions.
18 changes: 6 additions & 12 deletions src/locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -930,23 +930,17 @@
"ipmiDescription": "Allow remote management of the platform via IPMI. Tools such as ipmitool require this setting to be enabled.",
"networkServices": "Network services",
"rtad": "RTAD",
"rtadDescription": "This option enables or disables the Remote Trusted Attestation Daemon for host firmware",
"rtadDescription": "This option enables or disables the Remote Trusted Attestation Daemon for host firmware.",
"ssh": "BMC shell (via SSH)",
"sshDescription": "Allow access to shell sessions via SSH, through port 22 on the BMC.",
"usbFirmwareUpdatePolicy": "USB Firmware Update Policy",
"usbFirmwareUpdatePolicyDescription": "Enabling the USB Firmware Update Policy will enable the functionality to allow firmware updates through a USB key.",
"toast": {
"errorRtadDisabled": "Error disabling RTAD security setting.",
"errorRtadEnabled": "Error enabling RTAD security setting.",
"errorVtpmDisabled": "Error disabling VitualTPM security setting.",
"errorVtpmEnabled": "Error enabling VitualTPM security setting.",
"successRtadDisabled": "Successfully disabled RTAD security setting.",
"successRtadEnabled": "Successfully enabled RTAD security setting.",
"successVtpmDisabled": "Successfully disabled VitualTPM security setting.",
"successVtpmEnabled": "Successfully enabled VitualTPM security setting."
"errorNetworkPolicyUpdate": "Error updating %{policy} policy.",
"successNetworkPolicyUpdate": "Successfully updated %{policy} policy."
},
"vtpm": "VirtualTPM",
"vtpmDescription": "Enabling vTPM makes a TPM available to the guest operating system.",
"errorNetworkPolicyUpdate": "Error updating %{policy} policy.",
"successNetworkPolicyUpdate": "Successfully updated %{policy} policy."
"vtpmDescription": "Enabling vTPM makes a TPM available to the guest operating system."
},
"pagePower": {
"delayTime": "Delay time (in seconds)",
Expand Down
87 changes: 65 additions & 22 deletions src/store/modules/SecurityAndAccess/PoliciesStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@ const PoliciesStore = {
rtadEnabled: 'Disabled',
vtpmEnabled: 'Disabled',
tpmPolicyEnabled: false,
usbFirmwareUpdatePolicyEnabled: false,
},
getters: {
sshProtocolEnabled: (state) => state.sshProtocolEnabled,
ipmiProtocolEnabled: (state) => state.ipmiProtocolEnabled,
rtadEnabled: (state) => state.rtadEnabled,
vtpmEnabled: (state) => state.vtpmEnabled,
tpmPolicyEnabled: (state) => state.tpmPolicyEnabled,
usbFirmwareUpdatePolicyEnabled: (state) =>
state.usbFirmwareUpdatePolicyEnabled,
},
mutations: {
setSshProtocolEnabled: (state, sshProtocolEnabled) =>
Expand All @@ -26,6 +29,11 @@ const PoliciesStore = {
setVtpmEnabled: (state, vtpmEnabled) => (state.vtpmEnabled = vtpmEnabled),
setTpmPolicyEnabled: (state, tpmPolicyEnabled) =>
(state.tpmPolicyEnabled = tpmPolicyEnabled),
setUsbFirmwareUpdatePolicyEnabled: (
state,
usbFirmwareUpdatePolicyEnabled
) =>
(state.usbFirmwareUpdatePolicyEnabled = usbFirmwareUpdatePolicyEnabled),
},
actions: {
async getNetworkProtocolStatus({ commit }) {
Expand All @@ -39,6 +47,17 @@ const PoliciesStore = {
})
.catch((error) => console.log(error));
},
async getUsbFirmwareUpdatePolicyEnabled({ commit }) {
return await api
.get('/redfish/v1/Managers/bmc')
.then((response) => {
commit(
'setUsbFirmwareUpdatePolicyEnabled',
response.data.Oem.IBM.USBCodeUpdateEnabled
);
})
.catch((error) => console.log(error));
},
async getBiosStatus({ commit }) {
return await api
.get('/redfish/v1/Systems/system/Bios')
Expand Down Expand Up @@ -83,6 +102,32 @@ const PoliciesStore = {
);
});
},
async saveUsbFirmwareUpdatePolicyEnabled({ commit }, updatedUsbCode) {
commit('setUsbFirmwareUpdatePolicyEnabled', updatedUsbCode);
const oem = {
Oem: {
IBM: {
USBCodeUpdateEnabled: updatedUsbCode,
},
},
};
return await api
.patch('/redfish/v1/Managers/bmc', oem)
.then(() => {
return i18n.t('pagePolicies.toast.successNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.usbFirmwareUpdatePolicy'),
});
})
.catch((error) => {
console.log(error);
commit('setUsbFirmwareUpdatePolicyEnabled', !updatedUsbCode);
throw new Error(
i18n.t('pagePolicies.toast.errorNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.usbFirmwareUpdatePolicy'),
})
);
});
},
async saveIpmiProtocolState({ commit }, protocolEnabled) {
commit('setIpmiProtocolEnabled', protocolEnabled);
const ipmi = {
Expand All @@ -99,7 +144,7 @@ const PoliciesStore = {
})
.catch((error) => {
console.log(error);
commit('setTpmPolicyEnabled', !protocolEnabled);
commit('setIpmiProtocolEnabled', !protocolEnabled);
throw new Error(
i18n.t('pagePolicies.toast.errorNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.ipmi'),
Expand All @@ -123,7 +168,7 @@ const PoliciesStore = {
})
.catch((error) => {
console.log(error);
commit('setTpmPolicyEnabled', !protocolEnabled);
commit('setSshProtocolEnabled', !protocolEnabled);
throw new Error(
i18n.t('pagePolicies.toast.errorNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.ssh'),
Expand All @@ -140,19 +185,18 @@ const PoliciesStore = {
},
})
.then(() => {
if (updatedRtad === 'Enabled') {
return i18n.t('pagePolicies.toast.successRtadEnabled');
} else {
return i18n.t('pagePolicies.toast.successRtadDisabled');
}
return i18n.t('pagePolicies.toast.successNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.rtad'),
});
})
.catch((error) => {
console.log(error);
if (updatedRtad === 'Enabled') {
throw new Error(i18n.t('pagePolicies.toast.errorRtadEnabled'));
} else {
throw new Error(i18n.t('pagePolicies.toast.errorRtadDisabled'));
}
commit('setRtadEnabled', !updatedRtad);
throw new Error(
i18n.t('pagePolicies.toast.errorNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.rtad'),
})
);
});
},
async saveVtpmState({ commit }, updatedVtpm) {
Expand All @@ -164,19 +208,18 @@ const PoliciesStore = {
},
})
.then(() => {
if (updatedVtpm === 'Enabled') {
return i18n.t('pagePolicies.toast.successVtpmEnabled');
} else {
return i18n.t('pagePolicies.toast.successVtpmDisabled');
}
return i18n.t('pagePolicies.toast.successNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.vtpm'),
});
})
.catch((error) => {
console.log(error);
if (updatedVtpm === 'Enabled') {
throw new Error(i18n.t('pagePolicies.toast.errorVtpmEnabled'));
} else {
throw new Error(i18n.t('pagePolicies.toast.errorVtpmDisabled'));
}
commit('setVtpmEnabled', !updatedVtpm);
throw new Error(
i18n.t('pagePolicies.toast.errorNetworkPolicyUpdate', {
policy: i18n.t('pagePolicies.vtpm'),
})
);
});
},
},
Expand Down
58 changes: 57 additions & 1 deletion src/views/SecurityAndAccess/Policies/Policies.vue
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,31 @@
</b-form-checkbox>
</b-col>
</b-row>
<b-row v-if="isServiceUser" class="section-divider">
<b-col class="d-flex align-items-center justify-content-between">
<dl class="mt-3 mr-3 w-75">
<dt>{{ $t('pagePolicies.usbFirmwareUpdatePolicy') }}</dt>
<dd>
{{ $t('pagePolicies.usbFirmwareUpdatePolicyDescription') }}
</dd>
</dl>
<b-form-checkbox
id="usbFirmwareUpdatePolicySwitch"
v-model="usbFirmwareUpdatePolicyState"
data-test-id="policies-toggle-usbFirmwareUpdatePolicy"
switch
@change="changeUsbFirmwareUpdatePolicyState"
>
<span class="sr-only">
{{ $t('pagePolicies.usbFirmwareUpdatePolicy') }}
</span>
<span v-if="usbFirmwareUpdatePolicyState">
{{ $t('global.status.enabled') }}
</span>
<span v-else>{{ $t('global.status.disabled') }}</span>
</b-form-checkbox>
</b-col>
</b-row>
</page-section>
</b-col>
</b-row>
Expand Down Expand Up @@ -152,6 +177,20 @@ export default {
};
},
computed: {
usbFirmwareUpdatePolicyState: {
get() {
return this.$store.getters['policies/usbFirmwareUpdatePolicyEnabled'];
},
set(newValue) {
return newValue;
},
},
currentUser() {
return this.$store.getters['global/currentUser'];
},
isServiceUser() {
return this.$store.getters['global/isServiceUser'];
},
sshProtocolState: {
get() {
return this.$store.getters['policies/sshProtocolEnabled'];
Expand Down Expand Up @@ -206,10 +245,21 @@ export default {
Promise.all([
this.$store.dispatch('policies/getBiosStatus'),
this.$store.dispatch('policies/getNetworkProtocolStatus'),
this.$store.dispatch('policies/getUsbFirmwareUpdatePolicyEnabled'),
this.$store.dispatch('policies/getTpmPolicy'),
]).finally(() => this.endLoader());
this.$store.dispatch('userManagement/getUsers'),
this.checkForUserData(),
]).finally(() => {
this.endLoader();
});
},
methods: {
changeUsbFirmwareUpdatePolicyState(state) {
this.$store
.dispatch('policies/saveUsbFirmwareUpdatePolicyEnabled', state)
.then((message) => this.successToast(message))
.catch(({ message }) => this.errorToast(message));
},
changeIpmiProtocolState(state) {
this.$store
.dispatch('policies/saveIpmiProtocolState', state)
Expand Down Expand Up @@ -240,6 +290,12 @@ export default {
.then((message) => this.successToast(message))
.catch(({ message }) => this.errorToast(message));
},
checkForUserData() {
if (!this.currentUser) {
this.$store.dispatch('userManagement/getUsers');
this.$store.dispatch('global/getCurrentUser');
}
},
},
};
</script>

0 comments on commit bd5c038

Please sign in to comment.