feat(xo-web/self-service): add the internal networks to the networks' select (#2664)

This commit is contained in:
badrAZ 2018-03-16 16:57:44 +01:00 committed by Pierre Donias
parent 89e25c9b81
commit 80187e2789

View File

@ -19,6 +19,7 @@ import React from 'react'
import remove from 'lodash/remove' import remove from 'lodash/remove'
import renderXoItem from 'render-xo-item' import renderXoItem from 'render-xo-item'
import ResourceSetQuotas from 'resource-set-quotas' import ResourceSetQuotas from 'resource-set-quotas'
import some from 'lodash/some'
import Upgrade from 'xoa-upgrade' import Upgrade from 'xoa-upgrade'
import { Container, Row, Col } from 'grid' import { Container, Row, Col } from 'grid'
import { createGetObjectsOfType, createSelector } from 'selectors' import { createGetObjectsOfType, createSelector } from 'selectors'
@ -254,10 +255,12 @@ export class Edit extends Component {
_updateSelectedPools = (newPools, newSrs, newNetworks) => { _updateSelectedPools = (newPools, newSrs, newNetworks) => {
const predicate = object => includes(resolveIds(newPools), object.$pool) const predicate = object => includes(resolveIds(newPools), object.$pool)
const internalNetworkPredicate = network =>
predicate(network) && isEmpty(network.PIFs)
this.setState( this.setState(
{ {
nPools: newPools.length, internalNetworkPredicate,
pools: newPools, pools: newPools,
srPredicate: predicate, srPredicate: predicate,
vmTemplatePredicate: predicate, vmTemplatePredicate: predicate,
@ -272,20 +275,17 @@ export class Edit extends Component {
newSrs, newSrs,
this.props.hostsByPool this.props.hostsByPool
) )
const networkPredicate = network => { const networkPredicate = network =>
let kept = false this.state.internalNetworkPredicate(network) ||
forEach( some(
availableHosts, availableHosts,
host => !(kept = intersection(network.PIFs, host.PIFs).length > 0) host => intersection(network.PIFs, host.PIFs).length > 0
) )
return kept
}
this.setState( this.setState(
{ {
availableHosts, availableHosts,
networkPredicate, networkPredicate,
nSrs: newSrs.length,
srs: newSrs, srs: newSrs,
}, },
() => this._updateSelectedNetworks(newNetworks || this.state.networks) () => this._updateSelectedNetworks(newNetworks || this.state.networks)
@ -418,7 +418,7 @@ export class Edit extends Component {
<Col mediumSize={4}> <Col mediumSize={4}>
<SelectVmTemplate <SelectVmTemplate
autoSelectSingleOption={false} autoSelectSingleOption={false}
disabled={!state.nPools} disabled={isEmpty(state.pools)}
hasSelectAll hasSelectAll
multi multi
onChange={this.linkState('templates')} onChange={this.linkState('templates')}
@ -430,7 +430,7 @@ export class Edit extends Component {
<Col mediumSize={4}> <Col mediumSize={4}>
<SelectSr <SelectSr
autoSelectSingleOption={false} autoSelectSingleOption={false}
disabled={!state.nPools} disabled={isEmpty(state.pools)}
hasSelectAll hasSelectAll
multi multi
onChange={this._updateSelectedSrs} onChange={this._updateSelectedSrs}
@ -442,11 +442,13 @@ export class Edit extends Component {
<Col mediumSize={4}> <Col mediumSize={4}>
<SelectNetwork <SelectNetwork
autoSelectSingleOption={false} autoSelectSingleOption={false}
disabled={!state.nSrs} disabled={isEmpty(state.pools)}
hasSelectAll hasSelectAll
multi multi
onChange={this._updateSelectedNetworks} onChange={this._updateSelectedNetworks}
predicate={state.networkPredicate} predicate={
state.networkPredicate || state.internalNetworkPredicate
}
required required
value={state.networks} value={state.networks}
/> />