diff --git a/Jenkinsfile b/Jenkinsfile index 24bed98f..c061d88c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,19 +1,19 @@ pipeline { - agent any - - stages { + agent any + + stages { stage('Setup npm') { steps { sh 'npm i' } } - stage('Test') { + stage('Test') { steps { sh 'npm run lint'; sh 'npm run scss-lint'; } } - stage('Documentation') { + stage('Documentation') { when { branch 'master' } @@ -30,43 +30,68 @@ pipeline { ]) } } - stage('Build Docker image') { - steps { - echo 'Test styles and building docker image...' - sh 'docker build --no-cache -f ./Dockerfile -t registry.sonata-nfv.eu:5000/tng-portal .' - } - } - stage('Publishing') { - steps { - echo 'Publishing docker image....' - sh 'docker push registry.sonata-nfv.eu:5000/tng-portal' - } - } - stage('Deploying in pre-int') { - steps { - echo 'Deploying in pre-integration....' - sh 'rm -rf tng-devops || true' - sh 'git clone https://github.com/sonata-nfv/tng-devops.git' - dir(path: 'tng-devops') { - sh 'ansible-playbook roles/sp.yml -i environments -e "target=pre-int-sp component=portal"' - sh 'ansible-playbook roles/vnv.yml -i environments -e "target=pre-int-vnv component=portal"' - } - } - } - stage('Deployment in Integration') { - when { - branch 'master' - } - steps { - sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest registry.sonata-nfv.eu:5000/tng-portal:int' - sh 'docker push registry.sonata-nfv.eu:5000/tng-portal:int' - sh 'rm -rf tng-devops || true' - sh 'git clone https://github.com/sonata-nfv/tng-devops.git' - dir(path: 'tng-devops') { - sh 'ansible-playbook roles/sp.yml -i environments -e "target=int-sp component=portal"' + stage('Build Docker image') { + steps { + echo 'Test styles and building docker image...' + sh 'docker build --no-cache -f ./Dockerfile -t registry.sonata-nfv.eu:5000/tng-portal .' + } + } + stage('Publishing') { + steps { + echo 'Publishing docker image....' + sh 'docker push registry.sonata-nfv.eu:5000/tng-portal' + } + } + stage('Deploying in pre-int') { + steps { + echo 'Deploying in pre-integration....' + sh 'rm -rf tng-devops || true' + sh 'git clone https://github.com/sonata-nfv/tng-devops.git' + dir(path: 'tng-devops') { + sh 'ansible-playbook roles/sp.yml -i environments -e "target=pre-int-sp component=portal"' + sh 'ansible-playbook roles/vnv.yml -i environments -e "target=pre-int-vnv component=portal"' + } + } + } + stage('Deployment in Integration') { + when { + branch 'master' + } + steps { + sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest registry.sonata-nfv.eu:5000/tng-portal:int' + sh 'docker push registry.sonata-nfv.eu:5000/tng-portal:int' + sh 'rm -rf tng-devops || true' + sh 'git clone https://github.com/sonata-nfv/tng-devops.git' + dir(path: 'tng-devops') { + sh 'ansible-playbook roles/sp.yml -i environments -e "target=int-sp component=portal"' sh 'ansible-playbook roles/vnv.yml -i environments -e "target=int-vnv component=portal"' - } - } - } - } + } + } + } + stage('Promoting release v5.0') { + when { + branch 'v5.0' + } + stages { + stage('Generating release') { + steps { + sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest registry.sonata-nfv.eu:5000/tng-portal:v5.0' + sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest sonatanfv/tng-portal:v5.0' + sh 'docker push registry.sonata-nfv.eu:5000/tng-portal:v5.0' + sh 'docker push sonatanfv/tng-portal:v5.0' + } + } + stage('Deploying in v5.0 servers') { + steps { + sh 'rm -rf tng-devops || true' + sh 'git clone https://github.com/sonata-nfv/tng-devops.git' + dir(path: 'tng-devops') { + sh 'ansible-playbook roles/sp.yml -i environments -e "target=sta-sp-v5-0 component=portal"' + sh 'ansible-playbook roles/vnv.yml -i environments -e "target=sta-vnv-v5-0 component=portal"' + } + } + } + } + } + } } diff --git a/README.md b/README.md index a2872606..f5d3d255 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,15 @@ There is also a version of the Portal for using the 5GTANGO Service Development

-## Dependencies +## Installation + +Make sure that you have all the dependencies installed. Then, run the following command to install all the required modules. + +``` +npm install +``` + +### Dependencies - Node.js >= v8.9 @@ -29,19 +37,9 @@ There is also a version of the Portal for using the 5GTANGO Service Development [sudo] npm install -g @angular/cli ``` -### Running dependencies - -Requests made from the Portal in the development mode need the VPN in order to receive a response. +- Athens VPN credentials: requests made from the Portal in the development mode need the VPN in order to receive a response. -- Athens VPN credentials - -## Installation - -Make sure that you have all the dependencies installed. Then, run the following command to install all the required modules. - -``` -npm install -``` +- Make sure you have installed [Docker](https://docs.docker.com/install/) >= 18.06.0-ce if you are going to deploy the Portal like this. ## Developing @@ -62,15 +60,7 @@ If you want to launch a container locally, place yourself in the Dockerfile fold The container should be up and running in http://0.0.0.0:80. -#### Exposed port in docker container - -The port where the app will run when using the Docker container can be set in `./Dockerfile`. By default, 4200 is set. - -#### Docker dependencies - -Make sure you have installed Docker >= 18.06.0-ce - -- [https://docs.docker.com/install/](https://docs.docker.com/install/) +*Note: The port where the app will run when using the Docker container can be set in `./Dockerfile`. By default, 4200 is set.* ## Configuration Portal allows two different configurations: the base URL of the deployment and the displayed sections of the menu. diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 65f3213e..2b31468e 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -719,4 +719,11 @@ ul.unordered-list .mat-input-element:disabled { margin-left: 10px; color: $secondary-font-color; } -} \ No newline at end of file +} + +////////////////////////////////////// +// Generic styles +////////////////////////////////////// +.opening-item { + cursor: pointer; +} diff --git a/src/app/dashboard/dashboard.component.html b/src/app/dashboard/dashboard.component.html index 16a910ea..121b5fe7 100644 --- a/src/app/dashboard/dashboard.component.html +++ b/src/app/dashboard/dashboard.component.html @@ -169,8 +169,8 @@

Available platforms

Tests status

- Executed - {{ dashboardData['testsExecuted'] }} + Completed + {{ dashboardData['testsCompleted'] }}
diff --git a/src/app/service-management/ns-instance-detail/ns-instance-detail.component.html b/src/app/service-management/ns-instance-detail/ns-instance-detail.component.html index 04546332..ec0b068e 100644 --- a/src/app/service-management/ns-instance-detail/ns-instance-detail.component.html +++ b/src/app/service-management/ns-instance-detail/ns-instance-detail.component.html @@ -29,8 +29,8 @@

{{ detail.name }}

- - +
diff --git a/src/app/service-management/ns-instance-detail/ns-instance-detail.component.ts b/src/app/service-management/ns-instance-detail/ns-instance-detail.component.ts index cc5fb9da..714dd484 100644 --- a/src/app/service-management/ns-instance-detail/ns-instance-detail.component.ts +++ b/src/app/service-management/ns-instance-detail/ns-instance-detail.component.ts @@ -129,6 +129,10 @@ export class NsInstanceDetailComponent implements OnInit { this.utilsService.copyToClipboard(value); } + openService() { + this.router.navigate([ `service-management/network-services/services/${ this.detail[ 'serviceID' ] }` ]); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/service-management/request-detail/request-detail.component.html b/src/app/service-management/request-detail/request-detail.component.html index 4d653ace..6a3b30d5 100644 --- a/src/app/service-management/request-detail/request-detail.component.html +++ b/src/app/service-management/request-detail/request-detail.component.html @@ -37,8 +37,9 @@

{{ detail['name'] }}

- - + + diff --git a/src/app/service-management/request-detail/request-detail.component.ts b/src/app/service-management/request-detail/request-detail.component.ts index 66129a82..ad90e65d 100644 --- a/src/app/service-management/request-detail/request-detail.component.ts +++ b/src/app/service-management/request-detail/request-detail.component.ts @@ -51,6 +51,10 @@ export class RequestDetailComponent implements OnInit { this.utilsService.copyToClipboard(value); } + openService() { + this.router.navigate([ `service-management/network-services/services/${ this.detail[ 'serviceUUID' ] }` ]); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/service-management/slice-instance-detail/slice-instance-detail.component.html b/src/app/service-management/slice-instance-detail/slice-instance-detail.component.html index 9cad944b..76f395c3 100644 --- a/src/app/service-management/slice-instance-detail/slice-instance-detail.component.html +++ b/src/app/service-management/slice-instance-detail/slice-instance-detail.component.html @@ -30,8 +30,8 @@

{{ detail['name'] }}

- - + diff --git a/src/app/service-management/slice-instance-detail/slice-instance-detail.component.ts b/src/app/service-management/slice-instance-detail/slice-instance-detail.component.ts index dc59a341..a0fbea01 100644 --- a/src/app/service-management/slice-instance-detail/slice-instance-detail.component.ts +++ b/src/app/service-management/slice-instance-detail/slice-instance-detail.component.ts @@ -78,6 +78,10 @@ export class SliceInstanceDetailComponent implements OnInit { return this.detail[ 'uuid' ] && this.detail[ 'status' ].toUpperCase() === 'INSTANTIATED'; } + openTemplate() { + this.router.navigate([ `service-management/slices/slice-templates/${ this.detail[ 'nstRef' ] }` ]); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/service-management/sm-network-services/sm-network-services.component.html b/src/app/service-management/sm-network-services/sm-network-services.component.html index 9cd85dbb..3759cb4c 100644 --- a/src/app/service-management/sm-network-services/sm-network-services.component.html +++ b/src/app/service-management/sm-network-services/sm-network-services.component.html @@ -39,7 +39,7 @@

Available network ser - +
diff --git a/src/app/service-management/sm-network-services/sm-network-services.component.ts b/src/app/service-management/sm-network-services/sm-network-services.component.ts index 91cff5fc..c9cbef10 100644 --- a/src/app/service-management/sm-network-services/sm-network-services.component.ts +++ b/src/app/service-management/sm-network-services/sm-network-services.component.ts @@ -65,7 +65,7 @@ export class SmNetworkServicesComponent implements OnInit { instantiate(row) { this.instantiateDialog.open(NsInstantiateDialogComponent, { - data: { serviceUUID: row.serviceId, name: row.name } + data: { serviceUUID: row.uuid, name: row.name } }); } } diff --git a/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.html b/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.html index 7ab50883..b6f685e2 100644 --- a/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.html +++ b/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.html @@ -102,7 +102,7 @@

Network s - +
@@ -113,7 +113,7 @@

Network s

Slice virtual links

- +
diff --git a/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.scss b/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.scss index afd10248..fc86cf59 100644 --- a/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.scss +++ b/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.scss @@ -35,29 +35,29 @@ app-sm-slice-template-detail { table { width: 55vw; margin-bottom: 50px; - } - tr.mat-row { - background-image: linear-gradient( - to right, - $basic-background-color 0%, - $table-underline-color 0%, - $table-underline-color 99%, - $basic-background-color 99%, - $basic-background-color 100% - ); - } - - td.mat-cell { - cursor: auto; - } + tr.mat-row { + background-image: linear-gradient( + to right, + $basic-background-color 0%, + $table-underline-color 0%, + $table-underline-color 99%, + $basic-background-color 99%, + $basic-background-color 100% + ); + } + + &.no-opening-table td.mat-cell { + cursor: auto; + } - .mat-cell:nth-child(6), - .mat-header-cell:nth-child(6) { - width: 16%; - padding-right: 0; + .mat-cell:nth-child(6), + .mat-header-cell:nth-child(6) { + width: 16%; + padding-right: 0; + } } - + // Styles for no instances message .no-results-container { align-self: center; diff --git a/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.ts b/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.ts index bdd79987..c065a7fb 100644 --- a/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.ts +++ b/src/app/service-management/sm-slice-template-detail/sm-slice-template-detail.component.ts @@ -67,6 +67,10 @@ export class SmSliceTemplateDetailComponent implements OnInit { this.utilsService.copyToClipboard(value); } + openRow(row) { + this.router.navigate([ `service-management/network-services/services/${ row.nsdRef }` ]); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html b/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html index 7ce8eeea..a1ca689c 100644 --- a/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html +++ b/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -50,8 +50,8 @@

{{ detail['name'] }}

- - + diff --git a/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.ts b/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.ts index b89ef9eb..75f7f9f1 100644 --- a/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.ts +++ b/src/app/service-platform/runtime-policy-detail/runtime-policy-detail.component.ts @@ -131,6 +131,10 @@ export class RuntimePolicyDetailComponent implements OnInit { this.utilsService.copyToClipboard(value); } + openService() { + this.router.navigate([ `service-platform/network-services/${ this.detail[ 'nsUUID' ] }` ]); + } + close() { this.router.navigate([ 'service-platform/policies/runtime-policies' ]); } diff --git a/src/app/service-platform/sla-template-detail/sla-template-detail.component.html b/src/app/service-platform/sla-template-detail/sla-template-detail.component.html index 78f63fef..00056984 100644 --- a/src/app/service-platform/sla-template-detail/sla-template-detail.component.html +++ b/src/app/service-platform/sla-template-detail/sla-template-detail.component.html @@ -40,8 +40,8 @@

{{ detail['name'] }}

- + {{ detail['name'] }}
+ + + + + diff --git a/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.scss b/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.scss index 7d6f4e71..336edd88 100644 --- a/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.scss +++ b/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.scss @@ -1,27 +1,27 @@ @import "../../../constants.scss"; app-sp-functions-detail { - overflow-y: auto; - display: flex; - flex-direction: column; - flex: 1 1; - position: absolute; - align-items: center; - top: 0; - bottom: 0; - right: 0; - left: 0; - background-color: $basic-background-color; - > * { - flex: 0 0 auto; - } + overflow-y: auto; + display: flex; + flex-direction: column; + flex: 1 1; + position: absolute; + align-items: center; + top: 0; + bottom: 0; + right: 0; + left: 0; + background-color: $basic-background-color; + > * { + flex: 0 0 auto; + } - .detail { - width: 65%; - align-items: center; - margin-bottom: 20px; + .detail { + width: 55vw; + margin-bottom: 5vh; - .mat-form-field { - width: 100%; - } - } + .left-column { + width: 25vw; + margin-right: 40px; + } + } } diff --git a/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.ts b/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.ts index 64362f3d..1d960f14 100644 --- a/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.ts +++ b/src/app/service-platform/sp-functions-detail/sp-functions-detail.component.ts @@ -47,6 +47,10 @@ export class SpFunctionsDetailComponent implements OnInit { } } + copyToClipboard(value) { + this.utilsService.copyToClipboard(value); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html b/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html index 0d35a5b1..3b543a70 100644 --- a/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html +++ b/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html @@ -19,22 +19,31 @@

{{ detail['name'] }}

+ + + + + - - - + + + +

Description

@@ -44,8 +53,7 @@

Description

VNFs

- There are no virtual network - functions to display +
Network Name {{ element.networkName }}
@@ -70,6 +78,12 @@

VNFs

ID
+ +
+
+ No results to display +
+
diff --git a/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.scss b/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.scss index 2fc32f40..51ced45d 100644 --- a/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.scss +++ b/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.scss @@ -1,58 +1,62 @@ @import "../../../constants.scss"; app-sp-network-services-detail { - overflow-y: auto; - display: flex; - flex-direction: column; - flex: 1 1; - position: absolute; - align-items: center; - top: 0; - bottom: 0; - right: 0; - left: 0; - background-color: $basic-background-color; - > * { - flex: 0 0 auto; - } - - .detail { - width: 65%; - margin-bottom: 20px; - - .mat-form-field { - width: 100%; - } - - .description { - margin-bottom: 50px; - } - - .title3 { - font-size: 24px; - } - - .message { - color: $secondary-font-color-light; - } - - table { - width: 100%; - margin-bottom: 50px; - } - - tr.mat-row { - background-image: linear-gradient( - to right, - $basic-background-color 0%, - $table-underline-color 0%, - $table-underline-color 99%, - $basic-background-color 99%, - $basic-background-color 100% - ); - } - - td.mat-cell { - cursor: auto; - } - } + overflow-y: auto; + display: flex; + flex-direction: column; + flex: 1 1; + position: absolute; + align-items: center; + top: 0; + bottom: 0; + right: 0; + left: 0; + background-color: $basic-background-color; + > * { + flex: 0 0 auto; + } + + .detail { + width: 55vw; + margin-bottom: 5vh; + + .left-column { + width: 25vw; + margin-right: 40px; + } + + .description { + margin-bottom: 50px; + } + + .title3 { + font-size: 24px; + } + + table { + width: 100%; + margin-bottom: 50px; + + tr.mat-row { + background-image: linear-gradient( + to right, + $basic-background-color 0%, + $table-underline-color 0%, + $table-underline-color 99%, + $basic-background-color 99%, + $basic-background-color 100% + ); + } + + td.mat-cell { + cursor: auto; + } + } + + // Styles for no vnfs message + .no-results-container { + align-self: center; + width: 100%; + margin-top: 7vh; + } + } } diff --git a/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.ts b/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.ts index f80a3322..d9e3482e 100644 --- a/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.ts +++ b/src/app/service-platform/sp-network-services-detail/sp-network-services-detail.component.ts @@ -29,24 +29,29 @@ export class SpNetworkServicesDetailComponent implements OnInit { }); } - requestNetworkService(uuid) { + async requestNetworkService(uuid) { this.loading = true; + const response = await this.commonService.getOneNetworkService('sp', uuid); + + this.loading = false; + if (response) { + this.detail = response; + + if (this.detail[ 'vnf' ].lenght < 1) { + this.detail[ 'vnf' ] = []; + } + } else { + this.utilsService.openSnackBar('Unable to fetch the network service', ''); + this.close(); + } + } + + copyToClipboard(value) { + this.utilsService.copyToClipboard(value); + } - this.commonService - .getOneNetworkService('sp', uuid) - .then(response => { - this.loading = false; - this.detail = response; - - if (this.detail[ 'vnf' ].lenght < 1) { - this.detail[ 'vnf' ] = []; - } - }) - .catch(err => { - this.loading = false; - this.utilsService.openSnackBar(err, ''); - this.close(); - }); + canShowVNFs() { + return (!this.detail[ 'vnf' ] || !this.detail[ 'vnf' ].length) && !this.loading; } close() { diff --git a/src/app/service-platform/sp-network-services/sp-network-services.component.html b/src/app/service-platform/sp-network-services/sp-network-services.component.html index a67d74a2..bc8d36ab 100644 --- a/src/app/service-platform/sp-network-services/sp-network-services.component.html +++ b/src/app/service-platform/sp-network-services/sp-network-services.component.html @@ -30,7 +30,7 @@

Network services< - +
diff --git a/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.html b/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.html index b0cad40a..4266dd2a 100644 --- a/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.html +++ b/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.html @@ -19,6 +19,14 @@

{{ detail['name'] }}

+ + + + + @@ -53,7 +61,7 @@

Network services

- +

@@ -81,7 +89,7 @@

VNFs

- +
diff --git a/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.scss b/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.scss index e703bff4..3b2ccd16 100644 --- a/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.scss +++ b/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.scss @@ -18,6 +18,11 @@ app-sp-packages-detail { form { width: 55vw; margin-bottom: 5vh; + + .left-column { + width: 25vw; + margin-right: 40px; + } } .vnf, @@ -32,26 +37,22 @@ app-sp-packages-detail { table { width: 95%; - } - - tr.mat-row { - background-image: linear-gradient( - to right, - $basic-background-color 0%, - $table-underline-color 0%, - $table-underline-color 100%, - $basic-background-color 100%, - $basic-background-color 100% - ); - } - - td.mat-cell { - cursor: auto; - } - .mat-cell:nth-child(1), - .mat-header-cell:nth-child(1) { - width: 30%; + tr.mat-row { + background-image: linear-gradient( + to right, + $basic-background-color 0%, + $table-underline-color 0%, + $table-underline-color 100%, + $basic-background-color 100%, + $basic-background-color 100% + ); + } + + .mat-cell:nth-child(1), + .mat-header-cell:nth-child(1) { + width: 30%; + } } } diff --git a/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.ts b/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.ts index af9fa55e..cfa89d5d 100644 --- a/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.ts +++ b/src/app/service-platform/sp-packages-detail/sp-packages-detail.component.ts @@ -56,6 +56,18 @@ export class SpPackagesDetailComponent implements OnInit { return this.detail[ 'vnf' ] && this.detail[ 'vnf' ].length; } + openRow(section, row) { + if (section === 'service') { + this.router.navigate([ `service-platform/network-services/${ row.uuid }` ]); + } else if (section === 'function') { + this.router.navigate([ `service-platform/functions/${ row.uuid }` ]); + } + } + + copyToClipboard(value) { + this.utilsService.copyToClipboard(value); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.html b/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.html index 9c90a701..8c0570dc 100644 --- a/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.html +++ b/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.html @@ -102,7 +102,7 @@

Network s - +
@@ -113,7 +113,7 @@

Network s

Slice virtual links

- +
diff --git a/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.scss b/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.scss index 230270e8..b90c4376 100644 --- a/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.scss +++ b/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.scss @@ -38,29 +38,29 @@ app-sp-slice-template-detail { table { width: 55vw; margin-bottom: 50px; - } - - tr.mat-row { - background-image: linear-gradient( - to right, - $basic-background-color 0%, - $table-underline-color 0%, - $table-underline-color 99%, - $basic-background-color 99%, - $basic-background-color 100% - ); - } - - td.mat-cell { - cursor: auto; - } - .mat-cell:nth-child(6), - .mat-header-cell:nth-child(6) { - width: 16%; - padding-right: 0; - } + tr.mat-row { + background-image: linear-gradient( + to right, + $basic-background-color 0%, + $table-underline-color 0%, + $table-underline-color 99%, + $basic-background-color 99%, + $basic-background-color 100% + ); + } + + &.no-opening-table td.mat-cell { + cursor: auto; + } + .mat-cell:nth-child(6), + .mat-header-cell:nth-child(6) { + width: 16%; + padding-right: 0; + } + } + // Styles for no instances message .no-results-container { align-self: center; diff --git a/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.ts b/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.ts index eeaec6ab..1c5b7b24 100644 --- a/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.ts +++ b/src/app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.ts @@ -72,6 +72,10 @@ export class SpSliceTemplateDetailComponent implements OnInit { this.utilsService.copyToClipboard(value); } + openRow(row) { + this.router.navigate([ `service-platform/network-services/${ row.nsdRef }` ]); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/settings/endpoint-list/endpoint-list.component.scss b/src/app/settings/endpoint-list/endpoint-list.component.scss index 148ef160..23db199f 100644 --- a/src/app/settings/endpoint-list/endpoint-list.component.scss +++ b/src/app/settings/endpoint-list/endpoint-list.component.scss @@ -11,16 +11,20 @@ app-endpoint-list { table { width: 95%; - } - tr.mat-row { - background-image: linear-gradient( - to right, - $basic-background-color 0%, - $table-underline-color 0%, - $table-underline-color 100%, - $basic-background-color 100%, - $basic-background-color 100% - ); + tr.mat-row { + background-image: linear-gradient( + to right, + $basic-background-color 0%, + $table-underline-color 0%, + $table-underline-color 100%, + $basic-background-color 100%, + $basic-background-color 100% + ); + } + + td.mat-cell { + cursor: auto; + } } } \ No newline at end of file diff --git a/src/app/shared/services/common/common.service.ts b/src/app/shared/services/common/common.service.ts index 330e76f9..053cd20c 100644 --- a/src/app/shared/services/common/common.service.ts +++ b/src/app/shared/services/common/common.service.ts @@ -82,7 +82,7 @@ export class CommonService { updatedAt: response[ 'updated_at' ], vendor: response[ 'pd' ][ 'vendor' ], version: response[ 'pd' ][ 'version' ], - status: response[ 'status' ], + status: response[ 'status' ] }; return Object.assign({ }, packageData, content); @@ -101,20 +101,23 @@ export class CommonService { const tests = []; content.forEach(item => { - if (item[ 'content-type' ] === 'application/vnd.5gtango.nsd') { + if (item[ 'content-type' ].endsWith('.nsd')) { ns.push({ + uuid: item.uuid, vendor: item.id.vendor, name: item.id.name, version: item.id.version }); - } else if (item[ 'content-type' ] === 'application/vnd.5gtango.vnfd') { + } else if (item[ 'content-type' ].endsWith('.vnfd')) { vnf.push({ + uuid: item.uuid, vendor: item.id.vendor, name: item.id.name, version: item.id.version }); - } else if (item[ 'content-type' ] === 'application/vnd.5gtango.tstd') { + } else if (item[ 'content-type' ].endsWith('.tstd')) { tests.push({ + uuid: item.uuid, vendor: item.id.vendor, name: item.id.name, version: item.id.version @@ -148,17 +151,32 @@ export class CommonService { try { const response = await this.http.get(url, { headers: headers }).toPromise(); - return response instanceof Array ? - response.map(item => { - return { - uuid: item.uuid, - name: item.vnfd.name, - vendor: item.vnfd.vendor, - status: item.status, - version: item.vnfd.version, - type: 'public' - }; - }) : []; + if (response instanceof Array) { + const tango = response.filter(funct => funct.platform.toLowerCase() === '5gtango') + .map(item => { + return { + uuid: item.uuid, + name: item.vnfd.name, + vendor: item.vnfd.vendor, + status: item.status, + version: item.vnfd.version, + }; + }); + + const osm = response.filter(funct => funct.platform.toLowerCase() === 'osm') + .map(item => { + return { + uuid: item.uuid, + name: item.vnfd[ 'vnfd:vnfd-catalog' ].vnfd.name, + vendor: item.vnfd[ 'vnfd:vnfd-catalog' ].vnfd.vendor, + status: item.status, + version: item.vnfd[ 'vnfd:vnfd-catalog' ].vnfd.version, + }; + }); + + return tango.concat(osm); + } + return []; } catch (error) { if (error.status === 401 && error.statusText === 'Unauthorized') { this.utilsService.launchUnauthorizedError(); @@ -270,16 +288,27 @@ export class CommonService { try { const response = await this.http.get(url, { headers: headers }).toPromise(); - return response instanceof Array ? - response.filter(ns => ns.platform.toLowerCase() === '5gtango') + if (response instanceof Array) { + const tango = response.filter(ns => ns.platform.toLowerCase() === '5gtango') .map(item => ({ uuid: item.uuid, name: item.nsd.name, - serviceId: item.uuid, vendor: item.nsd.vendor, version: item.nsd.version, status: item.status - })) : []; + })); + + const osm = response.filter(ns => ns.platform.toLowerCase() === 'osm') + .map(item => ({ + uuid: item.uuid, + name: item.nsd[ 'nsd:nsd-catalog' ].nsd.name, + vendor: item.nsd[ 'nsd:nsd-catalog' ].nsd.vendor, + version: item.nsd[ 'nsd:nsd-catalog' ].nsd.version, + status: item.status + })); + return tango.concat(osm); + } + return []; } catch (error) { if (error.status === 401 && error.statusText === 'Unauthorized') { this.utilsService.launchUnauthorizedError(); @@ -302,11 +331,9 @@ export class CommonService { try { const response = await this.http.get(url, { headers: headers }).toPromise(); - return response.hasOwnProperty('nsd') ? - { + if (response.hasOwnProperty('nsd') && response[ 'platform' ].toLowerCase() === '5gtango') { + return { uuid: response[ 'uuid' ], - // duplicated - serviceID: response[ 'uuid' ], platform: response[ 'platform' ], status: response[ 'status' ], updatedAt: response[ 'updated_at' ], @@ -317,7 +344,31 @@ export class CommonService { version: response[ 'nsd' ][ 'version' ], description: response[ 'nsd' ][ 'description' ], vnf: response[ 'nsd' ][ 'network_functions' ] || [] - } : { }; + }; + } else if (response.hasOwnProperty('nsd') && response[ 'platform' ].toLowerCase() === 'osm') { + const components = response[ 'nsd' ][ 'nsd:nsd-catalog' ][ 'nsd' ][ 'constituent-vnfd' ] ? + response[ 'nsd' ][ 'nsd:nsd-catalog' ][ 'nsd' ][ 'constituent-vnfd' ].map(vnfd => ({ + vnf_id: vnfd[ 'member-vnf-index' ], + vnf_name: vnfd[ 'vnfd-id-ref' ], + vnf_vendor: '-', + vnf_version: '-' + })) : []; + return { + uuid: response[ 'uuid' ], + platform: response[ 'platform' ], + status: response[ 'status' ], + updatedAt: response[ 'updated_at' ], + createdAt: response[ 'created_at' ], + author: response[ 'nsd' ][ 'nsd:nsd-catalog' ][ 'nsd' ][ 'author' ], + name: response[ 'nsd' ][ 'nsd:nsd-catalog' ][ 'nsd' ][ 'name' ], + vendor: response[ 'nsd' ][ 'nsd:nsd-catalog' ][ 'nsd' ][ 'vendor' ], + version: response[ 'nsd' ][ 'nsd:nsd-catalog' ][ 'nsd' ][ 'version' ], + description: response[ 'nsd' ][ 'nsd:nsd-catalog' ][ 'nsd' ][ 'description' ], + vnf: components + }; + } else { + return null; + } } catch (error) { if (error.status === 401 && error.statusText === 'Unauthorized') { this.utilsService.launchUnauthorizedError(); @@ -414,6 +465,7 @@ export class CommonService { services: response[ 'nstd' ] ? response[ 'nstd' ][ 'slice_ns_subnets' ].map(item => { return { uuid: item[ 'id' ], + nsdRef: item[ 'nsd-ref' ], nsdName: item[ 'nsd-name' ], nsdVendor: item[ 'nsd-vendor' ], nsdVersion: item[ 'nsd-version' ], @@ -473,11 +525,11 @@ export class CommonService { sonataPlatforms: platforms[ 'SONATA' ] || this.unknown, osmPlatforms: platforms[ 'OSM' ] || this.unknown, onapPlatforms: platforms[ 'ONAP' ] || this.unknown, - testsExecuted: await this.getTestsNumber('executed') || this.unknown, - testsInProgress: await this.getTestsNumber('in_progress') || this.unknown, - testsWaitingForConfirmation: await this.getTestsNumber('waiting_for_confirmation') || this.unknown, - testsScheduled: await this.getTestsNumber('scheduled') || this.unknown, - testsFailed: await this.getTestsNumber('error') || this.unknown + testsCompleted: await this.getTestsNumber('COMPLETED') || this.unknown, + testsInProgress: await this.getTestsNumber('STARTING') || this.unknown, + testsWaitingForConfirmation: await this.getTestsNumber('WAITING_FOR_CONFIRMATION') || this.unknown, + testsScheduled: await this.getTestsNumber('SCHEDULED') || this.unknown, + testsFailed: await this.getTestsNumber('ERROR') || this.unknown }; } diff --git a/src/app/validation-and-verification/test-plan-list/test-plan-list.component.html b/src/app/validation-and-verification/test-plan-list/test-plan-list.component.html index e9f09b5c..eaa775b2 100644 --- a/src/app/validation-and-verification/test-plan-list/test-plan-list.component.html +++ b/src/app/validation-and-verification/test-plan-list/test-plan-list.component.html @@ -9,7 +9,7 @@

Test plans

-
Network Name {{ element.networkName }}
+
diff --git a/src/app/validation-and-verification/test-plan-list/test-plan-list.component.ts b/src/app/validation-and-verification/test-plan-list/test-plan-list.component.ts index b0958c8a..c4064d57 100644 --- a/src/app/validation-and-verification/test-plan-list/test-plan-list.component.ts +++ b/src/app/validation-and-verification/test-plan-list/test-plan-list.component.ts @@ -59,25 +59,13 @@ export class TestPlanListComponent implements OnInit { this.loading = false; if (testPlans) { - this.dataSource.data = this.sortTestPlans(testPlans); + this.dataSource.data = testPlans; this.dataSource.sort = this.sort; } else { this.utilsService.openSnackBar('Unable to fetch any test plan', ''); } } - private sortTestPlans(testPlans) { - return testPlans.sort((a) => { - const status = a.status.toUpperCase(); - - if (status !== 'COMPLETED') { - return -1; - } else { - return 1; - } - }); - } - async confirmExecution(plan) { this.loading = true; const uuid = plan.uuid; diff --git a/src/app/validation-and-verification/test-plan/test-plan.component.html b/src/app/validation-and-verification/test-plan/test-plan.component.html index e9de5d76..dd00386f 100644 --- a/src/app/validation-and-verification/test-plan/test-plan.component.html +++ b/src/app/validation-and-verification/test-plan/test-plan.component.html @@ -31,8 +31,9 @@

{{ testPlan['uuid'] }}

- - + + @@ -46,8 +47,9 @@

{{ testPlan['uuid'] }}

- - + + diff --git a/src/app/validation-and-verification/test-plan/test-plan.component.ts b/src/app/validation-and-verification/test-plan/test-plan.component.ts index 3e93b1fb..b97634af 100644 --- a/src/app/validation-and-verification/test-plan/test-plan.component.ts +++ b/src/app/validation-and-verification/test-plan/test-plan.component.ts @@ -99,6 +99,14 @@ export class TestPlanComponent implements OnInit { return JSON.stringify(json); } + openService() { + this.router.navigate([ `validation-and-verification/network-services/${ this.testPlan[ 'serviceUUID' ] }` ]); + } + + openTest() { + this.router.navigate([ `validation-and-verification/tests/${ this.testPlan[ 'testUUID' ] }` ]); + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/validation-and-verification/tests-detail/tests-detail.component.html b/src/app/validation-and-verification/tests-detail/tests-detail.component.html index 2a134182..884288a6 100644 --- a/src/app/validation-and-verification/tests-detail/tests-detail.component.html +++ b/src/app/validation-and-verification/tests-detail/tests-detail.component.html @@ -84,7 +84,7 @@

Affected network services

- +
Test name {{ element.testName }}
@@ -114,7 +114,7 @@

Test plans

- +
diff --git a/src/app/validation-and-verification/tests-detail/tests-detail.component.scss b/src/app/validation-and-verification/tests-detail/tests-detail.component.scss index a9ac0bba..791d195d 100644 --- a/src/app/validation-and-verification/tests-detail/tests-detail.component.scss +++ b/src/app/validation-and-verification/tests-detail/tests-detail.component.scss @@ -67,10 +67,6 @@ app-tests-detail { ); } } - - td.mat-cell { - cursor: auto; - } } // Styles for no instances message diff --git a/src/app/validation-and-verification/tests-detail/tests-detail.component.ts b/src/app/validation-and-verification/tests-detail/tests-detail.component.ts index ce737e8b..3afa6d38 100644 --- a/src/app/validation-and-verification/tests-detail/tests-detail.component.ts +++ b/src/app/validation-and-verification/tests-detail/tests-detail.component.ts @@ -93,6 +93,14 @@ export class TestsDetailComponent implements OnInit { this.utilsService.copyToClipboard(value); } + openRow(section, row) { + if (section === 'service') { + this.router.navigate([ `validation-and-verification/network-services/${ row.uuid }` ]); + } else if (section === 'testPlan') { + this.router.navigate([ `validation-and-verification/test-plans/${ row.uuid }` ]); + } + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/app/validation-and-verification/validation-and-verification.service.ts b/src/app/validation-and-verification/validation-and-verification.service.ts index 3699a5a9..0ae92bd6 100644 --- a/src/app/validation-and-verification/validation-and-verification.service.ts +++ b/src/app/validation-and-verification/validation-and-verification.service.ts @@ -97,14 +97,31 @@ export class ValidationAndVerificationPlatformService { try { const response = await this.http.get(url, { headers: headers }).toPromise(); - return response instanceof Array ? - response.map(item => { - return { - vendor: item.nsd.vendor, - name: item.nsd.name, - version: item.nsd.version - }; - }) : []; + if (response instanceof Array) { + const tango = response.filter(ns => ns.platform.toLowerCase() === '5gtango') + .map(item => { + return { + uuid: item.uuid, + vendor: item.nsd.vendor, + name: item.nsd.name, + version: item.nsd.version + }; + }); + + const osm = response.filter(ns => ns.platform.toLowerCase() === 'osm') + .map(item => { + return { + uuid: item.uuid, + vendor: item.nsd[ 'nsd:nsd-catalog' ][ 'nsd' ].vendor, + name: item.nsd[ 'nsd:nsd-catalog' ][ 'nsd' ].name, + version: item.nsd[ 'nsd:nsd-catalog' ][ 'nsd' ].version + }; + }); + + return tango.concat(osm); + } + + return []; } catch (error) { if (error.status === 401 && error.statusText === 'Unauthorized') { this.utilsService.launchUnauthorizedError(); diff --git a/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.html b/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.html index 5d3c88fb..3c12f24d 100644 --- a/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.html +++ b/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.html @@ -19,6 +19,14 @@

{{ detail['name'] }}

+ + + + + @@ -58,7 +66,7 @@

Network services

- +
@@ -69,7 +77,7 @@

VNFs

There are no virtual network functions to display - +
@@ -114,7 +122,7 @@

Tests

- +
Vendor {{ element.vendor }}
diff --git a/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.scss b/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.scss index 6cdc69b9..3dd77640 100644 --- a/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.scss +++ b/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.scss @@ -18,6 +18,11 @@ app-vnv-packages-detail { form { width: 55vw; margin-bottom: 5vh; + + .left-column { + width: 25vw; + margin-right: 40px; + } } .vnf, @@ -33,26 +38,24 @@ app-vnv-packages-detail { table { width: 95%; - } - tr.mat-row { - background-image: linear-gradient( - to right, - $basic-background-color 0%, - $table-underline-color 0%, - $table-underline-color 100%, - $basic-background-color 100%, - $basic-background-color 100% - ); - } - - td.mat-cell { - cursor: auto; - } + &.no-opening-table td.mat-cell { + cursor: auto; + } - .mat-cell:nth-child(1), - .mat-header-cell:nth-child(1) { - width: 30%; + tr.mat-row { + background-image: linear-gradient( + to right, + $basic-background-color 0%, + $table-underline-color 0%, + $table-underline-color 100%, + $basic-background-color 100%, + $basic-background-color 100% + ); + } + .mat-cell:nth-child(1), + .mat-header-cell:nth-child(1) { + width: 30%; + } } - } diff --git a/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.ts b/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.ts index ad8f6d39..d28cc239 100644 --- a/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.ts +++ b/src/app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.ts @@ -60,6 +60,18 @@ export class VnvPackagesDetailComponent implements OnInit { return this.detail[ 'tests' ] && this.detail[ 'tests' ].length; } + copyToClipboard(value) { + this.utilsService.copyToClipboard(value); + } + + openRow(section, row) { + if (section === 'service') { + this.router.navigate([ `validation-and-verification/network-services/${ row.uuid }` ]); + } else if (section === 'test') { + this.router.navigate([ `validation-and-verification/tests/${ row.uuid }` ]); + } + } + close() { this.router.navigate([ '../' ], { relativeTo: this.route }); } diff --git a/src/locale/messages.en.xlf b/src/locale/messages.en.xlf index 9c1a05fc..c16aca24 100644 --- a/src/locale/messages.en.xlf +++ b/src/locale/messages.en.xlf @@ -186,11 +186,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 41 + 49 app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 69 + 77 app/service-platform/sp-network-services/sp-network-services.component.html @@ -198,7 +198,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 56 + 64 app/service-platform/runtime-policy-list/runtime-policy-list.component.html @@ -293,11 +293,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 46 + 54 app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 74 + 82 app/service-platform/sp-network-services/sp-network-services.component.html @@ -305,7 +305,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 61 + 69 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -428,11 +428,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 51 + 59 app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 79 + 87 app/service-platform/sp-network-services/sp-network-services.component.html @@ -444,7 +444,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 66 + 74 app/service-platform/sp-functions-detail/sp-functions-detail.component.html @@ -636,6 +636,10 @@ app/service-platform/sp-network-services/sp-network-services.component.html 38 + + app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html + 84 + app/service-platform/runtime-policy-list/runtime-policy-list.component.html 80 @@ -1289,7 +1293,7 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 33 + 41 app/service-platform/sp-network-services/sp-network-services.component.html @@ -1683,8 +1687,8 @@ 169 - - ExecutedExecuted + + CompletedCompleted app/dashboard/dashboard.component.html 172 @@ -2202,15 +2206,15 @@ app/validation-and-verification/test-plan/test-plan.component.html - 43 + 44 app/validation-and-verification/test-plan/test-plan.component.html - 118 + 120 app/validation-and-verification/test-plan/test-plan.component.html - 132 + 134 app/validation-and-verification/tests-detail/tests-detail.component.html @@ -2220,6 +2224,18 @@ app/validation-and-verification/vnv-network-services-detail/vnv-network-services-detail.component.html 24 + + app/service-platform/sp-packages-detail/sp-packages-detail.component.html + 24 + + + app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html + 24 + + + app/service-platform/sp-functions-detail/sp-functions-detail.component.html + 24 + app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html 26 @@ -2551,7 +2567,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 66 + 68 app/validation-and-verification/tests/tests.component.html @@ -2574,7 +2590,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 80 + 82 @@ -2585,7 +2601,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 73 + 75 @@ -2596,7 +2612,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 85 + 87 @@ -2635,7 +2651,7 @@ Service IDService ID app/validation-and-verification/test-plan/test-plan.component.html - 41 + 42 app/validation-and-verification/vnv-network-services-detail/vnv-network-services-detail.component.html @@ -2643,7 +2659,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 26 + 23 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -2666,18 +2682,18 @@ ServiceService app/validation-and-verification/test-plan/test-plan.component.html - 50 + 51 StatusStatus app/validation-and-verification/test-plan/test-plan.component.html - 55 + 57 app/validation-and-verification/test-plan/test-plan.component.html - 98 + 100 app/validation-and-verification/tests-detail/tests-detail.component.html @@ -2693,11 +2709,11 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 29 + 35 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 31 + 39 app/service-platform/sla-agreement-detail/sla-agreement-detail.component.html @@ -2721,7 +2737,7 @@ app/service-management/request-detail/request-detail.component.html - 52 + 53 app/service-management/ns-instance-detail/ns-instance-detail.component.html @@ -2736,7 +2752,7 @@ Updated atUpdated at app/validation-and-verification/test-plan/test-plan.component.html - 60 + 62 app/validation-and-verification/vnv-network-services-detail/vnv-network-services-detail.component.html @@ -2748,15 +2764,15 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 27 + 35 app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 35 + 43 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 35 + 43 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -2776,7 +2792,7 @@ app/service-management/request-detail/request-detail.component.html - 67 + 68 app/service-management/ns-instance-detail/ns-instance-detail.component.html @@ -2787,53 +2803,53 @@ Confirm the test plan as requiredConfirm the test plan as required app/validation-and-verification/test-plan/test-plan.component.html - 69 + 71 Cancel the execution of the test planCancel the execution of the test plan app/validation-and-verification/test-plan/test-plan.component.html - 76 + 78 Confirm or cancel the execution of the test planConfirm or cancel the execution of the test plan app/validation-and-verification/test-plan/test-plan.component.html - 90 + 92 ResultsResults app/validation-and-verification/test-plan/test-plan.component.html - 95 + 97 app/validation-and-verification/test-plan/test-plan.component.html - 131 + 133 Started atStarted at app/validation-and-verification/test-plan/test-plan.component.html - 104 + 106 Ended atEnded at app/validation-and-verification/test-plan/test-plan.component.html - 109 + 111 DetailsDetails app/validation-and-verification/test-plan/test-plan.component.html - 117 + 119 @@ -2905,11 +2921,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 23 + 31 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 23 + 31 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -2967,7 +2983,7 @@ app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 40 + 48 app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.html @@ -3023,11 +3039,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 61 + 69 app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 46 + 55 app/service-management/sm-network-services-detail/sm-network-services-detail.component.html @@ -3048,10 +3064,6 @@ app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.html 68 - - app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 47 - IDID @@ -3061,7 +3073,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 51 + 59 app/service-management/sm-network-services-detail/sm-network-services-detail.component.html @@ -3088,7 +3100,7 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 35 + 43 @@ -3117,6 +3129,13 @@ 28 + + Package IDPackage ID + + app/service-platform/sp-packages-detail/sp-packages-detail.component.html + 23 + + There are no virtual network functions to display @@ -3125,32 +3144,39 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 63 + 71 TypeType app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 32 + 39 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 27 + 35 app/service-management/request-detail/request-detail.component.html - 57 + 58 DescriptionDescription app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 39 + 48 description + + Function idFunction id + + app/service-platform/sp-functions-detail/sp-functions-detail.component.html + 23 + + Select a policySelect a policy @@ -3297,7 +3323,7 @@ app/service-management/request-detail/request-detail.component.html - 45 + 46 app/service-management/ns-instance-detail/ns-instance-detail.component.html @@ -4469,7 +4495,7 @@ SLA IDSLA ID app/service-management/request-detail/request-detail.component.html - 63 + 64 app/service-management/license-detail/license-detail.component.html @@ -4480,7 +4506,7 @@ ErrorError app/service-management/request-detail/request-detail.component.html - 72 + 73 diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf index 013aceb5..8c43a9cd 100644 --- a/src/locale/messages.xlf +++ b/src/locale/messages.xlf @@ -186,11 +186,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 41 + 49 app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 69 + 77 app/service-platform/sp-network-services/sp-network-services.component.html @@ -198,7 +198,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 56 + 64 app/service-platform/runtime-policy-list/runtime-policy-list.component.html @@ -293,11 +293,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 46 + 54 app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 74 + 82 app/service-platform/sp-network-services/sp-network-services.component.html @@ -305,7 +305,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 61 + 69 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -428,11 +428,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 51 + 59 app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 79 + 87 app/service-platform/sp-network-services/sp-network-services.component.html @@ -444,7 +444,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 66 + 74 app/service-platform/sp-functions-detail/sp-functions-detail.component.html @@ -636,6 +636,10 @@ app/service-platform/sp-network-services/sp-network-services.component.html 38 + + app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html + 84 + app/service-platform/runtime-policy-list/runtime-policy-list.component.html 80 @@ -1250,7 +1254,7 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 33 + 41 app/service-platform/sp-network-services/sp-network-services.component.html @@ -1616,8 +1620,8 @@ 169 - - Executed + + Completed app/dashboard/dashboard.component.html 172 @@ -2133,15 +2137,15 @@ app/validation-and-verification/test-plan/test-plan.component.html - 43 + 44 app/validation-and-verification/test-plan/test-plan.component.html - 118 + 120 app/validation-and-verification/test-plan/test-plan.component.html - 132 + 134 app/validation-and-verification/tests-detail/tests-detail.component.html @@ -2151,6 +2155,18 @@ app/validation-and-verification/vnv-network-services-detail/vnv-network-services-detail.component.html 24 + + app/service-platform/sp-packages-detail/sp-packages-detail.component.html + 24 + + + app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html + 24 + + + app/service-platform/sp-functions-detail/sp-functions-detail.component.html + 24 + app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html 26 @@ -2481,7 +2497,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 66 + 68 app/validation-and-verification/tests/tests.component.html @@ -2504,7 +2520,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 80 + 82 @@ -2515,7 +2531,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 73 + 75 @@ -2526,7 +2542,7 @@ app/validation-and-verification/test-plan/test-plan.component.html - 85 + 87 @@ -2565,7 +2581,7 @@ Service ID app/validation-and-verification/test-plan/test-plan.component.html - 41 + 42 app/validation-and-verification/vnv-network-services-detail/vnv-network-services-detail.component.html @@ -2573,7 +2589,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 26 + 23 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -2596,18 +2612,18 @@ Service app/validation-and-verification/test-plan/test-plan.component.html - 50 + 51 Status app/validation-and-verification/test-plan/test-plan.component.html - 55 + 57 app/validation-and-verification/test-plan/test-plan.component.html - 98 + 100 app/validation-and-verification/tests-detail/tests-detail.component.html @@ -2623,11 +2639,11 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 29 + 35 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 31 + 39 app/service-platform/sla-agreement-detail/sla-agreement-detail.component.html @@ -2651,7 +2667,7 @@ app/service-management/request-detail/request-detail.component.html - 52 + 53 app/service-management/ns-instance-detail/ns-instance-detail.component.html @@ -2666,7 +2682,7 @@ Updated at app/validation-and-verification/test-plan/test-plan.component.html - 60 + 62 app/validation-and-verification/vnv-network-services-detail/vnv-network-services-detail.component.html @@ -2678,15 +2694,15 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 27 + 35 app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 35 + 43 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 35 + 43 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -2706,7 +2722,7 @@ app/service-management/request-detail/request-detail.component.html - 67 + 68 app/service-management/ns-instance-detail/ns-instance-detail.component.html @@ -2717,53 +2733,53 @@ Confirm the test plan as required app/validation-and-verification/test-plan/test-plan.component.html - 69 + 71 Cancel the execution of the test plan app/validation-and-verification/test-plan/test-plan.component.html - 76 + 78 Confirm or cancel the execution of the test plan app/validation-and-verification/test-plan/test-plan.component.html - 90 + 92 Results app/validation-and-verification/test-plan/test-plan.component.html - 95 + 97 app/validation-and-verification/test-plan/test-plan.component.html - 131 + 133 Started at app/validation-and-verification/test-plan/test-plan.component.html - 104 + 106 Ended at app/validation-and-verification/test-plan/test-plan.component.html - 109 + 111 Details app/validation-and-verification/test-plan/test-plan.component.html - 117 + 119 @@ -2835,11 +2851,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 23 + 31 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 23 + 31 app/service-platform/runtime-policy-detail/runtime-policy-detail.component.html @@ -2897,7 +2913,7 @@ app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 40 + 48 app/service-platform/sp-slice-template-detail/sp-slice-template-detail.component.html @@ -2953,11 +2969,11 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 61 + 69 app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 46 + 55 app/service-management/sm-network-services-detail/sm-network-services-detail.component.html @@ -2976,10 +2992,6 @@ app/validation-and-verification/vnv-packages-detail/vnv-packages-detail.component.html 68 - - app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 47 - ID @@ -2989,7 +3001,7 @@ app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 51 + 59 app/service-management/sm-network-services-detail/sm-network-services-detail.component.html @@ -3014,7 +3026,7 @@ app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 35 + 43 @@ -3041,38 +3053,52 @@ 28 + + Package ID + + app/service-platform/sp-packages-detail/sp-packages-detail.component.html + 23 + + There are no virtual network functions to display app/service-platform/sp-packages-detail/sp-packages-detail.component.html - 63 + 71 Type app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 32 + 39 app/service-platform/sp-functions-detail/sp-functions-detail.component.html - 27 + 35 app/service-management/request-detail/request-detail.component.html - 57 + 58 Description app/service-platform/sp-network-services-detail/sp-network-services-detail.component.html - 39 + 48 description + + Function id + + app/service-platform/sp-functions-detail/sp-functions-detail.component.html + 23 + + Select a policy @@ -3217,7 +3243,7 @@ app/service-management/request-detail/request-detail.component.html - 45 + 46 app/service-management/ns-instance-detail/ns-instance-detail.component.html @@ -4379,7 +4405,7 @@ SLA ID app/service-management/request-detail/request-detail.component.html - 63 + 64 app/service-management/license-detail/license-detail.component.html @@ -4390,7 +4416,7 @@ Error app/service-management/request-detail/request-detail.component.html - 72 + 73