X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Flaunchpad%2Fsrc%2Finstantiate%2FinstantiateStore.js;h=dacf316d2ca3bd008b92be72d516528879fc8700;hp=01c624d574479a0063f031fe81acb50eb5a87d8a;hb=ab68734c52fb6d413e8241466c4517bd7af2477f;hpb=93bac8fefb064dbefb2cc08d3ae3aa84e84f0320 diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js index 01c624d57..dacf316d2 100644 --- a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js +++ b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js @@ -20,7 +20,8 @@ import NetworkServiceSource from './launchNetworkServiceSource.js'; import GUID from 'utils/guid.js'; import AppHeaderActions from 'widgets/header/headerActions.js'; import Alt from '../alt'; -import _ from 'lodash'; +import _cloneDeep from 'lodash/cloneDeep'; +import _find from 'lodash/find'; class LaunchNetworkServiceStore { @@ -139,7 +140,7 @@ class LaunchNetworkServiceStore { Alt.actions.global.showNotification.defer({type: 'warning', msg: 'One or more VIM accounts have failed to connect'}); } if(cloudAccounts && cloudAccounts.length > 0) { - newState.selectedCloudAccount = cloudAccounts[0]; + newState.selectedCloudAccount = newState.cloudAccounts[0]; if (cloudAccounts[0]['account-type'] == 'openstack') { newState.displayPlacementGroups = true; } else { @@ -188,10 +189,13 @@ class LaunchNetworkServiceStore { }); return window.location.hash = 'launchpad/' + tokenizedHash[2]; } - launchNSRError(error) { + launchNSRError(data) { var msg = 'Something went wrong while trying to instantiate. Check the error logs for more information'; - if(error) { - msg = error; + if(data) { + msg = data; + } + if (data.error) { + msg = data.error; } Alt.actions.global.showNotification.defer(msg); Alt.actions.global.hideScreenLoader.defer(); @@ -251,9 +255,13 @@ class LaunchNetworkServiceStore { ipProfiles: NSD['ip-profiles'] }; newState.selectedNSD = data; + newState['input-parameters'] = []; if (NSD['input-parameter-xpath']) { newState.hasConfigureNSD = true; - newState['input-parameters'] = NSD['input-parameter-xpath']; + NSD['input-parameter-xpath'].map(function(p) { + newState.hasConfigureNSD = true; + newState['input-parameters'].push(_cloneDeep(p)); + }) } else { newState.hasConfigureNSD = false; newState['input-parameters'] = null; @@ -306,14 +314,16 @@ class LaunchNetworkServiceStore { dataCenterID: JSON.parse(dataCenter.target.value) }); }, - placementGroupUpdate: (i, k, value) => { + placementGroupUpdate: (i, k, event) => { + let value = event.target.value; let pg = self['ns-placement-groups']; pg[i][k] = value; self.setState({ 'ns-placement-groups': pg }) }, - hostAggregateUpdate: (pgi, hai, k, value) => { + hostAggregateUpdate: (pgi, hai, k, event) => { + let value = event.target.value; let pg = self['ns-placement-groups']; let ha = pg[pgi]['host-aggregate'][hai]; ha[k] = value; @@ -345,14 +355,16 @@ class LaunchNetworkServiceStore { vnfFn = () => { let self = this; return { - placementGroupUpdate: (i, k, value) => { + placementGroupUpdate: (i, k, event) => { + let value = event.target.value; let pg = self['vnf-placement-groups']; pg[i][k] = value; self.setState({ 'vnf-placement-groups': pg }) }, - hostAggregateUpdate: (pgi, hai, k, value) => { + hostAggregateUpdate: (pgi, hai, k, event) => { + let value = event.target.value; let pg = self['vnf-placement-groups']; let ha = pg[pgi]['host-aggregate'][hai]; ha[k] = value; @@ -640,7 +652,7 @@ class LaunchNetworkServiceStore { }, updateSSHkeyRef: function(i, j, remove){ return function(e) { - let usersList = _.cloneDeep(self.usersList) + let usersList = _cloneDeep(self.usersList) let keys = usersList[i]['ssh-authorized-key']; if(!remove) { let keyRef = JSON.parse(e.target.value).name; @@ -672,7 +684,7 @@ class LaunchNetworkServiceStore { // Create a filtered NSD payload from the decorated one as RW.REST cannot handle extra parameters now let nsdPayload = {}; - nsdPayload = _.cloneDeep(_.find(this.state.nsd[0].descriptors, {id: this.state.selectedNSDid})); + nsdPayload = _cloneDeep(_find(this.state.nsd[0].descriptors, {id: this.state.selectedNSDid})); if (nsdPayload != {}) { nsdPayload['meta'] && delete nsdPayload['meta']; @@ -706,14 +718,22 @@ class LaunchNetworkServiceStore { if (this.state.ro && this.state.ro['account-type'] == 'openmano') { payload['om-datacenter'] = this.state.dataCenterID; } else { + if(!this.state.selectedCloudAccount) { + Alt.actions.global.showNotification.defer("No VIM Account Selected"); + return; + } payload["cloud-account"] = this.state.selectedCloudAccount.name; } + //Clean Input Parameters if (this.state.hasConfigureNSD) { - let ips = this.state['input-parameters']; + let ips = _cloneDeep(this.state['input-parameters']); + let ipsToSend = ips.filter(function(ip) { if (ip.value && ip.value != "") { - ip.uuid = GUID(); + delete ip.label; delete ip.name; + delete ip['default-value']; + return true; } return false;