isOpenMano(props.ro) ?
dataCentersHTML(
props.dataCenters[props.ro.name],
- props.vnfFn.updateSelectedDataCenter.bind(null, v['member-vnf-index']))
+ props.vnfFn.updateSelectedDataCenter.bind(null, v['member-vnf-index']), true)
: null
}
{
);
}
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>
}
usersHTML = (props) => {
let usersFn = props.usersFn;
+ let sshKeysList = props.sshKeysList;
let usersList = props.usersList && props.usersList.map(function(u, i) {
+ let sshKeysRef = u['ssh-authorized-key'];
return (
<div className="input_group input_group-users" key={i}>
<div className="inputControls">
<div style={{fontWeight: 'bold', display: 'flex'}}>USER <span onClick={usersFn.remove(i)} className="removeInput"><img src={imgRemove} />Remove</span></div>
<TextInput onChange={usersFn.update(i, 'name')} label="USERNAME" value={i.name} />
- <TextInput onChange={usersFn.update(i, 'gecos')} label="REAL NAME" value={i.gecos} />
- <TextInput onChange={usersFn.update(i, 'passwd')} type="password" label="PASSWORD" value={i.passwd} />
+ <TextInput onChange={usersFn.update(i, 'user-info')} label="REAL NAME" value={i.gecos} />
+ {
+ sshKeysRef.map(function(ref, j) {
+ let keyref = JSON.stringify(ref)
+ return (
+ <div key={keyref.name + '-' + i + '-' + j} className="inputControls inputControls-sshkeys">
+ <label>
+ <div>
+ <SelectOption
+ label="Key Pair"
+ options={sshKeysList && sshKeysList.map(function(k) {
+ return {
+ label: k.name,
+ value: k
+ }
+ })}
+ ref="keyPairSelection"
+ initial={false}
+ defaultValue={ref}
+ onChange={usersFn.updateSSHkeyRef(i, j)}>
+ </SelectOption>
+ </div>
+ </label>
+ {
+ sshKeysRef.length > 0 ?
+ <label>
+ <span onClick={usersFn.updateSSHkeyRef(i, j, true)} className="removeInput">
+ <img src={imgRemove} />
+ Remove
+ </span>
+ </label>
+ : null
+ }
+
+ </div>
+ )
+ })
+ }
+ <div className="inputControls inputControls-sshkeys ">
+ <label style={{display: 'flex', 'flexDirection': 'row', 'alignItems': 'center'}}>
+ SSH KEY PAIR
+ <span onClick={usersFn.updateSSHkeyRef(i).bind(null, {target:{value: JSON.stringify(sshKeysList[0])}})} className="addInput">
+ <img src={imgAdd} />
+ ADD
+ </span>
+ </label>
+ </div>
</div>
</div>
)
<div className="configure-nsd_section">
<h3 className="launchpadCard_title">USERS</h3>
{usersList}
- <div className="inputControls inputControls-sshkeys ">
- <span onClick={usersFn.add} className="addInput">
- <img src={imgAdd} onClick={usersFn.add} />
+ <div className="inputControls inputControls-sshkeys inputControls-addUser ">
+ <span onClick={usersFn.add(sshKeysList)} className="addInput">
+ <img src={imgAdd} />
ADD USER
</span>
</div>
});
return CloudAccountOptions;
}
-function dataCentersHTML(dataCenters, onChange) {
+function dataCentersHTML(dataCenters, onChange, initial) {
//Build DataCenter options
//Relook at this, why is it an object?
let DataCenterOptions = [];
if (dataCenters && dataCenters.length > 0) {
return (
<label>Select Data Center
- <SelectOption options={DataCenterOptions} onChange={onChange} />
+ <SelectOption initial={!!initial} options={DataCenterOptions} onChange={onChange} />
</label>
)
}