aboutsummaryrefslogtreecommitdiffstats
path: root/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
blob: e9b3965cae79362b94ed37467aa9216d67b39a0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<service-logic
    xmlns='http://www.onap.org/sdnc/svclogic'
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
    <method rpc='vf-module-topology-operation' mode='sync'>
        <block atomic="true">
            <call module='GENERIC-RESOURCE-API' rpc='validate-vf-module-input' mode='sync' ></call>
            <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>
                <outcome value='assign'>
                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign' mode='sync' ></call>
                </outcome>
                <outcome value='unassign'>
                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-unassign' mode='sync' ></call>
                </outcome>
                <outcome value='changeassign'>
                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-changeassign' mode='sync' ></call>
                </outcome>
                <outcome value='create'>
                    <block atomic="true">
                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
                            <parameter name="field1" value="__TIMESTAMP__"/>
                            <parameter name="field2" value="request-action"/>
                            <parameter name="field3" value='`$vf-module-topology-operation-input.request-information.request-action`'/>
                        </record>
                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
                            <outcome value='CreateSDWANVpnInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-create' mode='sync' ></call>
                            </outcome>
                            <outcome value='CreateSDWANSiteInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-create' mode='sync' ></call>
                            </outcome>
                            <outcome value='CreateSDWANDeviceInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-create' mode='sync' ></call>
                            </outcome>
                            <outcome value='CreateSDWANLanPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-create' mode='sync' ></call>
                            </outcome>
                            <outcome value='CreateSDWANPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-create' mode='sync' ></call>
                            </outcome>
                            <outcome value='Other'>
                                <block></block>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='activate'>
                    <block atomic="true">
                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
                            <outcome value='ActivateSDWANVpnInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-activate' mode='sync' ></call>
                            </outcome>
                            <outcome value='ActivateSDWANSiteInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-activate' mode='sync' ></call>
                            </outcome>
                            <outcome value='ActivateSDWANDeviceInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-activate' mode='sync' ></call>
                            </outcome>
                            <outcome value='ActivateSDWANLanPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-activate' mode='sync' ></call>
                            </outcome>
                            <outcome value='ActivateSDWANPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-activate' mode='sync' ></call>
                            </outcome>
                            <outcome value='Other'>
                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' ></call>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='deactivate'>
                    <block atomic="true">
                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
                            <outcome value='DeactivateSDWANVpnInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-deactivate' mode='sync' ></call>
                            </outcome>
                            <outcome value='DeactivateSDWANSiteInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-deactivate' mode='sync' ></call>
                            </outcome>
                            <outcome value='DeactivateSDWANDeviceInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-deactivate' mode='sync' ></call>
                            </outcome>
                            <outcome value='DeactivateSDWANLanPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-deactivate' mode='sync' ></call>
                            </outcome>
                            <outcome value='DeactivateSDWANPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-deactivate' mode='sync' ></call>
                            </outcome>
                            <outcome value='Other'>
                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' ></call>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='delete'>
                    <block atomic="true">
                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
                            <outcome value='DeleteSDWANVpnInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-delete' mode='sync' ></call>
                            </outcome>
                            <outcome value='DeleteSDWANSiteInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-delete' mode='sync' ></call>
                            </outcome>
                            <outcome value='DeleteSDWANDeviceInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-delete' mode='sync' ></call>
                            </outcome>
                            <outcome value='DleteSDWANLanPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-delete' mode='sync' ></call>
                            </outcome>
                            <outcome value='DeleteSDWANPortInstance'>
                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-delete' mode='sync' ></call>
                            </outcome>
                            <outcome value='Other'>
                                <block></block>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='Other'>
                    <return status='failure'>
                        <parameter name='ack-final' value='Y'/>
                        <parameter name="error-code" value="500" />
                        <parameter name="error-message" value="`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
                    </return>
                </outcome>
            </switch>
            <return status='success'>
                <parameter name="ack-final-indicator" value="Y" />
                <parameter name="error-code" value="200" />
                <parameter name="error-message" value="`$error-message`" />
            </return>
        </block>
    </method>
</service-logic>
pan class="p">{ this.notificationAttributes = { title, imgPath, action, status, id } } notificationSuccess(notificationModel,title,action,id) { this.setNotification({ title, imgPath:"assets/images/execute-success.png", action, status:"Success", id }) this.notification.template(notificationModel); } notificationFailed(notificationModel,title,action,id) { this.setNotification({ title, imgPath:"assets/images/execute-faild.png", action, status:"Failed", id }) this.notification.template(notificationModel); } // Handling tab switching request data handleTabChange(tab) { switch (tab) { case 'NS': this.nstableData = []; this.getTableData(); break case 'VNF': this.vnftableData = []; this.getTableVnfData() break case 'PNF': this.pnftableData = []; this.getTablePnfData() break } } //before put create--Drag and drop files to the page before uploading requestBody = { "userDefinedData": { "additionalProp1": "", "additionalProp2": "", "additionalProp3": "" } } // ns beforeUpload beforeUploadNS = (file: UploadFile): boolean => { this.fileListNS.splice(0,1,file); this.myhttp.getCreatensData("createNetworkServiceData", this.requestBody)//on-line .subscribe((data) => { console.log(data) this.nsdInfoId = data["id"]; }, (err) => { console.log(err); }) return false; } //vnf beforeUpload beforeUploadVNF = (file: UploadFile): boolean => { this.fileListVNF.splice(0,1,file); this.myhttp.getCreatensData("createVnfData", this.requestBody)//on-line .subscribe((data) => { this.vnfPkgId = data["id"]; }, (err) => { console.log(err); }) return false; } // //pnf eforeUpload beforeUploadPNF = (file: UploadFile): boolean => { this.fileListPNF.splice(0,1,file) this.myhttp.getCreatensData("createPnfData", this.requestBody) //on-line .subscribe((data) => { this.pnfdInfoId = data["id"]; }, (err) => { console.log(err); }) return false; } //Drag and drop and click the upload button onClick(tab) { this.isNone = 'none'; switch (tab) { case 'NS': this.handleUpload(this.url.ns.replace("*_*", this.nsdInfoId), tab); this.getTableData(); break case 'VNF': this.handleUpload(this.url.vnf.replace("*_*", this.vnfPkgId), tab); this.getTableVnfData() break case 'PNF': this.handleUpload(this.url.pnf.replace("*_*", this.pnfdInfoId), tab); this.getTablePnfData(); break } } nsfile: { name: string, uid: string, progress: number, status: boolean, success: number }; vnffile: { name: string, uid: string, progress: number, status: boolean, success: number }; pnffile:{ name: string, uid: string, progress: number, status: boolean, success: number } //put Upload Upload handleUpload(url, tab): void { const formData = new FormData(); // tslint:disable-next-line:no-any switch (tab) { case "NS": this.fileListNS.forEach((file: any) => { formData.set('file', file); }); this.nsuploading = true; this.nsfile = { name: this.fileListNS[0].name, uid: this.fileListNS[0].uid, progress: 0, status: true, success: 0 }; let requeryNS = (nsfile) => { nsfile.progress += 3; setTimeout(() => { if (nsfile.progress < 100) { requeryNS(nsfile) } }, 100) }; requeryNS(this.nsfile); break case "VNF": this.fileListVNF.forEach((file: any) => { formData.set('file', file); }); this.vnfuploading = true; this.vnffile = { name: this.fileListVNF[0].name, uid: this.fileListVNF[0].uid, progress: 0, status: true, success: 0 }; let requeryVnf = (vnffile) => { setTimeout(() => { vnffile.progress += 3; if (vnffile.progress < 100) { requeryVnf(vnffile) } }, 100) }; requeryVnf(this.vnffile); break case "PNF": this.fileListPNF.forEach((file: any) => { formData.set('file', file); }); this.pnfloading = true; this.pnffile = { name: this.fileListPNF[0].name, uid: this.fileListPNF[0].uid, progress: 0, status: true, success: 0 }; let requeryPnf = (pnffile) => { setTimeout(() => { pnffile.progress += 3; if (pnffile.progress < 100) { requeryPnf(pnffile) } }, 100) }; requeryPnf(this.pnffile); break } // line PUT const req = new HttpRequest('PUT', url, formData, { reportProgress: true, withCredentials: true }); //Upload pre-empty array this.fileListNS = []; this.fileListVNF = []; this.fileListPNF = []; this.http.request(req) .pipe(filter(e => e instanceof HttpResponse)) .subscribe( (event: {}) => { if (tab == "NS") { this.nsfile.progress = 100; this.nsfile.status = false; } if (tab == "VNF") { this.vnffile.progress = 100; this.vnffile.status = false; } if (tab == "PNF") { this.pnffile.progress = 100; this.pnffile.status = false; } this.changeUploadingSta(tab); this.isNone = 'block'; this.msg.success('upload successfully.'); }, err => { if (tab == "NS") { this.nsfile.progress = 100; this.nsfile.status = false; this.nsfile.success = 1; } if (tab == "VNF") { this.vnffile.progress = 100; this.vnffile.status = false; this.vnffile.success = 1; } if (tab == "PNF") { this.pnffile.progress = 100; this.pnffile.status = false; this.pnffile.success = 1; } this.changeUploadingSta(tab); this.isNone = 'block'; this.msg.error('upload failed.'); } ); } // Control the status of uploading changeUploadingSta(tab) { switch (tab) { case "NS": this.nsuploading = false; break case "VNF": this.vnfuploading = false; break case "PNF": this.pnfloading = false; } } //---------------------------------------------------------------------------------------------- // Get the NS list getTableData() { this.isSpinning = true; //ns vfc lists this.myhttp.getOnboardTableData() .subscribe((data) => { this.nstableData = data; //ns sdc list this.myhttp.getSDC_NSTableData() .subscribe((data) => { this.isSpinning = false; //loading hide let nssdcData = data; this.nstableData.map((nsvfc) => { nsvfc.sameid = nssdcData.find((nssdc) => { return nsvfc.id == nssdc.uuid }) && nsvfc.id; return nsvfc; }); let sameData = nssdcData.filter((nssdc) => { return !this.nstableData.find((nsvfc) => { return nsvfc.id == nssdc.uuid }) }); this.nstableData = this.nstableData.concat(sameData); }, (err) => { console.error(err); this.isSpinning = false; }) }, (err) => { console.error(err); this.isSpinning = false; }) } // Get the vnf list getTableVnfData() { this.isSpinning = true; //vnf vfc lists this.myhttp.getOnboardTableVnfData() .subscribe((data) => { this.vnftableData = data; //vnf sdc lists this.myhttp.getSDC_VNFTableData() .subscribe((data) => { this.isSpinning = false; //loading hide let vnfsdcData = data; this.vnftableData.map((vnfvfc) => { vnfvfc.sameid = vnfsdcData.find((nssdc) => { return vnfvfc.id == nssdc.uuid }) && vnfvfc.id; return vnfvfc; }); let sameData = vnfsdcData.filter((vnfsdc) => { return !this.vnftableData.find((vnfvfc) => { return vnfvfc.id == vnfsdc.uuid }) }); this.vnftableData = this.vnftableData.concat(sameData); }, (err) => { console.error(err); this.isSpinning = false; }) }, (err) => { console.error(err); this.isSpinning = false; }) } // Get pnf list getTablePnfData() { this.isSpinning = true; this.myhttp.getOnboardTablePnfData() .subscribe((data) => { this.pnftableData = data; this.isSpinning = false; //loading hide }, (err) => { console.error(err); this.isSpinning = false; }) } //----------------------------------------------------------------------------------- // modal showConfirm(requestBody, notificationModel, id, type): void{ let API = type === 'NS'? 'getNsonboard' : 'getVnfonboard'; this.modalService.confirm({ nzTitle: '<p>Are you sure you want to do this?</p>', nzContent: '<b>Some descriptions</b>', nzOnOk: () => { this.myhttp[API](requestBody) .subscribe((data) => { if (data.status == "success") { if(type === 'NS'){ this.onboardData.status = "onboarded"; this.notificationSuccess(notificationModel, this.tabs[0],"OnboardingState",id); this.getTableData(); }else{ this.jobId = data.jobId; this.queryProgress(this.jobId, notificationModel,id); this.getTableVnfData(); } } else { this.onboardData.status = "Failed"; this.notificationFailed(notificationModel,this.tabs[0],"OnboardingState",id); return false } }, (err) => { console.log(err); }) } }) } //onboard status onboardData = { status: "onboard", progress: 0, } currentIndex = 0; // ns onboard Upload button updataNsService(id, index, notificationModel) { this.currentIndex = index; this.onboardData.status = "onboarding"; //Disabled this.onboardData.progress = 0; let requestBody = { "csarId": id }; this.showConfirm(requestBody,notificationModel,id,'NS') } // vnf onboard Upload button updataVnfService(id, index, notificationModel) { this.currentIndex = index; this.onboardData.status = "onboarding"; //Disabled button this.onboardData.progress = 0; let requestBody = { "csarId": id }; this.showConfirm(requestBody,notificationModel,id,'VNF') } //Progress Progress inquiry queryProgress(jobId, notificationModel,id) { let mypromise = new Promise((res) => { this.myhttp.getProgress(jobId, 0) .subscribe((data) => { if (data.responseDescriptor === null ||data.responseDescriptor === "null" || data.responseDescriptor.progress == undefined || data.responseDescriptor.progress === null) { this.onboardData.status = "onboarding"; setTimeout(() => { this.queryProgress(this.jobId, notificationModel,id); }, 10000) return false } if (data.responseDescriptor.progress > 100) { this.onboardData.status = "Failed"; this.notificationFailed(notificationModel,'VNS','OnboardingState',id); }else if (data.responseDescriptor.progress < 100) { this.onboardData.status = "onboarding"; setTimeout(() => { this.queryProgress(this.jobId, notificationModel,id); }, 5000) } else { res(data); this.onboardData.status = "onboarded"; this.notificationSuccess(notificationModel,'VNS','OnboardingState',id); } return false }) }) return mypromise; } //-------------------------------------------------------------------------------- /* delete button */ showDeleteConfirm(pkgid, tab, notificationModel): void { this.confirmModal = this.modalService.confirm({ nzTitle: 'Do you Want to delete these items?', nzContent: 'Do you Want to delete these items?', nzOkText: 'Yes', nzCancelText: 'No', nzOnOk: () => new Promise((resolve) => { switch (tab) { case 'NS': this.deleteNsService(pkgid, notificationModel,resolve); break case 'VNF': this.deleteVnfService(pkgid, notificationModel,resolve); break case 'PNF': this.deletePnfService(pkgid, notificationModel,resolve); break } }).catch(() => console.log('Oops errors!')) }); } //delete nsItem deleteNsService(pkgid, notificationModel,resolve) { this.myhttp.deleteNsIdData(pkgid) .subscribe((data) => { this.notificationSuccess(notificationModel,'NS','OnboardingState',pkgid); resolve() //refresh list after successful deletion this.getTableData(); }, (err) => { console.log(err); this.notificationFailed(notificationModel,'NS','OnboardingState',pkgid); }) } //delete vnfItem deleteVnfService(pkgid, notificationModel,resolve) { this.myhttp.deleteVnfIdData(pkgid) .subscribe((data) => { this.notificationSuccess(notificationModel,'VNF','OnboardingState',pkgid); resolve() //refresh list after successful deletion this.getTableVnfData() }, (err) => { console.log(err); this.notificationFailed(notificationModel,'VNF','OnboardingState',pkgid); }) } //delete PnfItem deletePnfService(pkgid, notificationModel,resolve) { this.myhttp.deletePnfIdData(pkgid) .subscribe((data) => { this.notificationSuccess(notificationModel,'PNF','OnboardingState',pkgid); resolve() //refresh list after successful deletion this.getTablePnfData() }, (err) => { console.log(err); this.notificationFailed(notificationModel,'PNF','OnboardingState',pkgid); }) } }