Skip to content

Commit

Permalink
feat(xo-web/storage): display SR used for the HA state files (#6384)
Browse files Browse the repository at this point in the history
Fixes #6339
  • Loading branch information
MathieuRA committed Aug 29, 2022
1 parent 276d1ce commit 4dc7575
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 2 deletions.
4 changes: 3 additions & 1 deletion CHANGELOG.unreleased.md
Expand Up @@ -7,6 +7,8 @@

> Users must be able to say: “Nice enhancement, I'm eager to test it”
- [Home/Storage] Show which SRs are used for HA state files [#6339](https://github.com/vatesfr/xen-orchestra/issues/6339) (PR [#6384](https://github.com/vatesfr/xen-orchestra/pull/6384))

### Bug fixes

> Users must be able to say: “I had this issue, happy to know it's fixed”
Expand Down Expand Up @@ -37,6 +39,6 @@
- xen-api patch
- xo-vmdk-to-vhd patch
- xo-server minor
- xo-web patch
- xo-web minor

<!--packages-end-->
1 change: 1 addition & 0 deletions packages/xo-server/src/xapi-object-to-xo.mjs
Expand Up @@ -107,6 +107,7 @@ const TRANSFORMS = {
current_operations: obj.current_operations,
default_SR: link(obj, 'default_SR'),
HA_enabled: Boolean(obj.ha_enabled),
haSrs: obj.$ha_statefiles.map(vdi => link(vdi, 'SR')),
master: link(obj, 'master'),
tags: obj.tags,
name_description: obj.name_description,
Expand Down
1 change: 1 addition & 0 deletions packages/xo-web/src/common/intl/messages.js
Expand Up @@ -1280,6 +1280,7 @@ const messages = {
protectFromDeletion: 'Protect from accidental deletion',
protectFromShutdown: 'Protect from accidental shutdown',
ha: 'HA',
srHaTooltip: 'SR used for High Availability',
nestedVirt: 'Nested virtualization',
vmAffinityHost: 'Affinity host',
vmVga: 'VGA',
Expand Down
12 changes: 11 additions & 1 deletion packages/xo-web/src/xo-app/home/sr-item.js
Expand Up @@ -18,6 +18,11 @@ import styles from './index.css'

@connectStore({
container: createGetObject((_, props) => props.item.$container),
isHa: createSelector(
(_, props) => props.item,
createGetObject((_, props) => props.item.$poolId),
(sr, pool) => pool.haSrs.includes(sr.id)
),
isDefaultSr: createSelector(
createGetObjectsOfType('pool').find((_, props) => pool => props.item.$pool === pool.id),
(_, props) => props.item,
Expand Down Expand Up @@ -97,7 +102,7 @@ export default class SrItem extends Component {
}

render() {
const { container, expandAll, isDefaultSr, isShared, item: sr, selected } = this.props
const { container, expandAll, isDefaultSr, isHa, isShared, item: sr, selected } = this.props

return (
<div className={styles.item}>
Expand All @@ -113,6 +118,11 @@ export default class SrItem extends Component {
<Text value={sr.name_label} onChange={this._setNameLabel} useLongClick />
</Ellipsis>
{isDefaultSr && <span className='tag tag-pill tag-info ml-1'>{_('defaultSr')}</span>}
{isHa && (
<Tooltip content={_('srHaTooltip')}>
<span className='tag tag-pill tag-info ml-1'>{_('ha')}</span>
</Tooltip>
)}
{sr.inMaintenanceMode && <span className='tag tag-pill tag-warning ml-1'>{_('maintenanceMode')}</span>}
</EllipsisContainer>
</Col>
Expand Down

0 comments on commit 4dc7575

Please sign in to comment.