X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Flaunchpad%2Fsrc%2Finstantiate%2FinstantiateStore.js;h=480781685305a1a614e6bfaa54562ebd298a5869;hp=eafac261d8af337e6c7600d1f676280f985ab59e;hb=aa69ba06ab35143e5858273ed7aeab70b624109b;hpb=e29efc315df33d546237e270470916e26df391d6 diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js index eafac261d..480781685 100644 --- a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js +++ b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js @@ -1,5 +1,5 @@ /* - * + * * Copyright 2016 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -39,12 +39,13 @@ class LaunchNetworkServiceStore { this.selectedNSDid; this.selectedNSD = {}; this.selectedCloudAccount = {}; - this.dataCenters = {}; + this.dataCenters = []; this.cloudAccounts = []; this.isLoading = false; this.hasConfigureNSD = false; this['input-parameters'] = []; this.displayPlacementGroups = false; + this.ro = {}; this.bindActions(NetworkServiceActions); this.nsdConfiguration = { name:'', @@ -59,6 +60,7 @@ class LaunchNetworkServiceStore { this.configAgentAccounts = []; this.isPreviewing = false; + this.isOpenMano = false; this.registerAsync(NetworkServiceSource); this.exportPublicMethods({ getMockData: getMockData.bind(this), @@ -148,12 +150,14 @@ class LaunchNetworkServiceStore { configAgentAccounts: configAgentAccounts }) } - getDataCentersSuccess(dataCenters) { + getDataCentersSuccess(data) { + let dataCenters = data; + let newState = { - dataCenters: dataCenters + dataCenters: dataCenters || [] }; - if (this.selectedCloudAccount['account-type'] == 'openmano') { - newState.dataCenterID = dataCenters[this.selectedCloudAccount.name][0].uuid + if (this.ro['account-type'] == 'openmano') { + newState.dataCenterID = dataCenters[this.ro.name][0].uuid } this.setState(newState) } @@ -191,6 +195,15 @@ class LaunchNetworkServiceStore { sshKeysRef: [] }) } + getResourceOrchestratorSuccess = (data) => { + Alt.actions.global.hideScreenLoader.defer(); + this.setState({ + ro: data + }) + } + getResourceOrchestratorError = (data) => { + console.log('getResourceOrchestrator Error: ', data) + } //Form handlers nameUpdated = (e) => { this.setState({ @@ -220,7 +233,7 @@ class LaunchNetworkServiceStore { if(v['vim-network-name']) { v.type = 'vim-network-name'; } else { - v.type = 'unknown'; + v.type = 'none'; } } return v; @@ -269,22 +282,18 @@ class LaunchNetworkServiceStore { updateSelectedCloudAccount: (cloudAccount) => { let nsd = self.nsd[0]; var newState = { - selectedCloudAccount: cloudAccount + selectedCloudAccount: JSON.parse(cloudAccount.target.value) }; if (cloudAccount['account-type'] == 'openstack') { newState.displayPlacementGroups = true; } else { newState.displayPlacementGroups = false; } - if (cloudAccount['account-type'] == 'openmano' && this.dataCenters && self.dataCenters[cloudAccount['name']]) { - let datacenter = self.dataCenters[cloudAccount['name']][0]; - newState.dataCenterID = datacenter.uuid; - } self.setState(newState); }, updateSelectedDataCenter: (dataCenter) => { self.setState({ - dataCenterID: dataCenter + dataCenterID: JSON.parse(dataCenter.target.value) }); }, placementGroupUpdate: (i, k, value) => { @@ -363,7 +372,7 @@ class LaunchNetworkServiceStore { if(!vnfCA.hasOwnProperty(id)) { vnfCA[id] = {}; } - vnfCA[id].account = cloudAccount; + vnfCA[id].account = JSON.parse(cloudAccount.target.value); if (cloudAccount['account-type'] == 'openmano' && this.dataCenters && self.dataCenters[cloudAccount['name']]) { let datacenter = self.dataCenters[cloudAccount['name']][0]; @@ -409,7 +418,10 @@ class LaunchNetworkServiceStore { }, updateSelectedDataCenter: (id, dataCenter) => { let vnfCA = self.vnfdCloudAccounts; - vnfCA[id].datacenter = dataCenter; + if (!vnfCA[id]) { + vnfCA[id] = {}; + } + vnfCA[id].datacenter = JSON.parse(dataCenter.target.value); self.setState({ vnfdCloudAccounts: vnfCA }); @@ -435,7 +447,7 @@ class LaunchNetworkServiceStore { } else { delete vld[i]['dns-server']; } - if(type == 'unknown') { + if(type == 'none') { delete vld[i]['ip-profile-ref']; delete vld[i]['vim-network-name']; } @@ -497,7 +509,9 @@ class LaunchNetworkServiceStore { } //Removing DCHP property on disable to allow instantiation if(!value) { - delete self.ipProfiles[i]['ip-profile-params']['dhcp-params']; + self.ipProfiles[i]['ip-profile-params']['dhcp-params'] = { + enabled: false + }; } else { self.ipProfiles[i]['ip-profile-params']['dhcp-params'][property] = value; } @@ -513,9 +527,9 @@ class LaunchNetworkServiceStore { let self = this; return function(e) { if(self.ipProfiles[i]['ip-profile-params']['dns-server']) { - self.ipProfiles[i]['ip-profile-params']['dns-server'].unshift('') + self.ipProfiles[i]['ip-profile-params']['dns-server'].unshift({}) } else { - self.ipProfiles[i]['ip-profile-params']['dns-server'] = ['']; + self.ipProfiles[i]['ip-profile-params']['dns-server'] = [{}]; } self.setState({ipProfiles:self.ipProfiles}); @@ -530,6 +544,14 @@ class LaunchNetworkServiceStore { } self.setState({ipProfiles:self.ipProfiles}); } + }, + updateDNS: (i, k) => { + let self = this; + return function(e) { + let value = e.target.value; + self.ipProfiles[i]['ip-profile-params']['dns-server'][k].address = value; + self.setState({ipProfiles:self.ipProfiles}); + } } } } @@ -570,18 +592,19 @@ class LaunchNetworkServiceStore { usersFn = () => { let self = this; return { - add: function() { - console.log('adding user') - let newUser = { - name: '', - gecos: '', - passwd: '' + add: function(sshKeysList) { + return function(e) { + let newUser = { + name: '', + 'user-info': '', + 'ssh-authorized-key': [sshKeysList[0].name] + } + let usersList = self.usersList; + usersList.push(newUser); + self.setState({ + usersList: usersList + }) } - let usersList = self.usersList; - usersList.push(newUser); - self.setState({ - usersList: usersList - }) }, remove: function(i) { return function() { @@ -599,6 +622,25 @@ class LaunchNetworkServiceStore { usersList: self.usersList }) } + }, + updateSSHkeyRef: function(i, j, remove){ + return function(e) { + let usersList = _.cloneDeep(self.usersList) + let keys = usersList[i]['ssh-authorized-key']; + if(!remove) { + let keyRef = JSON.parse(e.target.value).name; + if(!isNaN(j)) { + keys.splice(j, 1); + } + keys.push(keyRef); + } else { + keys.splice(j, 1); + } + usersList[i]['ssh-authorized-key'] = keys; + self.setState({ + usersList: usersList + }) + } } } } @@ -632,7 +674,7 @@ class LaunchNetworkServiceStore { nsdPayload['vnf-placement-groups'] && delete nsdPayload['vnf-placement-groups']; nsdPayload.vld = this.state.vld; nsdPayload.vld && nsdPayload.vld.map(function(v){ - delete v['unknown']; + delete v['none']; delete v.type; }) } @@ -645,9 +687,11 @@ class LaunchNetworkServiceStore { "admin-status": launch ? "ENABLED" : "DISABLED", "nsd": nsdPayload } - payload["cloud-account"] = this.state.selectedCloudAccount.name; - if (this.state.selectedCloudAccount['account-type'] == "openmano") { + + if (this.state.ro && this.state.ro['account-type'] == 'openmano') { payload['om-datacenter'] = this.state.dataCenterID; + } else { + payload["cloud-account"] = this.state.selectedCloudAccount.name; } if (this.state.hasConfigureNSD) { let ips = this.state['input-parameters']; @@ -745,14 +789,17 @@ class LaunchNetworkServiceStore { if(vnfdCloudAccounts[k].hasOwnProperty('datacenter')) { vnf['om-datacenter'] = vnfdCloudAccounts[k].datacenter; } - payload['vnf-cloud-account-map'].push(vnf); + if(vnf['om-datacenter'] || vnf['cloud-account'] || vnf['config-agent-account']) { + payload['vnf-cloud-account-map'].push(vnf); + } } //Add SSH-Keys payload['ssh-authorized-key'] = this.state.sshKeysRef.map(function(k) { return {'key-pair-ref': JSON.parse(k).name}; }); //Add Users - payload['user'] = this.state.usersList; + payload['user'] = addKeyPairRefToUsers(this.state.usersList); + // console.log(payload) this.launchNSR({ 'nsr': [payload] }); @@ -760,6 +807,19 @@ class LaunchNetworkServiceStore { } +function addKeyPairRefToUsers(list) { + return list.map(function(u) { + return { + name: u.name, + 'user-info': u['user-info'], + 'ssh-authorized-key': u['ssh-authorized-key'].map(function(k) { + return { + 'key-pair-ref' : k + } + }) + } + }) +} function getMockSLA(id) { console.log('Getting mock SLA Data for id: ' + id);