diff options
author | guochuyicmri <guochuyi@chinamobile.com> | 2018-10-31 14:41:34 +0800 |
---|---|---|
committer | guochuyicmri <guochuyi@chinamobile.com> | 2018-10-31 14:42:07 +0800 |
commit | fa6ed0abe231d153acc5011bd2951b310671b4ac (patch) | |
tree | 03c434653d15e0934056575660c54ae2af5f91e5 /usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.ts | |
parent | 059a897e44b1c44860ae8907d4a8600b649cccf3 (diff) |
create e2eService and nsService
Change-Id: I67da05aeb62b24e13446c439b9ef6b9fc1494920
Issue-ID: USECASEUI-160
Signed-off-by: guochuyicmri <guochuyi@chinamobile.com>
Diffstat (limited to 'usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.ts')
-rw-r--r-- | usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.ts | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.ts b/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.ts new file mode 100644 index 00000000..f478c699 --- /dev/null +++ b/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.ts @@ -0,0 +1,212 @@ +/* + Copyright (C) 2018 CMCC, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { MyhttpService } from '../../myhttp.service'; + +@Component({ + selector: 'app-e2e-creation', + templateUrl: './e2e-creation.component.html', + styleUrls: ['./e2e-creation.component.less'] +}) +export class E2eCreationComponent implements OnInit { + + constructor( private myhttp:MyhttpService ) { } + + ngOnInit() { + this.getTemParameters(); + this.getVimInfo(); + this.getSdnControllers(); + console.log(this.createParams); + } + + @Output() e2eCloseCreate = new EventEmitter(); + @Output() nsCloseCreate = new EventEmitter(); + @Input() createParams; + + + // e2e serviceTemplateParameters + templateParameters = { + invariantUUID: "", + uuid: "", + name: "", + type: "", + version: "", + description: "", + category: "", + subcategory: "", + customizationUuid: "", + inputs:[], + nestedTemplates:[] + }; + // ns serviceTemplateParameters + nsTemplateParameters = { + inputs:{}, + inputs2:[], + vnfs:[] + } + getTemParameters(){ //获取模板参数 + let type = this.createParams.commonParams.templateType == "E2E Service" ? "e2e" : "ns"; + this.myhttp.getTemplateParameters(type,this.createParams.template) + .subscribe((data)=>{ + console.log(this.createParams); + console.log(data); + if(type == "e2e"){ + this.templateParameters = data; + this.templateParameters.nestedTemplates.forEach((item)=>{ + item.inputs = item.inputs.filter((input)=>{return input.type !== "sdn_controller"}); + }) + }else if(type == "ns"){ + this.nsTemplateParameters = data; + this.nsTemplateParameters["inputs2"] = []; + let inputs = this.nsTemplateParameters.inputs; + for(let key in inputs){ + this.nsTemplateParameters["inputs2"].push({name:key,type:inputs[key].type,value:inputs[key].value}) + } + console.log(this.nsTemplateParameters); + } + + + }) + } + vimInfos=[]; + getVimInfo() { + this.myhttp.getVimInfo() + .subscribe((data)=>{ + this.vimInfos = data.map((item)=>{return {name:item['cloud-owner'],id:item['cloud-region-id']}}); + }) + }; + sdnControllers=[]; + getSdnControllers(){ + this.myhttp.getSdnControllers() + .subscribe((data)=>{ + this.sdnControllers = data.map((item)=>{return {name:item['thirdparty-sdnc-id'],id:item['thirdparty-sdnc-id']}}); + }) + } + + // e2e requstbody + service = { + name: "", + description: "", + serviceInvariantUuid: "", + serviceUuid: "", // uuid ?? + globalSubscriberId: "", // "customer.id", + serviceType: "", // "serviceType.value", + parameters: { + locationConstraints:[ + + ], + resources: [], + requestInputs: {}, + } + + } + + // ns requstbody + ns_service = { + csarId: "", + nsName: "", + description: "", + context: { + globalCustomerId: "", + serviceType: "" + } + } + ns_service2 = { + locationConstraints: [ + + ], + additionalParamForNs: { + } + } + submit(){ + let type = this.createParams.commonParams.templateType == "E2E Service" ? "e2e" : "ns"; + if(type == "e2e"){ + this.service.serviceInvariantUuid = this.templateParameters.invariantUUID; + this.service.serviceUuid = this.templateParameters.uuid; + this.service.globalSubscriberId = this.createParams.commonParams.customer.id; + this.service.serviceType = this.createParams.commonParams.serviceType.name; + + this.templateParameters.inputs.forEach((item)=>{ + this.service.parameters.requestInputs[item.name] = item.value == undefined ? item.defaultValue : item.value; + }) + + this.templateParameters.nestedTemplates.forEach((item)=>{ + let nsService = { + resourceName: item.name, + resourceInvariantUuid: item.invariantUUID, + resourceUuid: item.uuid, + resourceCustomizationUuid: item.customizationUuid, + parameters: { + locationConstraints:[], + resources:[], + requestInputs:{} + } + } + item.inputs.forEach((input)=>{ + if(input.type == "vf_location"){ + let location = { + vnfProfileId: input.name, + locationConstraints:{ + vimId:input.value.id + } + } + nsService.parameters.locationConstraints.push(location); + } + }) + this.service.parameters.resources.push(nsService); + }) + + this.e2eCloseCreate.emit(this.service); + + }else if(type == "ns"){ + //create ns instance + this.ns_service.csarId = this.createParams.template.id; + this.ns_service.context.globalCustomerId = this.createParams.commonParams.customer.id; + this.ns_service.context.serviceType = this.createParams.commonParams.serviceType.name; + + this.nsTemplateParameters.inputs2.forEach((input)=>{ + this.ns_service2.additionalParamForNs[input.name] = input.value == undefined ? input.defaultValue : input.value; + }) + this.nsTemplateParameters.vnfs.forEach((vnf)=>{ + let vnfparams = { + vnfProfileId: vnf.vnf_id, + locationConstraints: { + vimid: vnf.value.id, + accessinfo: { + tenant: "" + }, + accessInfo: { + tenant: "" + } + } + } + this.ns_service2.locationConstraints.push(vnfparams); + }) + console.log(this.ns_service2); + + let requstbody = { + step1:this.ns_service, + step2:this.ns_service2 + } + this.nsCloseCreate.emit(requstbody); + } + + } + goback(){ + this.e2eCloseCreate.emit(); + } + +} |