/*
- *
+ *
* Copyright 2016 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
<div className="configure-nsd_section">
<div className="inputControls">
<TextInput label="Instance Name" type="text" pattern="^[a-zA-Z0-9_]*$" style={{textAlign:'left'}} onChange={props.updateName} value={props.name}/>
- <label>Select VIM Account
- <SelectOption options={constructCloudAccountOptions(props.cloudAccounts)} onChange={props.nsFn.updateSelectedCloudAccount} />
- </label>
{
- isOpenMano(props.selectedCloudAccount) ? this.dataCentersHTML(props.dataCenters[selectedCloudAccount.name], props.nsFn.updateSelectedDataCenter) : null
+ !isOpenMano(props.ro) ?
+ (
+ <label>Select VIM Account
+ <SelectOption options={constructCloudAccountOptions(props.cloudAccounts)} onChange={props.nsFn.updateSelectedCloudAccount} />
+ </label>
+ )
+ : null
+ }
+ {
+ isOpenMano(props.ro) ?
+ dataCentersHTML(props.dataCenters[props.ro.name],
+ props.nsFn.updateSelectedDataCenter)
+ : null
}
</div>
</div>
return (
<div className="inputControls" key={i}>
<h4 className="inputControls-title">VNFD: {v.name}</h4>
- <label>Select VIM Account
- <SelectOption options={constructCloudAccountOptions(props.cloudAccounts)} initial={true} onChange={props.vnfFn.updateSelectedCloudAccount.bind(v['member-vnf-index'])} defaultValue={defaultValue} />
- </label>
+ {
+ !isOpenMano(props.ro) ?
+ (
+ <label>Select VIM Account
+ <SelectOption options={constructCloudAccountOptions(props.cloudAccounts)} initial={true} onChange={props.vnfFn.updateSelectedCloudAccount.bind(null, v['member-vnf-index'])} defaultValue={defaultValue} />
+ </label>
+ )
+ : null
+ }
{
- isOpenMano(defaultValue) ? dataCentersHTML(dataCenters[defaultValue.account.name], props.vnfFn.updateSelectedDataCenter(v['member-vnf-index'])) : null
+ isOpenMano(props.ro) ?
+ dataCentersHTML(
+ props.dataCenters[props.ro.name],
+ props.vnfFn.updateSelectedDataCenter.bind(null, v['member-vnf-index']), true)
+ : null
}
{
(props.configAgentAccounts && props.configAgentAccounts.length > 0) ?
let isUnknown = (currentType == 'unknown') || ((currentType != 'vim-network-name') && (currentType != 'ip-profile-ref'));
return (
<div key={self.props.nsd.id + '-' + i} className="inputControls">
- <h4 className="inputControls-title">VLD: {v['short-name']}</h4>
+ <h4 className="inputControls-title">VLD: {v['short-name'] ? v['short-name'] : v['name']}</h4>
<div className="inputControls-radioGroup">
<label className="inputControls-radio" style={{display: ipProfileList ? 'flex' : 'none'}}>
<input type="radio" name={'vld-' + i } onChange={self.props.vldFn.updateType(i)} checked={!isVIM && !isUnknown} value='ip-profile-ref' />
);
}
ipProfilesHTML = (props) => {
+ let vldHasIPprofile = false;
+ props.vlds && props.vlds.map(function(v){
+ if(v.type == 'ip-profile-ref') {
+ vldHasIPprofile = true;
+ }
+ })
let ipProfileList = props.ipProfileList;
- return ipProfileList &&
+ return ipProfileList && vldHasIPprofile &&
(
<div className="configure-nsd_section">
<h3 className="launchpadCard_title">IP Profiles</h3>
{
sshKeysRef.map(function(ref, i) {
+ let keyref = JSON.stringify(ref)
return (
- <div key={i} className="inputControls inputControls-sshkeys">
+ <div key={keyref.name + '-' + i} className="inputControls inputControls-sshkeys">
<label>
<div>
<SelectOption
})}
ref="keyPairSelection"
initial={false}
- defaultValue={sshKeysList[0].name}
- onChange={self.props.updateSshKeyRef(i)}>
+ defaultValue={keyref.name || sshKeysList[0].name}
+ onChange={props.sshFn.updateKeyRef(i)}>
</SelectOption>
</div>
</label>
<label>
- <span onClick={self.props.updateSshKeyRef(i, true)} className="removeInput">
+ <span onClick={props.sshFn.updateKeyRef(i, true)} className="removeInput">
<img src={imgRemove} />
Remove
</span>
<div className="inputControls inputControls-sshkeys ">
<label style={{display: 'flex', 'flexDirection': 'row'}}>
SSH KEY PAIR
- <span onClick={self.props.updateSshKeyRef().bind(null, {target:{value: JSON.stringify(sshKeysList[0])}})} className="addInput">
+ <span onClick={props.sshFn.updateKeyRef().bind(null, {target:{value: JSON.stringify(sshKeysList[0])}})} className="addInput">
<img src={imgAdd} />
ADD
</span>
});
return CloudAccountOptions;
}
-function dataCentersHTML(state, onChange) {
+function dataCentersHTML(dataCenters, onChange, initial) {
//Build DataCenter options
//Relook at this, why is it an object?
- let dataCenters = state.dataCenters || [];
- let DataCenterOptions = {};
- if(dataCenters){
- for (let d in dataCenters) {
- DataCenterOptions[d] = dataCenters[d].map(function(dc, index) {
- return {
- label: dc.name,
- value: dc.uuid
- }
- });
+ let DataCenterOptions = [];
+ DataCenterOptions = dataCenters && dataCenters.map(function(dc, index) {
+ return {
+ label: dc.name,
+ value: dc.uuid
}
- }
- if (dataCenters.length > 0) {
+ });
+ if (dataCenters && dataCenters.length > 0) {
return (
<label>Select Data Center
- <SelectOption options={DataCenterOptions} onChange={onChange} />
+ <SelectOption initial={!!initial} options={DataCenterOptions} onChange={onChange} />
</label>
)
}
if (a.constructor.name == 'String') {
a = JSON.parse(a);
}
- if(a.hasOwnProperty('account')) {
- a = a.account;
- }
return a['account-type'] == 'openmano';
} else {
return false;